+
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
-@@ -119,6 +119,129 @@
+@@ -119,6 +119,129 @@ config EQUALIZER
To compile this driver as a module, choose M here: the module
will be called eql. If unsure, say N.
select CRC32
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
-@@ -152,6 +152,7 @@
+@@ -152,6 +152,7 @@ obj-$(CONFIG_SLHC) += slhc.o
obj-$(CONFIG_XEN_NETDEV_FRONTEND) += xen-netfront.o
obj-$(CONFIG_DUMMY) += dummy.o
/* Don't change this without changing skb_csum_unnecessary! */
#define CHECKSUM_NONE 0
-@@ -333,6 +336,9 @@
+@@ -333,6 +336,9 @@ struct sk_buff {
* first. This is owned by whoever has the skb queued ATM.
*/
char cb[48];
unsigned int len,
data_len;
-@@ -363,6 +369,9 @@
+@@ -363,6 +369,9 @@ struct sk_buff {
struct nf_conntrack *nfct;
struct sk_buff *nfct_reasm;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge;
#endif
-@@ -383,6 +392,9 @@
+@@ -383,6 +392,9 @@ struct sk_buff {
__u8 requeue:1;
#endif
/* 0/13/14 bit hole */
#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
-@@ -423,6 +435,12 @@
+@@ -423,6 +435,12 @@ extern void skb_dma_unmap(struct device
enum dma_data_direction dir);
#endif
extern void kfree_skb(struct sk_buff *skb);
extern void consume_skb(struct sk_buff *skb);
extern void __kfree_skb(struct sk_buff *skb);
-@@ -1931,6 +1949,10 @@
+@@ -1931,6 +1949,10 @@ static inline void __nf_copy(struct sk_b
dst->nfct_reasm = src->nfct_reasm;
nf_conntrack_get_reasm(src->nfct_reasm);
#endif
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/stat.h>
-@@ -1678,7 +1681,11 @@
+@@ -1678,7 +1681,11 @@ int dev_hard_start_xmit(struct sk_buff *
int rc;
if (likely(!skb->next)) {
dev_queue_xmit_nit(skb, dev);
if (netif_needs_gso(dev, skb)) {
-@@ -1748,8 +1755,7 @@
+@@ -1749,8 +1756,7 @@ u16 skb_tx_hash(const struct net_device
}
EXPORT_SYMBOL(skb_tx_hash);
{
const struct net_device_ops *ops = dev->netdev_ops;
u16 queue_index = 0;
-@@ -1762,6 +1768,7 @@
+@@ -1763,6 +1769,7 @@ static struct netdev_queue *dev_pick_tx(
skb_set_queue_mapping(skb, queue_index);
return netdev_get_tx_queue(dev, queue_index);
}
* dev_queue_xmit - transmit a buffer
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
-@@ -1102,6 +1102,7 @@
+@@ -1102,6 +1102,7 @@ extern int dev_alloc_name(struct net_de
extern int dev_open(struct net_device *dev);
extern int dev_close(struct net_device *dev);
extern void dev_disable_lro(struct net_device *dev);
+
--- a/include/net/netfilter/nf_queue.h
+++ b/include/net/netfilter/nf_queue.h
-@@ -13,6 +13,12 @@
+@@ -13,6 +13,12 @@ struct nf_queue_entry {
struct net_device *indev;
struct net_device *outdev;
int (*okfn)(struct sk_buff *);
};
#define nf_queue_entry_reroute(x) ((void *)x + sizeof(struct nf_queue_entry))
-@@ -30,5 +36,11 @@
+@@ -30,5 +36,11 @@ extern int nf_unregister_queue_handler(u
const struct nf_queue_handler *qh);
extern void nf_unregister_queue_handlers(const struct nf_queue_handler *qh);
extern void nf_reinject(struct nf_queue_entry *entry, unsigned int verdict);
static void sock_pipe_buf_release(struct pipe_inode_info *pipe,
struct pipe_buffer *buf)
-@@ -90,6 +93,80 @@
+@@ -90,6 +93,80 @@ static int sock_pipe_buf_steal(struct pi
return 1;
}
/* Pipe buffer operations for a socket. */
static struct pipe_buf_operations sock_pipe_buf_ops = {
-@@ -389,6 +466,15 @@
+@@ -389,6 +466,15 @@ static void skb_release_head_state(struc
WARN_ON(in_irq());
skb->destructor(skb);
}
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
nf_conntrack_put(skb->nfct);
nf_conntrack_put_reasm(skb->nfct_reasm);
-@@ -524,6 +610,9 @@
+@@ -524,6 +610,9 @@ static void __copy_skb_header(struct sk_
new->sp = secpath_get(old->sp);
#endif
memcpy(new->cb, old->cb, sizeof(old->cb));
new->csum_start = old->csum_start;
new->csum_offset = old->csum_offset;
new->local_df = old->local_df;
-@@ -2766,6 +2855,13 @@
+@@ -2767,6 +2856,13 @@ void __init skb_init(void)
0,
SLAB_HWCACHE_ALIGN|SLAB_PANIC,
NULL);
/**
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
-@@ -396,6 +396,18 @@
+@@ -396,6 +396,18 @@ config NETFILTER_XT_TARGET_LED
For more information on the LEDs available on your system, see
Documentation/leds-class.txt
default m if NETFILTER_ADVANCED=n
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
-@@ -46,6 +46,7 @@
+@@ -46,6 +46,7 @@ obj-$(CONFIG_NETFILTER_XT_TARGET_CONNMAR
obj-$(CONFIG_NETFILTER_XT_TARGET_CONNSECMARK) += xt_CONNSECMARK.o
obj-$(CONFIG_NETFILTER_XT_TARGET_DSCP) += xt_DSCP.o
obj-$(CONFIG_NETFILTER_XT_TARGET_HL) += xt_HL.o
obj-$(CONFIG_NETFILTER_XT_TARGET_NFLOG) += xt_NFLOG.o
--- a/net/netfilter/nf_queue.c
+++ b/net/netfilter/nf_queue.c
-@@ -20,6 +20,26 @@
+@@ -20,6 +20,26 @@ static const struct nf_queue_handler *qu
static DEFINE_MUTEX(queue_handler_mutex);
/* return EBUSY when somebody else is registered, return EEXIST if the
* same handler is registered, return 0 in case of success. */
int nf_register_queue_handler(u_int8_t pf, const struct nf_queue_handler *qh)
-@@ -80,7 +100,7 @@
+@@ -80,7 +100,7 @@ void nf_unregister_queue_handlers(const
}
EXPORT_SYMBOL_GPL(nf_unregister_queue_handlers);
{
/* Release those devices we held, or Alexey will kill me. */
if (entry->indev)
-@@ -100,6 +120,7 @@
+@@ -100,6 +120,7 @@ static void nf_queue_entry_release_refs(
/* Drop reference to owner of hook which queued us. */
module_put(entry->elem->owner);
}
/*
* Any packet that leaves via this function must come back
-@@ -121,12 +142,26 @@
+@@ -121,12 +142,26 @@ static int __nf_queue(struct sk_buff *sk
#endif
const struct nf_afinfo *afinfo;
const struct nf_queue_handler *qh;
goto err_unlock;
afinfo = nf_get_afinfo(pf);
-@@ -145,6 +180,10 @@
+@@ -145,6 +180,10 @@ static int __nf_queue(struct sk_buff *sk
.indev = indev,
.outdev = outdev,
.okfn = okfn,
};
/* If it's going away, ignore hook. */
-@@ -170,8 +209,19 @@
+@@ -170,8 +209,19 @@ static int __nf_queue(struct sk_buff *sk
}
#endif
afinfo->saveroute(skb, entry);
--- a/mm/shmem.c
+++ b/mm/shmem.c
-@@ -2602,6 +2602,16 @@ int shmem_unuse(swp_entry_t entry, struc
+@@ -2606,6 +2606,16 @@ int shmem_unuse(swp_entry_t entry, struc
/* common code */
/**
* shmem_file_setup - get an unlinked file living in tmpfs
* @name: name for dentry (to be seen in /proc/<pid>/maps
-@@ -2680,11 +2690,7 @@ int shmem_zero_setup(struct vm_area_stru
+@@ -2684,11 +2694,7 @@ int shmem_zero_setup(struct vm_area_stru
if (IS_ERR(file))
return PTR_ERR(file);
/**
* zap_vma_ptes - remove ptes mapping the vma
-@@ -2405,6 +2406,7 @@ int vmtruncate_range(struct inode *inode
+@@ -2438,6 +2439,7 @@ int vmtruncate_range(struct inode *inode
return 0;
}
* We enter with non-exclusive mmap_sem (to exclude vma changes,
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
-@@ -1100,6 +1100,7 @@ void unmap_kernel_range(unsigned long ad
+@@ -1101,6 +1101,7 @@ void unmap_kernel_range(unsigned long ad
vunmap_page_range(addr, end);
flush_tlb_kernel_range(addr, end);
}
int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages)
{
-@@ -1213,6 +1214,7 @@ struct vm_struct *get_vm_area(unsigned l
+@@ -1214,6 +1215,7 @@ struct vm_struct *get_vm_area(unsigned l
return __get_vm_area_node(size, flags, VMALLOC_START, VMALLOC_END,
-1, GFP_KERNEL, __builtin_return_address(0));
}