diff options
Diffstat (limited to 'net')
44 files changed, 167 insertions, 104 deletions
diff --git a/net/bridge/br_fdb.c b/net/bridge/br_fdb.c index d9f04864d15d..8ca448db7a0d 100644 --- a/net/bridge/br_fdb.c +++ b/net/bridge/br_fdb.c | |||
@@ -23,7 +23,7 @@ | |||
23 | #include <asm/atomic.h> | 23 | #include <asm/atomic.h> |
24 | #include "br_private.h" | 24 | #include "br_private.h" |
25 | 25 | ||
26 | static kmem_cache_t *br_fdb_cache __read_mostly; | 26 | static struct kmem_cache *br_fdb_cache __read_mostly; |
27 | static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, | 27 | static int fdb_insert(struct net_bridge *br, struct net_bridge_port *source, |
28 | const unsigned char *addr); | 28 | const unsigned char *addr); |
29 | 29 | ||
diff --git a/net/core/dev.c b/net/core/dev.c index 59d058a3b504..e660cb57e42a 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
@@ -3340,7 +3340,6 @@ void unregister_netdev(struct net_device *dev) | |||
3340 | 3340 | ||
3341 | EXPORT_SYMBOL(unregister_netdev); | 3341 | EXPORT_SYMBOL(unregister_netdev); |
3342 | 3342 | ||
3343 | #ifdef CONFIG_HOTPLUG_CPU | ||
3344 | static int dev_cpu_callback(struct notifier_block *nfb, | 3343 | static int dev_cpu_callback(struct notifier_block *nfb, |
3345 | unsigned long action, | 3344 | unsigned long action, |
3346 | void *ocpu) | 3345 | void *ocpu) |
@@ -3384,7 +3383,6 @@ static int dev_cpu_callback(struct notifier_block *nfb, | |||
3384 | 3383 | ||
3385 | return NOTIFY_OK; | 3384 | return NOTIFY_OK; |
3386 | } | 3385 | } |
3387 | #endif /* CONFIG_HOTPLUG_CPU */ | ||
3388 | 3386 | ||
3389 | #ifdef CONFIG_NET_DMA | 3387 | #ifdef CONFIG_NET_DMA |
3390 | /** | 3388 | /** |
diff --git a/net/core/dst.c b/net/core/dst.c index 1a5e49da0e77..836ec6606925 100644 --- a/net/core/dst.c +++ b/net/core/dst.c | |||
@@ -125,7 +125,7 @@ void * dst_alloc(struct dst_ops * ops) | |||
125 | if (ops->gc()) | 125 | if (ops->gc()) |
126 | return NULL; | 126 | return NULL; |
127 | } | 127 | } |
128 | dst = kmem_cache_alloc(ops->kmem_cachep, SLAB_ATOMIC); | 128 | dst = kmem_cache_alloc(ops->kmem_cachep, GFP_ATOMIC); |
129 | if (!dst) | 129 | if (!dst) |
130 | return NULL; | 130 | return NULL; |
131 | memset(dst, 0, ops->entry_size); | 131 | memset(dst, 0, ops->entry_size); |
diff --git a/net/core/flow.c b/net/core/flow.c index b16d31ae5e54..d137f971f97d 100644 --- a/net/core/flow.c +++ b/net/core/flow.c | |||
@@ -44,7 +44,7 @@ static DEFINE_PER_CPU(struct flow_cache_entry **, flow_tables) = { NULL }; | |||
44 | 44 | ||
45 | #define flow_table(cpu) (per_cpu(flow_tables, cpu)) | 45 | #define flow_table(cpu) (per_cpu(flow_tables, cpu)) |
46 | 46 | ||
47 | static kmem_cache_t *flow_cachep __read_mostly; | 47 | static struct kmem_cache *flow_cachep __read_mostly; |
48 | 48 | ||
49 | static int flow_lwm, flow_hwm; | 49 | static int flow_lwm, flow_hwm; |
50 | 50 | ||
@@ -211,7 +211,7 @@ void *flow_cache_lookup(struct flowi *key, u16 family, u8 dir, | |||
211 | if (flow_count(cpu) > flow_hwm) | 211 | if (flow_count(cpu) > flow_hwm) |
212 | flow_cache_shrink(cpu); | 212 | flow_cache_shrink(cpu); |
213 | 213 | ||
214 | fle = kmem_cache_alloc(flow_cachep, SLAB_ATOMIC); | 214 | fle = kmem_cache_alloc(flow_cachep, GFP_ATOMIC); |
215 | if (fle) { | 215 | if (fle) { |
216 | fle->next = *head; | 216 | fle->next = *head; |
217 | *head = fle; | 217 | *head = fle; |
@@ -340,7 +340,6 @@ static void __devinit flow_cache_cpu_prepare(int cpu) | |||
340 | tasklet_init(tasklet, flow_cache_flush_tasklet, 0); | 340 | tasklet_init(tasklet, flow_cache_flush_tasklet, 0); |
341 | } | 341 | } |
342 | 342 | ||
343 | #ifdef CONFIG_HOTPLUG_CPU | ||
344 | static int flow_cache_cpu(struct notifier_block *nfb, | 343 | static int flow_cache_cpu(struct notifier_block *nfb, |
345 | unsigned long action, | 344 | unsigned long action, |
346 | void *hcpu) | 345 | void *hcpu) |
@@ -349,7 +348,6 @@ static int flow_cache_cpu(struct notifier_block *nfb, | |||
349 | __flow_cache_shrink((unsigned long)hcpu, 0); | 348 | __flow_cache_shrink((unsigned long)hcpu, 0); |
350 | return NOTIFY_OK; | 349 | return NOTIFY_OK; |
351 | } | 350 | } |
352 | #endif /* CONFIG_HOTPLUG_CPU */ | ||
353 | 351 | ||
354 | static int __init flow_cache_init(void) | 352 | static int __init flow_cache_init(void) |
355 | { | 353 | { |
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index ba509a4a8e92..0ab1987b9348 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c | |||
@@ -251,7 +251,7 @@ static struct neighbour *neigh_alloc(struct neigh_table *tbl) | |||
251 | goto out_entries; | 251 | goto out_entries; |
252 | } | 252 | } |
253 | 253 | ||
254 | n = kmem_cache_alloc(tbl->kmem_cachep, SLAB_ATOMIC); | 254 | n = kmem_cache_alloc(tbl->kmem_cachep, GFP_ATOMIC); |
255 | if (!n) | 255 | if (!n) |
256 | goto out_entries; | 256 | goto out_entries; |
257 | 257 | ||
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 8e1c385e5ba9..de7801d589e7 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -68,8 +68,8 @@ | |||
68 | 68 | ||
69 | #include "kmap_skb.h" | 69 | #include "kmap_skb.h" |
70 | 70 | ||
71 | static kmem_cache_t *skbuff_head_cache __read_mostly; | 71 | static struct kmem_cache *skbuff_head_cache __read_mostly; |
72 | static kmem_cache_t *skbuff_fclone_cache __read_mostly; | 72 | static struct kmem_cache *skbuff_fclone_cache __read_mostly; |
73 | 73 | ||
74 | /* | 74 | /* |
75 | * Keep out-of-line to prevent kernel bloat. | 75 | * Keep out-of-line to prevent kernel bloat. |
@@ -132,6 +132,7 @@ EXPORT_SYMBOL(skb_truesize_bug); | |||
132 | * @gfp_mask: allocation mask | 132 | * @gfp_mask: allocation mask |
133 | * @fclone: allocate from fclone cache instead of head cache | 133 | * @fclone: allocate from fclone cache instead of head cache |
134 | * and allocate a cloned (child) skb | 134 | * and allocate a cloned (child) skb |
135 | * @node: numa node to allocate memory on | ||
135 | * | 136 | * |
136 | * Allocate a new &sk_buff. The returned buffer has no headroom and a | 137 | * Allocate a new &sk_buff. The returned buffer has no headroom and a |
137 | * tail room of size bytes. The object has a reference count of one. | 138 | * tail room of size bytes. The object has a reference count of one. |
@@ -141,9 +142,9 @@ EXPORT_SYMBOL(skb_truesize_bug); | |||
141 | * %GFP_ATOMIC. | 142 | * %GFP_ATOMIC. |
142 | */ | 143 | */ |
143 | struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | 144 | struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, |
144 | int fclone) | 145 | int fclone, int node) |
145 | { | 146 | { |
146 | kmem_cache_t *cache; | 147 | struct kmem_cache *cache; |
147 | struct skb_shared_info *shinfo; | 148 | struct skb_shared_info *shinfo; |
148 | struct sk_buff *skb; | 149 | struct sk_buff *skb; |
149 | u8 *data; | 150 | u8 *data; |
@@ -151,14 +152,14 @@ struct sk_buff *__alloc_skb(unsigned int size, gfp_t gfp_mask, | |||
151 | cache = fclone ? skbuff_fclone_cache : skbuff_head_cache; | 152 | cache = fclone ? skbuff_fclone_cache : skbuff_head_cache; |
152 | 153 | ||
153 | /* Get the HEAD */ | 154 | /* Get the HEAD */ |
154 | skb = kmem_cache_alloc(cache, gfp_mask & ~__GFP_DMA); | 155 | skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node); |
155 | if (!skb) | 156 | if (!skb) |
156 | goto out; | 157 | goto out; |
157 | 158 | ||
158 | /* Get the DATA. Size must match skb_add_mtu(). */ | 159 | /* Get the DATA. Size must match skb_add_mtu(). */ |
159 | size = SKB_DATA_ALIGN(size); | 160 | size = SKB_DATA_ALIGN(size); |
160 | data = kmalloc_track_caller(size + sizeof(struct skb_shared_info), | 161 | data = kmalloc_node_track_caller(size + sizeof(struct skb_shared_info), |
161 | gfp_mask); | 162 | gfp_mask, node); |
162 | if (!data) | 163 | if (!data) |
163 | goto nodata; | 164 | goto nodata; |
164 | 165 | ||
@@ -210,7 +211,7 @@ nodata: | |||
210 | * Buffers may only be allocated from interrupts using a @gfp_mask of | 211 | * Buffers may only be allocated from interrupts using a @gfp_mask of |
211 | * %GFP_ATOMIC. | 212 | * %GFP_ATOMIC. |
212 | */ | 213 | */ |
213 | struct sk_buff *alloc_skb_from_cache(kmem_cache_t *cp, | 214 | struct sk_buff *alloc_skb_from_cache(struct kmem_cache *cp, |
214 | unsigned int size, | 215 | unsigned int size, |
215 | gfp_t gfp_mask) | 216 | gfp_t gfp_mask) |
216 | { | 217 | { |
@@ -267,9 +268,10 @@ nodata: | |||
267 | struct sk_buff *__netdev_alloc_skb(struct net_device *dev, | 268 | struct sk_buff *__netdev_alloc_skb(struct net_device *dev, |
268 | unsigned int length, gfp_t gfp_mask) | 269 | unsigned int length, gfp_t gfp_mask) |
269 | { | 270 | { |
271 | int node = dev->class_dev.dev ? dev_to_node(dev->class_dev.dev) : -1; | ||
270 | struct sk_buff *skb; | 272 | struct sk_buff *skb; |
271 | 273 | ||
272 | skb = alloc_skb(length + NET_SKB_PAD, gfp_mask); | 274 | skb = __alloc_skb(length + NET_SKB_PAD, gfp_mask, 0, node); |
273 | if (likely(skb)) { | 275 | if (likely(skb)) { |
274 | skb_reserve(skb, NET_SKB_PAD); | 276 | skb_reserve(skb, NET_SKB_PAD); |
275 | skb->dev = dev; | 277 | skb->dev = dev; |
diff --git a/net/core/sock.c b/net/core/sock.c index 419c7d3289c7..0ed5b4f0bc40 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -810,24 +810,11 @@ lenout: | |||
810 | */ | 810 | */ |
811 | static void inline sock_lock_init(struct sock *sk) | 811 | static void inline sock_lock_init(struct sock *sk) |
812 | { | 812 | { |
813 | spin_lock_init(&sk->sk_lock.slock); | 813 | sock_lock_init_class_and_name(sk, |
814 | sk->sk_lock.owner = NULL; | 814 | af_family_slock_key_strings[sk->sk_family], |
815 | init_waitqueue_head(&sk->sk_lock.wq); | 815 | af_family_slock_keys + sk->sk_family, |
816 | /* | 816 | af_family_key_strings[sk->sk_family], |
817 | * Make sure we are not reinitializing a held lock: | 817 | af_family_keys + sk->sk_family); |
818 | */ | ||
819 | debug_check_no_locks_freed((void *)&sk->sk_lock, sizeof(sk->sk_lock)); | ||
820 | |||
821 | /* | ||
822 | * Mark both the sk_lock and the sk_lock.slock as a | ||
823 | * per-address-family lock class: | ||
824 | */ | ||
825 | lockdep_set_class_and_name(&sk->sk_lock.slock, | ||
826 | af_family_slock_keys + sk->sk_family, | ||
827 | af_family_slock_key_strings[sk->sk_family]); | ||
828 | lockdep_init_map(&sk->sk_lock.dep_map, | ||
829 | af_family_key_strings[sk->sk_family], | ||
830 | af_family_keys + sk->sk_family, 0); | ||
831 | } | 818 | } |
832 | 819 | ||
833 | /** | 820 | /** |
@@ -841,7 +828,7 @@ struct sock *sk_alloc(int family, gfp_t priority, | |||
841 | struct proto *prot, int zero_it) | 828 | struct proto *prot, int zero_it) |
842 | { | 829 | { |
843 | struct sock *sk = NULL; | 830 | struct sock *sk = NULL; |
844 | kmem_cache_t *slab = prot->slab; | 831 | struct kmem_cache *slab = prot->slab; |
845 | 832 | ||
846 | if (slab != NULL) | 833 | if (slab != NULL) |
847 | sk = kmem_cache_alloc(slab, priority); | 834 | sk = kmem_cache_alloc(slab, priority); |
diff --git a/net/dccp/ackvec.c b/net/dccp/ackvec.c index bdf1bb7a82c0..1f4727ddbdbf 100644 --- a/net/dccp/ackvec.c +++ b/net/dccp/ackvec.c | |||
@@ -21,8 +21,8 @@ | |||
21 | 21 | ||
22 | #include <net/sock.h> | 22 | #include <net/sock.h> |
23 | 23 | ||
24 | static kmem_cache_t *dccp_ackvec_slab; | 24 | static struct kmem_cache *dccp_ackvec_slab; |
25 | static kmem_cache_t *dccp_ackvec_record_slab; | 25 | static struct kmem_cache *dccp_ackvec_record_slab; |
26 | 26 | ||
27 | static struct dccp_ackvec_record *dccp_ackvec_record_new(void) | 27 | static struct dccp_ackvec_record *dccp_ackvec_record_new(void) |
28 | { | 28 | { |
diff --git a/net/dccp/ccid.c b/net/dccp/ccid.c index ff05e59043cd..d8cf92f09e68 100644 --- a/net/dccp/ccid.c +++ b/net/dccp/ccid.c | |||
@@ -55,9 +55,9 @@ static inline void ccids_read_unlock(void) | |||
55 | #define ccids_read_unlock() do { } while(0) | 55 | #define ccids_read_unlock() do { } while(0) |
56 | #endif | 56 | #endif |
57 | 57 | ||
58 | static kmem_cache_t *ccid_kmem_cache_create(int obj_size, const char *fmt,...) | 58 | static struct kmem_cache *ccid_kmem_cache_create(int obj_size, const char *fmt,...) |
59 | { | 59 | { |
60 | kmem_cache_t *slab; | 60 | struct kmem_cache *slab; |
61 | char slab_name_fmt[32], *slab_name; | 61 | char slab_name_fmt[32], *slab_name; |
62 | va_list args; | 62 | va_list args; |
63 | 63 | ||
@@ -75,7 +75,7 @@ static kmem_cache_t *ccid_kmem_cache_create(int obj_size, const char *fmt,...) | |||
75 | return slab; | 75 | return slab; |
76 | } | 76 | } |
77 | 77 | ||
78 | static void ccid_kmem_cache_destroy(kmem_cache_t *slab) | 78 | static void ccid_kmem_cache_destroy(struct kmem_cache *slab) |
79 | { | 79 | { |
80 | if (slab != NULL) { | 80 | if (slab != NULL) { |
81 | const char *name = kmem_cache_name(slab); | 81 | const char *name = kmem_cache_name(slab); |
diff --git a/net/dccp/ccid.h b/net/dccp/ccid.h index c7c29514dce8..bcc2d12ae81c 100644 --- a/net/dccp/ccid.h +++ b/net/dccp/ccid.h | |||
@@ -27,9 +27,9 @@ struct ccid_operations { | |||
27 | unsigned char ccid_id; | 27 | unsigned char ccid_id; |
28 | const char *ccid_name; | 28 | const char *ccid_name; |
29 | struct module *ccid_owner; | 29 | struct module *ccid_owner; |
30 | kmem_cache_t *ccid_hc_rx_slab; | 30 | struct kmem_cache *ccid_hc_rx_slab; |
31 | __u32 ccid_hc_rx_obj_size; | 31 | __u32 ccid_hc_rx_obj_size; |
32 | kmem_cache_t *ccid_hc_tx_slab; | 32 | struct kmem_cache *ccid_hc_tx_slab; |
33 | __u32 ccid_hc_tx_obj_size; | 33 | __u32 ccid_hc_tx_obj_size; |
34 | int (*ccid_hc_rx_init)(struct ccid *ccid, struct sock *sk); | 34 | int (*ccid_hc_rx_init)(struct ccid *ccid, struct sock *sk); |
35 | int (*ccid_hc_tx_init)(struct ccid *ccid, struct sock *sk); | 35 | int (*ccid_hc_tx_init)(struct ccid *ccid, struct sock *sk); |
diff --git a/net/dccp/ccids/ccid3.c b/net/dccp/ccids/ccid3.c index cf8c07b2704f..66a27b9688ca 100644 --- a/net/dccp/ccids/ccid3.c +++ b/net/dccp/ccids/ccid3.c | |||
@@ -295,7 +295,7 @@ static int ccid3_hc_tx_send_packet(struct sock *sk, struct sk_buff *skb) | |||
295 | new_packet = dccp_tx_hist_head(&hctx->ccid3hctx_hist); | 295 | new_packet = dccp_tx_hist_head(&hctx->ccid3hctx_hist); |
296 | if (new_packet == NULL || new_packet->dccphtx_sent) { | 296 | if (new_packet == NULL || new_packet->dccphtx_sent) { |
297 | new_packet = dccp_tx_hist_entry_new(ccid3_tx_hist, | 297 | new_packet = dccp_tx_hist_entry_new(ccid3_tx_hist, |
298 | SLAB_ATOMIC); | 298 | GFP_ATOMIC); |
299 | 299 | ||
300 | if (unlikely(new_packet == NULL)) { | 300 | if (unlikely(new_packet == NULL)) { |
301 | DCCP_WARN("%s, sk=%p, not enough mem to add to history," | 301 | DCCP_WARN("%s, sk=%p, not enough mem to add to history," |
@@ -889,7 +889,7 @@ static void ccid3_hc_rx_update_li(struct sock *sk, u64 seq_loss, u8 win_loss) | |||
889 | /* new loss event detected */ | 889 | /* new loss event detected */ |
890 | /* calculate last interval length */ | 890 | /* calculate last interval length */ |
891 | seq_temp = dccp_delta_seqno(head->dccplih_seqno, seq_loss); | 891 | seq_temp = dccp_delta_seqno(head->dccplih_seqno, seq_loss); |
892 | entry = dccp_li_hist_entry_new(ccid3_li_hist, SLAB_ATOMIC); | 892 | entry = dccp_li_hist_entry_new(ccid3_li_hist, GFP_ATOMIC); |
893 | 893 | ||
894 | if (entry == NULL) { | 894 | if (entry == NULL) { |
895 | DCCP_BUG("out of memory - can not allocate entry"); | 895 | DCCP_BUG("out of memory - can not allocate entry"); |
@@ -1011,7 +1011,7 @@ static void ccid3_hc_rx_packet_recv(struct sock *sk, struct sk_buff *skb) | |||
1011 | } | 1011 | } |
1012 | 1012 | ||
1013 | packet = dccp_rx_hist_entry_new(ccid3_rx_hist, sk, opt_recv->dccpor_ndp, | 1013 | packet = dccp_rx_hist_entry_new(ccid3_rx_hist, sk, opt_recv->dccpor_ndp, |
1014 | skb, SLAB_ATOMIC); | 1014 | skb, GFP_ATOMIC); |
1015 | if (unlikely(packet == NULL)) { | 1015 | if (unlikely(packet == NULL)) { |
1016 | DCCP_WARN("%s, sk=%p, Not enough mem to add rx packet " | 1016 | DCCP_WARN("%s, sk=%p, Not enough mem to add rx packet " |
1017 | "to history, consider it lost!\n", dccp_role(sk), sk); | 1017 | "to history, consider it lost!\n", dccp_role(sk), sk); |
diff --git a/net/dccp/ccids/lib/loss_interval.c b/net/dccp/ccids/lib/loss_interval.c index 48b9b93f8acb..0a0baef16b3e 100644 --- a/net/dccp/ccids/lib/loss_interval.c +++ b/net/dccp/ccids/lib/loss_interval.c | |||
@@ -125,7 +125,7 @@ int dccp_li_hist_interval_new(struct dccp_li_hist *hist, | |||
125 | int i; | 125 | int i; |
126 | 126 | ||
127 | for (i = 0; i < DCCP_LI_HIST_IVAL_F_LENGTH; i++) { | 127 | for (i = 0; i < DCCP_LI_HIST_IVAL_F_LENGTH; i++) { |
128 | entry = dccp_li_hist_entry_new(hist, SLAB_ATOMIC); | 128 | entry = dccp_li_hist_entry_new(hist, GFP_ATOMIC); |
129 | if (entry == NULL) { | 129 | if (entry == NULL) { |
130 | dccp_li_hist_purge(hist, list); | 130 | dccp_li_hist_purge(hist, list); |
131 | DCCP_BUG("loss interval list entry is NULL"); | 131 | DCCP_BUG("loss interval list entry is NULL"); |
diff --git a/net/dccp/ccids/lib/loss_interval.h b/net/dccp/ccids/lib/loss_interval.h index 0ae85f0340b2..eb257014dd74 100644 --- a/net/dccp/ccids/lib/loss_interval.h +++ b/net/dccp/ccids/lib/loss_interval.h | |||
@@ -20,7 +20,7 @@ | |||
20 | #define DCCP_LI_HIST_IVAL_F_LENGTH 8 | 20 | #define DCCP_LI_HIST_IVAL_F_LENGTH 8 |
21 | 21 | ||
22 | struct dccp_li_hist { | 22 | struct dccp_li_hist { |
23 | kmem_cache_t *dccplih_slab; | 23 | struct kmem_cache *dccplih_slab; |
24 | }; | 24 | }; |
25 | 25 | ||
26 | extern struct dccp_li_hist *dccp_li_hist_new(const char *name); | 26 | extern struct dccp_li_hist *dccp_li_hist_new(const char *name); |
diff --git a/net/dccp/ccids/lib/packet_history.h b/net/dccp/ccids/lib/packet_history.h index 067cf1c85a37..9a8bcf224aa7 100644 --- a/net/dccp/ccids/lib/packet_history.h +++ b/net/dccp/ccids/lib/packet_history.h | |||
@@ -68,14 +68,14 @@ struct dccp_rx_hist_entry { | |||
68 | }; | 68 | }; |
69 | 69 | ||
70 | struct dccp_tx_hist { | 70 | struct dccp_tx_hist { |
71 | kmem_cache_t *dccptxh_slab; | 71 | struct kmem_cache *dccptxh_slab; |
72 | }; | 72 | }; |
73 | 73 | ||
74 | extern struct dccp_tx_hist *dccp_tx_hist_new(const char *name); | 74 | extern struct dccp_tx_hist *dccp_tx_hist_new(const char *name); |
75 | extern void dccp_tx_hist_delete(struct dccp_tx_hist *hist); | 75 | extern void dccp_tx_hist_delete(struct dccp_tx_hist *hist); |
76 | 76 | ||
77 | struct dccp_rx_hist { | 77 | struct dccp_rx_hist { |
78 | kmem_cache_t *dccprxh_slab; | 78 | struct kmem_cache *dccprxh_slab; |
79 | }; | 79 | }; |
80 | 80 | ||
81 | extern struct dccp_rx_hist *dccp_rx_hist_new(const char *name); | 81 | extern struct dccp_rx_hist *dccp_rx_hist_new(const char *name); |
diff --git a/net/decnet/dn_table.c b/net/decnet/dn_table.c index bdbc3f431668..13b2421991ba 100644 --- a/net/decnet/dn_table.c +++ b/net/decnet/dn_table.c | |||
@@ -79,7 +79,7 @@ for( ; ((f) = *(fp)) != NULL && dn_key_eq((f)->fn_key, (key)); (fp) = &(f)->fn_n | |||
79 | static struct hlist_head dn_fib_table_hash[DN_FIB_TABLE_HASHSZ]; | 79 | static struct hlist_head dn_fib_table_hash[DN_FIB_TABLE_HASHSZ]; |
80 | static DEFINE_RWLOCK(dn_fib_tables_lock); | 80 | static DEFINE_RWLOCK(dn_fib_tables_lock); |
81 | 81 | ||
82 | static kmem_cache_t *dn_hash_kmem __read_mostly; | 82 | static struct kmem_cache *dn_hash_kmem __read_mostly; |
83 | static int dn_fib_hash_zombies; | 83 | static int dn_fib_hash_zombies; |
84 | 84 | ||
85 | static inline dn_fib_idx_t dn_hash(dn_fib_key_t key, struct dn_zone *dz) | 85 | static inline dn_fib_idx_t dn_hash(dn_fib_key_t key, struct dn_zone *dz) |
@@ -590,7 +590,7 @@ create: | |||
590 | 590 | ||
591 | replace: | 591 | replace: |
592 | err = -ENOBUFS; | 592 | err = -ENOBUFS; |
593 | new_f = kmem_cache_alloc(dn_hash_kmem, SLAB_KERNEL); | 593 | new_f = kmem_cache_alloc(dn_hash_kmem, GFP_KERNEL); |
594 | if (new_f == NULL) | 594 | if (new_f == NULL) |
595 | goto out; | 595 | goto out; |
596 | 596 | ||
diff --git a/net/ipv4/fib_hash.c b/net/ipv4/fib_hash.c index 107bb6cbb0b3..648f47c1c399 100644 --- a/net/ipv4/fib_hash.c +++ b/net/ipv4/fib_hash.c | |||
@@ -45,8 +45,8 @@ | |||
45 | 45 | ||
46 | #include "fib_lookup.h" | 46 | #include "fib_lookup.h" |
47 | 47 | ||
48 | static kmem_cache_t *fn_hash_kmem __read_mostly; | 48 | static struct kmem_cache *fn_hash_kmem __read_mostly; |
49 | static kmem_cache_t *fn_alias_kmem __read_mostly; | 49 | static struct kmem_cache *fn_alias_kmem __read_mostly; |
50 | 50 | ||
51 | struct fib_node { | 51 | struct fib_node { |
52 | struct hlist_node fn_hash; | 52 | struct hlist_node fn_hash; |
@@ -485,13 +485,13 @@ static int fn_hash_insert(struct fib_table *tb, struct fib_config *cfg) | |||
485 | goto out; | 485 | goto out; |
486 | 486 | ||
487 | err = -ENOBUFS; | 487 | err = -ENOBUFS; |
488 | new_fa = kmem_cache_alloc(fn_alias_kmem, SLAB_KERNEL); | 488 | new_fa = kmem_cache_alloc(fn_alias_kmem, GFP_KERNEL); |
489 | if (new_fa == NULL) | 489 | if (new_fa == NULL) |
490 | goto out; | 490 | goto out; |
491 | 491 | ||
492 | new_f = NULL; | 492 | new_f = NULL; |
493 | if (!f) { | 493 | if (!f) { |
494 | new_f = kmem_cache_alloc(fn_hash_kmem, SLAB_KERNEL); | 494 | new_f = kmem_cache_alloc(fn_hash_kmem, GFP_KERNEL); |
495 | if (new_f == NULL) | 495 | if (new_f == NULL) |
496 | goto out_free_new_fa; | 496 | goto out_free_new_fa; |
497 | 497 | ||
diff --git a/net/ipv4/fib_trie.c b/net/ipv4/fib_trie.c index d17990ec724f..cfb249cc0a58 100644 --- a/net/ipv4/fib_trie.c +++ b/net/ipv4/fib_trie.c | |||
@@ -172,7 +172,7 @@ static struct tnode *inflate(struct trie *t, struct tnode *tn); | |||
172 | static struct tnode *halve(struct trie *t, struct tnode *tn); | 172 | static struct tnode *halve(struct trie *t, struct tnode *tn); |
173 | static void tnode_free(struct tnode *tn); | 173 | static void tnode_free(struct tnode *tn); |
174 | 174 | ||
175 | static kmem_cache_t *fn_alias_kmem __read_mostly; | 175 | static struct kmem_cache *fn_alias_kmem __read_mostly; |
176 | static struct trie *trie_local = NULL, *trie_main = NULL; | 176 | static struct trie *trie_local = NULL, *trie_main = NULL; |
177 | 177 | ||
178 | 178 | ||
@@ -1187,7 +1187,7 @@ static int fn_trie_insert(struct fib_table *tb, struct fib_config *cfg) | |||
1187 | u8 state; | 1187 | u8 state; |
1188 | 1188 | ||
1189 | err = -ENOBUFS; | 1189 | err = -ENOBUFS; |
1190 | new_fa = kmem_cache_alloc(fn_alias_kmem, SLAB_KERNEL); | 1190 | new_fa = kmem_cache_alloc(fn_alias_kmem, GFP_KERNEL); |
1191 | if (new_fa == NULL) | 1191 | if (new_fa == NULL) |
1192 | goto out; | 1192 | goto out; |
1193 | 1193 | ||
@@ -1232,7 +1232,7 @@ static int fn_trie_insert(struct fib_table *tb, struct fib_config *cfg) | |||
1232 | goto out; | 1232 | goto out; |
1233 | 1233 | ||
1234 | err = -ENOBUFS; | 1234 | err = -ENOBUFS; |
1235 | new_fa = kmem_cache_alloc(fn_alias_kmem, SLAB_KERNEL); | 1235 | new_fa = kmem_cache_alloc(fn_alias_kmem, GFP_KERNEL); |
1236 | if (new_fa == NULL) | 1236 | if (new_fa == NULL) |
1237 | goto out; | 1237 | goto out; |
1238 | 1238 | ||
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 244c4f445c7d..8c79c8a4ea5c 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c | |||
@@ -27,11 +27,11 @@ | |||
27 | * Allocate and initialize a new local port bind bucket. | 27 | * Allocate and initialize a new local port bind bucket. |
28 | * The bindhash mutex for snum's hash chain must be held here. | 28 | * The bindhash mutex for snum's hash chain must be held here. |
29 | */ | 29 | */ |
30 | struct inet_bind_bucket *inet_bind_bucket_create(kmem_cache_t *cachep, | 30 | struct inet_bind_bucket *inet_bind_bucket_create(struct kmem_cache *cachep, |
31 | struct inet_bind_hashbucket *head, | 31 | struct inet_bind_hashbucket *head, |
32 | const unsigned short snum) | 32 | const unsigned short snum) |
33 | { | 33 | { |
34 | struct inet_bind_bucket *tb = kmem_cache_alloc(cachep, SLAB_ATOMIC); | 34 | struct inet_bind_bucket *tb = kmem_cache_alloc(cachep, GFP_ATOMIC); |
35 | 35 | ||
36 | if (tb != NULL) { | 36 | if (tb != NULL) { |
37 | tb->port = snum; | 37 | tb->port = snum; |
@@ -45,7 +45,7 @@ struct inet_bind_bucket *inet_bind_bucket_create(kmem_cache_t *cachep, | |||
45 | /* | 45 | /* |
46 | * Caller must hold hashbucket lock for this tb with local BH disabled | 46 | * Caller must hold hashbucket lock for this tb with local BH disabled |
47 | */ | 47 | */ |
48 | void inet_bind_bucket_destroy(kmem_cache_t *cachep, struct inet_bind_bucket *tb) | 48 | void inet_bind_bucket_destroy(struct kmem_cache *cachep, struct inet_bind_bucket *tb) |
49 | { | 49 | { |
50 | if (hlist_empty(&tb->owners)) { | 50 | if (hlist_empty(&tb->owners)) { |
51 | __hlist_del(&tb->node); | 51 | __hlist_del(&tb->node); |
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c index 061fd7a961b8..9f414e35c488 100644 --- a/net/ipv4/inet_timewait_sock.c +++ b/net/ipv4/inet_timewait_sock.c | |||
@@ -91,7 +91,7 @@ struct inet_timewait_sock *inet_twsk_alloc(const struct sock *sk, const int stat | |||
91 | { | 91 | { |
92 | struct inet_timewait_sock *tw = | 92 | struct inet_timewait_sock *tw = |
93 | kmem_cache_alloc(sk->sk_prot_creator->twsk_prot->twsk_slab, | 93 | kmem_cache_alloc(sk->sk_prot_creator->twsk_prot->twsk_slab, |
94 | SLAB_ATOMIC); | 94 | GFP_ATOMIC); |
95 | if (tw != NULL) { | 95 | if (tw != NULL) { |
96 | const struct inet_sock *inet = inet_sk(sk); | 96 | const struct inet_sock *inet = inet_sk(sk); |
97 | 97 | ||
diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c index f072f3875af8..711eb6d0285a 100644 --- a/net/ipv4/inetpeer.c +++ b/net/ipv4/inetpeer.c | |||
@@ -73,7 +73,7 @@ | |||
73 | /* Exported for inet_getid inline function. */ | 73 | /* Exported for inet_getid inline function. */ |
74 | DEFINE_SPINLOCK(inet_peer_idlock); | 74 | DEFINE_SPINLOCK(inet_peer_idlock); |
75 | 75 | ||
76 | static kmem_cache_t *peer_cachep __read_mostly; | 76 | static struct kmem_cache *peer_cachep __read_mostly; |
77 | 77 | ||
78 | #define node_height(x) x->avl_height | 78 | #define node_height(x) x->avl_height |
79 | static struct inet_peer peer_fake_node = { | 79 | static struct inet_peer peer_fake_node = { |
diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c index efcf45ecc818..ecb5422ea237 100644 --- a/net/ipv4/ipmr.c +++ b/net/ipv4/ipmr.c | |||
@@ -105,7 +105,7 @@ static DEFINE_SPINLOCK(mfc_unres_lock); | |||
105 | In this case data path is free of exclusive locks at all. | 105 | In this case data path is free of exclusive locks at all. |
106 | */ | 106 | */ |
107 | 107 | ||
108 | static kmem_cache_t *mrt_cachep __read_mostly; | 108 | static struct kmem_cache *mrt_cachep __read_mostly; |
109 | 109 | ||
110 | static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local); | 110 | static int ip_mr_forward(struct sk_buff *skb, struct mfc_cache *cache, int local); |
111 | static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert); | 111 | static int ipmr_cache_report(struct sk_buff *pkt, vifi_t vifi, int assert); |
diff --git a/net/ipv4/ipvs/ip_vs_conn.c b/net/ipv4/ipvs/ip_vs_conn.c index 8832eb517d52..8086787a2c51 100644 --- a/net/ipv4/ipvs/ip_vs_conn.c +++ b/net/ipv4/ipvs/ip_vs_conn.c | |||
@@ -44,7 +44,7 @@ | |||
44 | static struct list_head *ip_vs_conn_tab; | 44 | static struct list_head *ip_vs_conn_tab; |
45 | 45 | ||
46 | /* SLAB cache for IPVS connections */ | 46 | /* SLAB cache for IPVS connections */ |
47 | static kmem_cache_t *ip_vs_conn_cachep __read_mostly; | 47 | static struct kmem_cache *ip_vs_conn_cachep __read_mostly; |
48 | 48 | ||
49 | /* counter for current IPVS connections */ | 49 | /* counter for current IPVS connections */ |
50 | static atomic_t ip_vs_conn_count = ATOMIC_INIT(0); | 50 | static atomic_t ip_vs_conn_count = ATOMIC_INIT(0); |
diff --git a/net/ipv4/netfilter/ip_conntrack_core.c b/net/ipv4/netfilter/ip_conntrack_core.c index f4b0e68a16d2..8556a4f4f60a 100644 --- a/net/ipv4/netfilter/ip_conntrack_core.c +++ b/net/ipv4/netfilter/ip_conntrack_core.c | |||
@@ -65,8 +65,8 @@ static LIST_HEAD(helpers); | |||
65 | unsigned int ip_conntrack_htable_size __read_mostly = 0; | 65 | unsigned int ip_conntrack_htable_size __read_mostly = 0; |
66 | int ip_conntrack_max __read_mostly; | 66 | int ip_conntrack_max __read_mostly; |
67 | struct list_head *ip_conntrack_hash __read_mostly; | 67 | struct list_head *ip_conntrack_hash __read_mostly; |
68 | static kmem_cache_t *ip_conntrack_cachep __read_mostly; | 68 | static struct kmem_cache *ip_conntrack_cachep __read_mostly; |
69 | static kmem_cache_t *ip_conntrack_expect_cachep __read_mostly; | 69 | static struct kmem_cache *ip_conntrack_expect_cachep __read_mostly; |
70 | struct ip_conntrack ip_conntrack_untracked; | 70 | struct ip_conntrack ip_conntrack_untracked; |
71 | unsigned int ip_ct_log_invalid __read_mostly; | 71 | unsigned int ip_ct_log_invalid __read_mostly; |
72 | static LIST_HEAD(unconfirmed); | 72 | static LIST_HEAD(unconfirmed); |
diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c index 87c8f54872b7..e5cd83b2205d 100644 --- a/net/ipv6/af_inet6.c +++ b/net/ipv6/af_inet6.c | |||
@@ -720,10 +720,8 @@ snmp6_mib_free(void *ptr[2]) | |||
720 | { | 720 | { |
721 | if (ptr == NULL) | 721 | if (ptr == NULL) |
722 | return; | 722 | return; |
723 | if (ptr[0]) | 723 | free_percpu(ptr[0]); |
724 | free_percpu(ptr[0]); | 724 | free_percpu(ptr[1]); |
725 | if (ptr[1]) | ||
726 | free_percpu(ptr[1]); | ||
727 | ptr[0] = ptr[1] = NULL; | 725 | ptr[0] = ptr[1] = NULL; |
728 | } | 726 | } |
729 | 727 | ||
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c index bf526115e518..96d8310ae9c8 100644 --- a/net/ipv6/ip6_fib.c +++ b/net/ipv6/ip6_fib.c | |||
@@ -50,7 +50,7 @@ | |||
50 | 50 | ||
51 | struct rt6_statistics rt6_stats; | 51 | struct rt6_statistics rt6_stats; |
52 | 52 | ||
53 | static kmem_cache_t * fib6_node_kmem __read_mostly; | 53 | static struct kmem_cache * fib6_node_kmem __read_mostly; |
54 | 54 | ||
55 | enum fib_walk_state_t | 55 | enum fib_walk_state_t |
56 | { | 56 | { |
@@ -150,7 +150,7 @@ static __inline__ struct fib6_node * node_alloc(void) | |||
150 | { | 150 | { |
151 | struct fib6_node *fn; | 151 | struct fib6_node *fn; |
152 | 152 | ||
153 | if ((fn = kmem_cache_alloc(fib6_node_kmem, SLAB_ATOMIC)) != NULL) | 153 | if ((fn = kmem_cache_alloc(fib6_node_kmem, GFP_ATOMIC)) != NULL) |
154 | memset(fn, 0, sizeof(struct fib6_node)); | 154 | memset(fn, 0, sizeof(struct fib6_node)); |
155 | 155 | ||
156 | return fn; | 156 | return fn; |
diff --git a/net/ipv6/xfrm6_tunnel.c b/net/ipv6/xfrm6_tunnel.c index 01a5c52a2be3..12e426b9aacd 100644 --- a/net/ipv6/xfrm6_tunnel.c +++ b/net/ipv6/xfrm6_tunnel.c | |||
@@ -50,7 +50,7 @@ static u32 xfrm6_tunnel_spi; | |||
50 | #define XFRM6_TUNNEL_SPI_MIN 1 | 50 | #define XFRM6_TUNNEL_SPI_MIN 1 |
51 | #define XFRM6_TUNNEL_SPI_MAX 0xffffffff | 51 | #define XFRM6_TUNNEL_SPI_MAX 0xffffffff |
52 | 52 | ||
53 | static kmem_cache_t *xfrm6_tunnel_spi_kmem __read_mostly; | 53 | static struct kmem_cache *xfrm6_tunnel_spi_kmem __read_mostly; |
54 | 54 | ||
55 | #define XFRM6_TUNNEL_SPI_BYADDR_HSIZE 256 | 55 | #define XFRM6_TUNNEL_SPI_BYADDR_HSIZE 256 |
56 | #define XFRM6_TUNNEL_SPI_BYSPI_HSIZE 256 | 56 | #define XFRM6_TUNNEL_SPI_BYSPI_HSIZE 256 |
@@ -180,7 +180,7 @@ try_next_2:; | |||
180 | spi = 0; | 180 | spi = 0; |
181 | goto out; | 181 | goto out; |
182 | alloc_spi: | 182 | alloc_spi: |
183 | x6spi = kmem_cache_alloc(xfrm6_tunnel_spi_kmem, SLAB_ATOMIC); | 183 | x6spi = kmem_cache_alloc(xfrm6_tunnel_spi_kmem, GFP_ATOMIC); |
184 | if (!x6spi) | 184 | if (!x6spi) |
185 | goto out; | 185 | goto out; |
186 | 186 | ||
diff --git a/net/netfilter/nf_conntrack_core.c b/net/netfilter/nf_conntrack_core.c index 9b3158ce46e1..9b02ec4012fb 100644 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c | |||
@@ -108,7 +108,7 @@ static struct { | |||
108 | size_t size; | 108 | size_t size; |
109 | 109 | ||
110 | /* slab cache pointer */ | 110 | /* slab cache pointer */ |
111 | kmem_cache_t *cachep; | 111 | struct kmem_cache *cachep; |
112 | 112 | ||
113 | /* allocated slab cache + modules which uses this slab cache */ | 113 | /* allocated slab cache + modules which uses this slab cache */ |
114 | int use; | 114 | int use; |
@@ -147,7 +147,7 @@ int nf_conntrack_register_cache(u_int32_t features, const char *name, | |||
147 | { | 147 | { |
148 | int ret = 0; | 148 | int ret = 0; |
149 | char *cache_name; | 149 | char *cache_name; |
150 | kmem_cache_t *cachep; | 150 | struct kmem_cache *cachep; |
151 | 151 | ||
152 | DEBUGP("nf_conntrack_register_cache: features=0x%x, name=%s, size=%d\n", | 152 | DEBUGP("nf_conntrack_register_cache: features=0x%x, name=%s, size=%d\n", |
153 | features, name, size); | 153 | features, name, size); |
@@ -226,7 +226,7 @@ EXPORT_SYMBOL_GPL(nf_conntrack_register_cache); | |||
226 | /* FIXME: In the current, only nf_conntrack_cleanup() can call this function. */ | 226 | /* FIXME: In the current, only nf_conntrack_cleanup() can call this function. */ |
227 | void nf_conntrack_unregister_cache(u_int32_t features) | 227 | void nf_conntrack_unregister_cache(u_int32_t features) |
228 | { | 228 | { |
229 | kmem_cache_t *cachep; | 229 | struct kmem_cache *cachep; |
230 | char *name; | 230 | char *name; |
231 | 231 | ||
232 | /* | 232 | /* |
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c index 7df8f9a2f863..9cbf926cdd14 100644 --- a/net/netfilter/nf_conntrack_expect.c +++ b/net/netfilter/nf_conntrack_expect.c | |||
@@ -29,7 +29,7 @@ | |||
29 | LIST_HEAD(nf_conntrack_expect_list); | 29 | LIST_HEAD(nf_conntrack_expect_list); |
30 | EXPORT_SYMBOL_GPL(nf_conntrack_expect_list); | 30 | EXPORT_SYMBOL_GPL(nf_conntrack_expect_list); |
31 | 31 | ||
32 | kmem_cache_t *nf_conntrack_expect_cachep __read_mostly; | 32 | struct kmem_cache *nf_conntrack_expect_cachep __read_mostly; |
33 | static unsigned int nf_conntrack_expect_next_id; | 33 | static unsigned int nf_conntrack_expect_next_id; |
34 | 34 | ||
35 | /* nf_conntrack_expect helper functions */ | 35 | /* nf_conntrack_expect helper functions */ |
diff --git a/net/netfilter/xt_hashlimit.c b/net/netfilter/xt_hashlimit.c index a98de0b54d65..a5a6e192ac2d 100644 --- a/net/netfilter/xt_hashlimit.c +++ b/net/netfilter/xt_hashlimit.c | |||
@@ -92,7 +92,7 @@ struct xt_hashlimit_htable { | |||
92 | static DEFINE_SPINLOCK(hashlimit_lock); /* protects htables list */ | 92 | static DEFINE_SPINLOCK(hashlimit_lock); /* protects htables list */ |
93 | static DEFINE_MUTEX(hlimit_mutex); /* additional checkentry protection */ | 93 | static DEFINE_MUTEX(hlimit_mutex); /* additional checkentry protection */ |
94 | static HLIST_HEAD(hashlimit_htables); | 94 | static HLIST_HEAD(hashlimit_htables); |
95 | static kmem_cache_t *hashlimit_cachep __read_mostly; | 95 | static struct kmem_cache *hashlimit_cachep __read_mostly; |
96 | 96 | ||
97 | static inline int dst_cmp(const struct dsthash_ent *ent, struct dsthash_dst *b) | 97 | static inline int dst_cmp(const struct dsthash_ent *ent, struct dsthash_dst *b) |
98 | { | 98 | { |
diff --git a/net/rxrpc/krxiod.c b/net/rxrpc/krxiod.c index dada34a77b21..49effd92144e 100644 --- a/net/rxrpc/krxiod.c +++ b/net/rxrpc/krxiod.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/completion.h> | 13 | #include <linux/completion.h> |
14 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/freezer.h> | ||
16 | #include <rxrpc/krxiod.h> | 17 | #include <rxrpc/krxiod.h> |
17 | #include <rxrpc/transport.h> | 18 | #include <rxrpc/transport.h> |
18 | #include <rxrpc/peer.h> | 19 | #include <rxrpc/peer.h> |
diff --git a/net/rxrpc/krxsecd.c b/net/rxrpc/krxsecd.c index cea4eb5e2497..3ab0f77409f4 100644 --- a/net/rxrpc/krxsecd.c +++ b/net/rxrpc/krxsecd.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <rxrpc/call.h> | 27 | #include <rxrpc/call.h> |
28 | #include <linux/udp.h> | 28 | #include <linux/udp.h> |
29 | #include <linux/ip.h> | 29 | #include <linux/ip.h> |
30 | #include <linux/freezer.h> | ||
30 | #include <net/sock.h> | 31 | #include <net/sock.h> |
31 | #include "internal.h" | 32 | #include "internal.h" |
32 | 33 | ||
diff --git a/net/rxrpc/krxtimod.c b/net/rxrpc/krxtimod.c index 3e7466900bd4..9a9b6132dba4 100644 --- a/net/rxrpc/krxtimod.c +++ b/net/rxrpc/krxtimod.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/sched.h> | 14 | #include <linux/sched.h> |
15 | #include <linux/completion.h> | 15 | #include <linux/completion.h> |
16 | #include <linux/freezer.h> | ||
16 | #include <rxrpc/rxrpc.h> | 17 | #include <rxrpc/rxrpc.h> |
17 | #include <rxrpc/krxtimod.h> | 18 | #include <rxrpc/krxtimod.h> |
18 | #include <asm/errno.h> | 19 | #include <asm/errno.h> |
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c index 11f3b549f4a4..f2ba8615895b 100644 --- a/net/sctp/protocol.c +++ b/net/sctp/protocol.c | |||
@@ -79,8 +79,8 @@ static struct sctp_pf *sctp_pf_inet_specific; | |||
79 | static struct sctp_af *sctp_af_v4_specific; | 79 | static struct sctp_af *sctp_af_v4_specific; |
80 | static struct sctp_af *sctp_af_v6_specific; | 80 | static struct sctp_af *sctp_af_v6_specific; |
81 | 81 | ||
82 | kmem_cache_t *sctp_chunk_cachep __read_mostly; | 82 | struct kmem_cache *sctp_chunk_cachep __read_mostly; |
83 | kmem_cache_t *sctp_bucket_cachep __read_mostly; | 83 | struct kmem_cache *sctp_bucket_cachep __read_mostly; |
84 | 84 | ||
85 | /* Return the address of the control sock. */ | 85 | /* Return the address of the control sock. */ |
86 | struct sock *sctp_get_ctl_sock(void) | 86 | struct sock *sctp_get_ctl_sock(void) |
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 04954e5f6846..30927d3a597f 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -65,7 +65,7 @@ | |||
65 | #include <net/sctp/sctp.h> | 65 | #include <net/sctp/sctp.h> |
66 | #include <net/sctp/sm.h> | 66 | #include <net/sctp/sm.h> |
67 | 67 | ||
68 | extern kmem_cache_t *sctp_chunk_cachep; | 68 | extern struct kmem_cache *sctp_chunk_cachep; |
69 | 69 | ||
70 | SCTP_STATIC | 70 | SCTP_STATIC |
71 | struct sctp_chunk *sctp_make_chunk(const struct sctp_association *asoc, | 71 | struct sctp_chunk *sctp_make_chunk(const struct sctp_association *asoc, |
@@ -979,7 +979,7 @@ struct sctp_chunk *sctp_chunkify(struct sk_buff *skb, | |||
979 | { | 979 | { |
980 | struct sctp_chunk *retval; | 980 | struct sctp_chunk *retval; |
981 | 981 | ||
982 | retval = kmem_cache_alloc(sctp_chunk_cachep, SLAB_ATOMIC); | 982 | retval = kmem_cache_alloc(sctp_chunk_cachep, GFP_ATOMIC); |
983 | 983 | ||
984 | if (!retval) | 984 | if (!retval) |
985 | goto nodata; | 985 | goto nodata; |
diff --git a/net/sctp/socket.c b/net/sctp/socket.c index 02b27145b279..1e8132b8c4d9 100644 --- a/net/sctp/socket.c +++ b/net/sctp/socket.c | |||
@@ -107,7 +107,7 @@ static void sctp_sock_migrate(struct sock *, struct sock *, | |||
107 | struct sctp_association *, sctp_socket_type_t); | 107 | struct sctp_association *, sctp_socket_type_t); |
108 | static char *sctp_hmac_alg = SCTP_COOKIE_HMAC_ALG; | 108 | static char *sctp_hmac_alg = SCTP_COOKIE_HMAC_ALG; |
109 | 109 | ||
110 | extern kmem_cache_t *sctp_bucket_cachep; | 110 | extern struct kmem_cache *sctp_bucket_cachep; |
111 | 111 | ||
112 | /* Get the sndbuf space available at the time on the association. */ | 112 | /* Get the sndbuf space available at the time on the association. */ |
113 | static inline int sctp_wspace(struct sctp_association *asoc) | 113 | static inline int sctp_wspace(struct sctp_association *asoc) |
@@ -4989,7 +4989,7 @@ static struct sctp_bind_bucket *sctp_bucket_create( | |||
4989 | { | 4989 | { |
4990 | struct sctp_bind_bucket *pp; | 4990 | struct sctp_bind_bucket *pp; |
4991 | 4991 | ||
4992 | pp = kmem_cache_alloc(sctp_bucket_cachep, SLAB_ATOMIC); | 4992 | pp = kmem_cache_alloc(sctp_bucket_cachep, GFP_ATOMIC); |
4993 | SCTP_DBG_OBJCNT_INC(bind_bucket); | 4993 | SCTP_DBG_OBJCNT_INC(bind_bucket); |
4994 | if (pp) { | 4994 | if (pp) { |
4995 | pp->port = snum; | 4995 | pp->port = snum; |
diff --git a/net/socket.c b/net/socket.c index e8db54702a69..29ea1de43ecb 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -230,13 +230,13 @@ int move_addr_to_user(void *kaddr, int klen, void __user *uaddr, | |||
230 | 230 | ||
231 | #define SOCKFS_MAGIC 0x534F434B | 231 | #define SOCKFS_MAGIC 0x534F434B |
232 | 232 | ||
233 | static kmem_cache_t *sock_inode_cachep __read_mostly; | 233 | static struct kmem_cache *sock_inode_cachep __read_mostly; |
234 | 234 | ||
235 | static struct inode *sock_alloc_inode(struct super_block *sb) | 235 | static struct inode *sock_alloc_inode(struct super_block *sb) |
236 | { | 236 | { |
237 | struct socket_alloc *ei; | 237 | struct socket_alloc *ei; |
238 | 238 | ||
239 | ei = kmem_cache_alloc(sock_inode_cachep, SLAB_KERNEL); | 239 | ei = kmem_cache_alloc(sock_inode_cachep, GFP_KERNEL); |
240 | if (!ei) | 240 | if (!ei) |
241 | return NULL; | 241 | return NULL; |
242 | init_waitqueue_head(&ei->socket.wait); | 242 | init_waitqueue_head(&ei->socket.wait); |
@@ -257,7 +257,7 @@ static void sock_destroy_inode(struct inode *inode) | |||
257 | container_of(inode, struct socket_alloc, vfs_inode)); | 257 | container_of(inode, struct socket_alloc, vfs_inode)); |
258 | } | 258 | } |
259 | 259 | ||
260 | static void init_once(void *foo, kmem_cache_t *cachep, unsigned long flags) | 260 | static void init_once(void *foo, struct kmem_cache *cachep, unsigned long flags) |
261 | { | 261 | { |
262 | struct socket_alloc *ei = (struct socket_alloc *)foo; | 262 | struct socket_alloc *ei = (struct socket_alloc *)foo; |
263 | 263 | ||
@@ -305,7 +305,14 @@ static struct file_system_type sock_fs_type = { | |||
305 | 305 | ||
306 | static int sockfs_delete_dentry(struct dentry *dentry) | 306 | static int sockfs_delete_dentry(struct dentry *dentry) |
307 | { | 307 | { |
308 | return 1; | 308 | /* |
309 | * At creation time, we pretended this dentry was hashed | ||
310 | * (by clearing DCACHE_UNHASHED bit in d_flags) | ||
311 | * At delete time, we restore the truth : not hashed. | ||
312 | * (so that dput() can proceed correctly) | ||
313 | */ | ||
314 | dentry->d_flags |= DCACHE_UNHASHED; | ||
315 | return 0; | ||
309 | } | 316 | } |
310 | static struct dentry_operations sockfs_dentry_operations = { | 317 | static struct dentry_operations sockfs_dentry_operations = { |
311 | .d_delete = sockfs_delete_dentry, | 318 | .d_delete = sockfs_delete_dentry, |
@@ -353,14 +360,20 @@ static int sock_attach_fd(struct socket *sock, struct file *file) | |||
353 | 360 | ||
354 | this.len = sprintf(name, "[%lu]", SOCK_INODE(sock)->i_ino); | 361 | this.len = sprintf(name, "[%lu]", SOCK_INODE(sock)->i_ino); |
355 | this.name = name; | 362 | this.name = name; |
356 | this.hash = SOCK_INODE(sock)->i_ino; | 363 | this.hash = 0; |
357 | 364 | ||
358 | file->f_dentry = d_alloc(sock_mnt->mnt_sb->s_root, &this); | 365 | file->f_dentry = d_alloc(sock_mnt->mnt_sb->s_root, &this); |
359 | if (unlikely(!file->f_dentry)) | 366 | if (unlikely(!file->f_dentry)) |
360 | return -ENOMEM; | 367 | return -ENOMEM; |
361 | 368 | ||
362 | file->f_dentry->d_op = &sockfs_dentry_operations; | 369 | file->f_dentry->d_op = &sockfs_dentry_operations; |
363 | d_add(file->f_dentry, SOCK_INODE(sock)); | 370 | /* |
371 | * We dont want to push this dentry into global dentry hash table. | ||
372 | * We pretend dentry is already hashed, by unsetting DCACHE_UNHASHED | ||
373 | * This permits a working /proc/$pid/fd/XXX on sockets | ||
374 | */ | ||
375 | file->f_dentry->d_flags &= ~DCACHE_UNHASHED; | ||
376 | d_instantiate(file->f_dentry, SOCK_INODE(sock)); | ||
364 | file->f_vfsmnt = mntget(sock_mnt); | 377 | file->f_vfsmnt = mntget(sock_mnt); |
365 | file->f_mapping = file->f_dentry->d_inode->i_mapping; | 378 | file->f_mapping = file->f_dentry->d_inode->i_mapping; |
366 | 379 | ||
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 49dba5febbbd..19703aa9659e 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -33,7 +33,7 @@ static int rpc_mount_count; | |||
33 | static struct file_system_type rpc_pipe_fs_type; | 33 | static struct file_system_type rpc_pipe_fs_type; |
34 | 34 | ||
35 | 35 | ||
36 | static kmem_cache_t *rpc_inode_cachep __read_mostly; | 36 | static struct kmem_cache *rpc_inode_cachep __read_mostly; |
37 | 37 | ||
38 | #define RPC_UPCALL_TIMEOUT (30*HZ) | 38 | #define RPC_UPCALL_TIMEOUT (30*HZ) |
39 | 39 | ||
@@ -143,7 +143,7 @@ static struct inode * | |||
143 | rpc_alloc_inode(struct super_block *sb) | 143 | rpc_alloc_inode(struct super_block *sb) |
144 | { | 144 | { |
145 | struct rpc_inode *rpci; | 145 | struct rpc_inode *rpci; |
146 | rpci = (struct rpc_inode *)kmem_cache_alloc(rpc_inode_cachep, SLAB_KERNEL); | 146 | rpci = (struct rpc_inode *)kmem_cache_alloc(rpc_inode_cachep, GFP_KERNEL); |
147 | if (!rpci) | 147 | if (!rpci) |
148 | return NULL; | 148 | return NULL; |
149 | return &rpci->vfs_inode; | 149 | return &rpci->vfs_inode; |
@@ -824,7 +824,7 @@ static struct file_system_type rpc_pipe_fs_type = { | |||
824 | }; | 824 | }; |
825 | 825 | ||
826 | static void | 826 | static void |
827 | init_once(void * foo, kmem_cache_t * cachep, unsigned long flags) | 827 | init_once(void * foo, struct kmem_cache * cachep, unsigned long flags) |
828 | { | 828 | { |
829 | struct rpc_inode *rpci = (struct rpc_inode *) foo; | 829 | struct rpc_inode *rpci = (struct rpc_inode *) foo; |
830 | 830 | ||
diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c index eff44bcdc95a..225e6510b523 100644 --- a/net/sunrpc/sched.c +++ b/net/sunrpc/sched.c | |||
@@ -34,8 +34,8 @@ static int rpc_task_id; | |||
34 | #define RPC_BUFFER_MAXSIZE (2048) | 34 | #define RPC_BUFFER_MAXSIZE (2048) |
35 | #define RPC_BUFFER_POOLSIZE (8) | 35 | #define RPC_BUFFER_POOLSIZE (8) |
36 | #define RPC_TASK_POOLSIZE (8) | 36 | #define RPC_TASK_POOLSIZE (8) |
37 | static kmem_cache_t *rpc_task_slabp __read_mostly; | 37 | static struct kmem_cache *rpc_task_slabp __read_mostly; |
38 | static kmem_cache_t *rpc_buffer_slabp __read_mostly; | 38 | static struct kmem_cache *rpc_buffer_slabp __read_mostly; |
39 | static mempool_t *rpc_task_mempool __read_mostly; | 39 | static mempool_t *rpc_task_mempool __read_mostly; |
40 | static mempool_t *rpc_buffer_mempool __read_mostly; | 40 | static mempool_t *rpc_buffer_mempool __read_mostly; |
41 | 41 | ||
diff --git a/net/sunrpc/svcauth.c b/net/sunrpc/svcauth.c index ee9bb1522d5e..c7bb5f7f21a5 100644 --- a/net/sunrpc/svcauth.c +++ b/net/sunrpc/svcauth.c | |||
@@ -119,7 +119,8 @@ EXPORT_SYMBOL(svc_auth_unregister); | |||
119 | #define DN_HASHMASK (DN_HASHMAX-1) | 119 | #define DN_HASHMASK (DN_HASHMAX-1) |
120 | 120 | ||
121 | static struct hlist_head auth_domain_table[DN_HASHMAX]; | 121 | static struct hlist_head auth_domain_table[DN_HASHMAX]; |
122 | static spinlock_t auth_domain_lock = SPIN_LOCK_UNLOCKED; | 122 | static spinlock_t auth_domain_lock = |
123 | __SPIN_LOCK_UNLOCKED(auth_domain_lock); | ||
123 | 124 | ||
124 | void auth_domain_put(struct auth_domain *dom) | 125 | void auth_domain_put(struct auth_domain *dom) |
125 | { | 126 | { |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 64ca1f61dd94..99f54fb6d669 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/netdevice.h> | 32 | #include <linux/netdevice.h> |
33 | #include <linux/skbuff.h> | 33 | #include <linux/skbuff.h> |
34 | #include <linux/file.h> | 34 | #include <linux/file.h> |
35 | #include <linux/freezer.h> | ||
35 | #include <net/sock.h> | 36 | #include <net/sock.h> |
36 | #include <net/checksum.h> | 37 | #include <net/checksum.h> |
37 | #include <net/ip.h> | 38 | #include <net/ip.h> |
@@ -84,6 +85,35 @@ static struct cache_deferred_req *svc_defer(struct cache_req *req); | |||
84 | */ | 85 | */ |
85 | static int svc_conn_age_period = 6*60; | 86 | static int svc_conn_age_period = 6*60; |
86 | 87 | ||
88 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
89 | static struct lock_class_key svc_key[2]; | ||
90 | static struct lock_class_key svc_slock_key[2]; | ||
91 | |||
92 | static inline void svc_reclassify_socket(struct socket *sock) | ||
93 | { | ||
94 | struct sock *sk = sock->sk; | ||
95 | BUG_ON(sk->sk_lock.owner != NULL); | ||
96 | switch (sk->sk_family) { | ||
97 | case AF_INET: | ||
98 | sock_lock_init_class_and_name(sk, "slock-AF_INET-NFSD", | ||
99 | &svc_slock_key[0], "sk_lock-AF_INET-NFSD", &svc_key[0]); | ||
100 | break; | ||
101 | |||
102 | case AF_INET6: | ||
103 | sock_lock_init_class_and_name(sk, "slock-AF_INET6-NFSD", | ||
104 | &svc_slock_key[1], "sk_lock-AF_INET6-NFSD", &svc_key[1]); | ||
105 | break; | ||
106 | |||
107 | default: | ||
108 | BUG(); | ||
109 | } | ||
110 | } | ||
111 | #else | ||
112 | static inline void svc_reclassify_socket(struct socket *sock) | ||
113 | { | ||
114 | } | ||
115 | #endif | ||
116 | |||
87 | /* | 117 | /* |
88 | * Queue up an idle server thread. Must have pool->sp_lock held. | 118 | * Queue up an idle server thread. Must have pool->sp_lock held. |
89 | * Note: this is really a stack rather than a queue, so that we only | 119 | * Note: this is really a stack rather than a queue, so that we only |
@@ -1556,6 +1586,8 @@ svc_create_socket(struct svc_serv *serv, int protocol, struct sockaddr_in *sin) | |||
1556 | if ((error = sock_create_kern(PF_INET, type, protocol, &sock)) < 0) | 1586 | if ((error = sock_create_kern(PF_INET, type, protocol, &sock)) < 0) |
1557 | return error; | 1587 | return error; |
1558 | 1588 | ||
1589 | svc_reclassify_socket(sock); | ||
1590 | |||
1559 | if (type == SOCK_STREAM) | 1591 | if (type == SOCK_STREAM) |
1560 | sock->sk->sk_reuse = 1; /* allow address reuse */ | 1592 | sock->sk->sk_reuse = 1; /* allow address reuse */ |
1561 | error = kernel_bind(sock, (struct sockaddr *) sin, | 1593 | error = kernel_bind(sock, (struct sockaddr *) sin, |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index cfe3c15be948..2fc4a3123261 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -1058,6 +1058,35 @@ static int xs_bindresvport(struct rpc_xprt *xprt, struct socket *sock) | |||
1058 | return err; | 1058 | return err; |
1059 | } | 1059 | } |
1060 | 1060 | ||
1061 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | ||
1062 | static struct lock_class_key xs_key[2]; | ||
1063 | static struct lock_class_key xs_slock_key[2]; | ||
1064 | |||
1065 | static inline void xs_reclassify_socket(struct socket *sock) | ||
1066 | { | ||
1067 | struct sock *sk = sock->sk; | ||
1068 | BUG_ON(sk->sk_lock.owner != NULL); | ||
1069 | switch (sk->sk_family) { | ||
1070 | case AF_INET: | ||
1071 | sock_lock_init_class_and_name(sk, "slock-AF_INET-NFS", | ||
1072 | &xs_slock_key[0], "sk_lock-AF_INET-NFS", &xs_key[0]); | ||
1073 | break; | ||
1074 | |||
1075 | case AF_INET6: | ||
1076 | sock_lock_init_class_and_name(sk, "slock-AF_INET6-NFS", | ||
1077 | &xs_slock_key[1], "sk_lock-AF_INET6-NFS", &xs_key[1]); | ||
1078 | break; | ||
1079 | |||
1080 | default: | ||
1081 | BUG(); | ||
1082 | } | ||
1083 | } | ||
1084 | #else | ||
1085 | static inline void xs_reclassify_socket(struct socket *sock) | ||
1086 | { | ||
1087 | } | ||
1088 | #endif | ||
1089 | |||
1061 | /** | 1090 | /** |
1062 | * xs_udp_connect_worker - set up a UDP socket | 1091 | * xs_udp_connect_worker - set up a UDP socket |
1063 | * @work: RPC transport to connect | 1092 | * @work: RPC transport to connect |
@@ -1081,6 +1110,7 @@ static void xs_udp_connect_worker(struct work_struct *work) | |||
1081 | dprintk("RPC: can't create UDP transport socket (%d).\n", -err); | 1110 | dprintk("RPC: can't create UDP transport socket (%d).\n", -err); |
1082 | goto out; | 1111 | goto out; |
1083 | } | 1112 | } |
1113 | xs_reclassify_socket(sock); | ||
1084 | 1114 | ||
1085 | if (xprt->resvport && xs_bindresvport(xprt, sock) < 0) { | 1115 | if (xprt->resvport && xs_bindresvport(xprt, sock) < 0) { |
1086 | sock_release(sock); | 1116 | sock_release(sock); |
@@ -1165,6 +1195,7 @@ static void xs_tcp_connect_worker(struct work_struct *work) | |||
1165 | dprintk("RPC: can't create TCP transport socket (%d).\n", -err); | 1195 | dprintk("RPC: can't create TCP transport socket (%d).\n", -err); |
1166 | goto out; | 1196 | goto out; |
1167 | } | 1197 | } |
1198 | xs_reclassify_socket(sock); | ||
1168 | 1199 | ||
1169 | if (xprt->resvport && xs_bindresvport(xprt, sock) < 0) { | 1200 | if (xprt->resvport && xs_bindresvport(xprt, sock) < 0) { |
1170 | sock_release(sock); | 1201 | sock_release(sock); |
diff --git a/net/tipc/handler.c b/net/tipc/handler.c index ae6ddf00a1aa..eb80778d6d9c 100644 --- a/net/tipc/handler.c +++ b/net/tipc/handler.c | |||
@@ -42,7 +42,7 @@ struct queue_item { | |||
42 | unsigned long data; | 42 | unsigned long data; |
43 | }; | 43 | }; |
44 | 44 | ||
45 | static kmem_cache_t *tipc_queue_item_cache; | 45 | static struct kmem_cache *tipc_queue_item_cache; |
46 | static struct list_head signal_queue_head; | 46 | static struct list_head signal_queue_head; |
47 | static DEFINE_SPINLOCK(qitem_lock); | 47 | static DEFINE_SPINLOCK(qitem_lock); |
48 | static int handler_enabled = 0; | 48 | static int handler_enabled = 0; |
diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index e8198a2c785d..414f89070380 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <net/ip.h> | 12 | #include <net/ip.h> |
13 | #include <net/xfrm.h> | 13 | #include <net/xfrm.h> |
14 | 14 | ||
15 | static kmem_cache_t *secpath_cachep __read_mostly; | 15 | static struct kmem_cache *secpath_cachep __read_mostly; |
16 | 16 | ||
17 | void __secpath_destroy(struct sec_path *sp) | 17 | void __secpath_destroy(struct sec_path *sp) |
18 | { | 18 | { |
@@ -27,7 +27,7 @@ struct sec_path *secpath_dup(struct sec_path *src) | |||
27 | { | 27 | { |
28 | struct sec_path *sp; | 28 | struct sec_path *sp; |
29 | 29 | ||
30 | sp = kmem_cache_alloc(secpath_cachep, SLAB_ATOMIC); | 30 | sp = kmem_cache_alloc(secpath_cachep, GFP_ATOMIC); |
31 | if (!sp) | 31 | if (!sp) |
32 | return NULL; | 32 | return NULL; |
33 | 33 | ||
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c index 140bb9b384ac..bebd40e5a62e 100644 --- a/net/xfrm/xfrm_policy.c +++ b/net/xfrm/xfrm_policy.c | |||
@@ -40,7 +40,7 @@ EXPORT_SYMBOL(xfrm_policy_count); | |||
40 | static DEFINE_RWLOCK(xfrm_policy_afinfo_lock); | 40 | static DEFINE_RWLOCK(xfrm_policy_afinfo_lock); |
41 | static struct xfrm_policy_afinfo *xfrm_policy_afinfo[NPROTO]; | 41 | static struct xfrm_policy_afinfo *xfrm_policy_afinfo[NPROTO]; |
42 | 42 | ||
43 | static kmem_cache_t *xfrm_dst_cache __read_mostly; | 43 | static struct kmem_cache *xfrm_dst_cache __read_mostly; |
44 | 44 | ||
45 | static struct work_struct xfrm_policy_gc_work; | 45 | static struct work_struct xfrm_policy_gc_work; |
46 | static HLIST_HEAD(xfrm_policy_gc_list); | 46 | static HLIST_HEAD(xfrm_policy_gc_list); |