diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/atm/lec.c | 2 | ||||
-rw-r--r-- | net/core/netpoll.c | 2 | ||||
-rw-r--r-- | net/dsa/dsa.c | 2 | ||||
-rw-r--r-- | net/iucv/iucv.c | 2 | ||||
-rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 2 | ||||
-rw-r--r-- | net/socket.c | 24 | ||||
-rw-r--r-- | net/sunrpc/rpc_pipe.c | 14 | ||||
-rw-r--r-- | net/sunrpc/xprtsock.c | 2 |
8 files changed, 38 insertions, 12 deletions
diff --git a/net/atm/lec.c b/net/atm/lec.c index 179e04bc99dd..38754fdb88ba 100644 --- a/net/atm/lec.c +++ b/net/atm/lec.c | |||
@@ -1607,7 +1607,7 @@ static void lec_arp_destroy(struct lec_priv *priv) | |||
1607 | struct lec_arp_table *entry; | 1607 | struct lec_arp_table *entry; |
1608 | int i; | 1608 | int i; |
1609 | 1609 | ||
1610 | cancel_rearming_delayed_work(&priv->lec_arp_work); | 1610 | cancel_delayed_work_sync(&priv->lec_arp_work); |
1611 | 1611 | ||
1612 | /* | 1612 | /* |
1613 | * Remove all entries | 1613 | * Remove all entries |
diff --git a/net/core/netpoll.c b/net/core/netpoll.c index 72d9b50109fc..02dc2cbcbe86 100644 --- a/net/core/netpoll.c +++ b/net/core/netpoll.c | |||
@@ -923,7 +923,7 @@ void __netpoll_cleanup(struct netpoll *np) | |||
923 | 923 | ||
924 | skb_queue_purge(&npinfo->arp_tx); | 924 | skb_queue_purge(&npinfo->arp_tx); |
925 | skb_queue_purge(&npinfo->txq); | 925 | skb_queue_purge(&npinfo->txq); |
926 | cancel_rearming_delayed_work(&npinfo->tx_work); | 926 | cancel_delayed_work_sync(&npinfo->tx_work); |
927 | 927 | ||
928 | /* clean after last, unfinished work */ | 928 | /* clean after last, unfinished work */ |
929 | __skb_queue_purge(&npinfo->txq); | 929 | __skb_queue_purge(&npinfo->txq); |
diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index 6112a12578b2..0c877a74e1f4 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c | |||
@@ -390,7 +390,7 @@ static int dsa_remove(struct platform_device *pdev) | |||
390 | if (dst->link_poll_needed) | 390 | if (dst->link_poll_needed) |
391 | del_timer_sync(&dst->link_poll_timer); | 391 | del_timer_sync(&dst->link_poll_timer); |
392 | 392 | ||
393 | flush_scheduled_work(); | 393 | flush_work_sync(&dst->link_poll_work); |
394 | 394 | ||
395 | for (i = 0; i < dst->pd->nr_chips; i++) { | 395 | for (i = 0; i < dst->pd->nr_chips; i++) { |
396 | struct dsa_switch *ds = dst->ds[i]; | 396 | struct dsa_switch *ds = dst->ds[i]; |
diff --git a/net/iucv/iucv.c b/net/iucv/iucv.c index f7db676de77d..1ee5dab3cfae 100644 --- a/net/iucv/iucv.c +++ b/net/iucv/iucv.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #define KMSG_COMPONENT "iucv" | 36 | #define KMSG_COMPONENT "iucv" |
37 | #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt | 37 | #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt |
38 | 38 | ||
39 | #include <linux/kernel_stat.h> | ||
39 | #include <linux/module.h> | 40 | #include <linux/module.h> |
40 | #include <linux/moduleparam.h> | 41 | #include <linux/moduleparam.h> |
41 | #include <linux/spinlock.h> | 42 | #include <linux/spinlock.h> |
@@ -1804,6 +1805,7 @@ static void iucv_external_interrupt(unsigned int ext_int_code, | |||
1804 | struct iucv_irq_data *p; | 1805 | struct iucv_irq_data *p; |
1805 | struct iucv_irq_list *work; | 1806 | struct iucv_irq_list *work; |
1806 | 1807 | ||
1808 | kstat_cpu(smp_processor_id()).irqs[EXTINT_IUC]++; | ||
1807 | p = iucv_irq_data[smp_processor_id()]; | 1809 | p = iucv_irq_data[smp_processor_id()]; |
1808 | if (p->ippathid >= iucv_max_pathid) { | 1810 | if (p->ippathid >= iucv_max_pathid) { |
1809 | WARN_ON(p->ippathid >= iucv_max_pathid); | 1811 | WARN_ON(p->ippathid >= iucv_max_pathid); |
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index c6f293639220..22f7ad5101ab 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
@@ -3430,7 +3430,7 @@ void ip_vs_control_cleanup(void) | |||
3430 | { | 3430 | { |
3431 | EnterFunction(2); | 3431 | EnterFunction(2); |
3432 | ip_vs_trash_cleanup(); | 3432 | ip_vs_trash_cleanup(); |
3433 | cancel_rearming_delayed_work(&defense_work); | 3433 | cancel_delayed_work_sync(&defense_work); |
3434 | cancel_work_sync(&defense_work.work); | 3434 | cancel_work_sync(&defense_work.work); |
3435 | ip_vs_kill_estimator(&ip_vs_stats); | 3435 | ip_vs_kill_estimator(&ip_vs_stats); |
3436 | unregister_sysctl_table(sysctl_header); | 3436 | unregister_sysctl_table(sysctl_header); |
diff --git a/net/socket.c b/net/socket.c index c1663c0ff3d3..ccc576a6a508 100644 --- a/net/socket.c +++ b/net/socket.c | |||
@@ -262,6 +262,7 @@ static struct inode *sock_alloc_inode(struct super_block *sb) | |||
262 | } | 262 | } |
263 | 263 | ||
264 | 264 | ||
265 | |||
265 | static void wq_free_rcu(struct rcu_head *head) | 266 | static void wq_free_rcu(struct rcu_head *head) |
266 | { | 267 | { |
267 | struct socket_wq *wq = container_of(head, struct socket_wq, rcu); | 268 | struct socket_wq *wq = container_of(head, struct socket_wq, rcu); |
@@ -360,14 +361,14 @@ static int sock_alloc_file(struct socket *sock, struct file **f, int flags) | |||
360 | if (unlikely(fd < 0)) | 361 | if (unlikely(fd < 0)) |
361 | return fd; | 362 | return fd; |
362 | 363 | ||
363 | path.dentry = d_alloc(sock_mnt->mnt_sb->s_root, &name); | 364 | path.dentry = d_alloc_pseudo(sock_mnt->mnt_sb, &name); |
364 | if (unlikely(!path.dentry)) { | 365 | if (unlikely(!path.dentry)) { |
365 | put_unused_fd(fd); | 366 | put_unused_fd(fd); |
366 | return -ENOMEM; | 367 | return -ENOMEM; |
367 | } | 368 | } |
368 | path.mnt = mntget(sock_mnt); | 369 | path.mnt = mntget(sock_mnt); |
369 | 370 | ||
370 | path.dentry->d_op = &sockfs_dentry_operations; | 371 | d_set_d_op(path.dentry, &sockfs_dentry_operations); |
371 | d_instantiate(path.dentry, SOCK_INODE(sock)); | 372 | d_instantiate(path.dentry, SOCK_INODE(sock)); |
372 | SOCK_INODE(sock)->i_fop = &socket_file_ops; | 373 | SOCK_INODE(sock)->i_fop = &socket_file_ops; |
373 | 374 | ||
@@ -2390,6 +2391,8 @@ EXPORT_SYMBOL(sock_unregister); | |||
2390 | 2391 | ||
2391 | static int __init sock_init(void) | 2392 | static int __init sock_init(void) |
2392 | { | 2393 | { |
2394 | int err; | ||
2395 | |||
2393 | /* | 2396 | /* |
2394 | * Initialize sock SLAB cache. | 2397 | * Initialize sock SLAB cache. |
2395 | */ | 2398 | */ |
@@ -2406,8 +2409,15 @@ static int __init sock_init(void) | |||
2406 | */ | 2409 | */ |
2407 | 2410 | ||
2408 | init_inodecache(); | 2411 | init_inodecache(); |
2409 | register_filesystem(&sock_fs_type); | 2412 | |
2413 | err = register_filesystem(&sock_fs_type); | ||
2414 | if (err) | ||
2415 | goto out_fs; | ||
2410 | sock_mnt = kern_mount(&sock_fs_type); | 2416 | sock_mnt = kern_mount(&sock_fs_type); |
2417 | if (IS_ERR(sock_mnt)) { | ||
2418 | err = PTR_ERR(sock_mnt); | ||
2419 | goto out_mount; | ||
2420 | } | ||
2411 | 2421 | ||
2412 | /* The real protocol initialization is performed in later initcalls. | 2422 | /* The real protocol initialization is performed in later initcalls. |
2413 | */ | 2423 | */ |
@@ -2420,7 +2430,13 @@ static int __init sock_init(void) | |||
2420 | skb_timestamping_init(); | 2430 | skb_timestamping_init(); |
2421 | #endif | 2431 | #endif |
2422 | 2432 | ||
2423 | return 0; | 2433 | out: |
2434 | return err; | ||
2435 | |||
2436 | out_mount: | ||
2437 | unregister_filesystem(&sock_fs_type); | ||
2438 | out_fs: | ||
2439 | goto out; | ||
2424 | } | 2440 | } |
2425 | 2441 | ||
2426 | core_initcall(sock_init); /* early initcall */ | 2442 | core_initcall(sock_init); /* early initcall */ |
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 10a17a37ec4e..09f01f41e55a 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c | |||
@@ -162,11 +162,19 @@ rpc_alloc_inode(struct super_block *sb) | |||
162 | } | 162 | } |
163 | 163 | ||
164 | static void | 164 | static void |
165 | rpc_destroy_inode(struct inode *inode) | 165 | rpc_i_callback(struct rcu_head *head) |
166 | { | 166 | { |
167 | struct inode *inode = container_of(head, struct inode, i_rcu); | ||
168 | INIT_LIST_HEAD(&inode->i_dentry); | ||
167 | kmem_cache_free(rpc_inode_cachep, RPC_I(inode)); | 169 | kmem_cache_free(rpc_inode_cachep, RPC_I(inode)); |
168 | } | 170 | } |
169 | 171 | ||
172 | static void | ||
173 | rpc_destroy_inode(struct inode *inode) | ||
174 | { | ||
175 | call_rcu(&inode->i_rcu, rpc_i_callback); | ||
176 | } | ||
177 | |||
170 | static int | 178 | static int |
171 | rpc_pipe_open(struct inode *inode, struct file *filp) | 179 | rpc_pipe_open(struct inode *inode, struct file *filp) |
172 | { | 180 | { |
@@ -430,7 +438,7 @@ void rpc_put_mount(void) | |||
430 | } | 438 | } |
431 | EXPORT_SYMBOL_GPL(rpc_put_mount); | 439 | EXPORT_SYMBOL_GPL(rpc_put_mount); |
432 | 440 | ||
433 | static int rpc_delete_dentry(struct dentry *dentry) | 441 | static int rpc_delete_dentry(const struct dentry *dentry) |
434 | { | 442 | { |
435 | return 1; | 443 | return 1; |
436 | } | 444 | } |
@@ -583,7 +591,7 @@ static struct dentry *__rpc_lookup_create(struct dentry *parent, | |||
583 | } | 591 | } |
584 | } | 592 | } |
585 | if (!dentry->d_inode) | 593 | if (!dentry->d_inode) |
586 | dentry->d_op = &rpc_dentry_operations; | 594 | d_set_d_op(dentry, &rpc_dentry_operations); |
587 | out_err: | 595 | out_err: |
588 | return dentry; | 596 | return dentry; |
589 | } | 597 | } |
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c index dfcab5ac65af..96549df836ee 100644 --- a/net/sunrpc/xprtsock.c +++ b/net/sunrpc/xprtsock.c | |||
@@ -770,7 +770,7 @@ static void xs_destroy(struct rpc_xprt *xprt) | |||
770 | 770 | ||
771 | dprintk("RPC: xs_destroy xprt %p\n", xprt); | 771 | dprintk("RPC: xs_destroy xprt %p\n", xprt); |
772 | 772 | ||
773 | cancel_rearming_delayed_work(&transport->connect_worker); | 773 | cancel_delayed_work_sync(&transport->connect_worker); |
774 | 774 | ||
775 | xs_close(xprt); | 775 | xs_close(xprt); |
776 | xs_free_peer_addresses(xprt); | 776 | xs_free_peer_addresses(xprt); |