diff options
author | Patrick McHardy <kaber@trash.net> | 2007-04-20 17:14:21 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:29:03 -0400 |
commit | af65bdfce98d7965fbe93a48b8128444a2eea024 (patch) | |
tree | e6ac5ff82a0d5067213135cdf049b912b02e824d /net/ipv4 | |
parent | b076deb8498e26c9aa2f44046fe5e9936ae2fb5a (diff) |
[NETLINK]: Switch cb_lock spinlock to mutex and allow to override it
Switch cb_lock to mutex and allow netlink kernel users to override it
with a subsystem specific mutex for consistent locking in dump callbacks.
All netlink_dump_start users have been audited not to rely on any
side-effects of the previously used spinlock.
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/fib_frontend.c | 3 | ||||
-rw-r--r-- | net/ipv4/inet_diag.c | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ip_queue.c | 2 | ||||
-rw-r--r-- | net/ipv4/netfilter/ipt_ULOG.c | 2 |
4 files changed, 5 insertions, 4 deletions
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c index 5bf718a3e49b..953dd458c239 100644 --- a/net/ipv4/fib_frontend.c +++ b/net/ipv4/fib_frontend.c | |||
@@ -827,7 +827,8 @@ static void nl_fib_input(struct sock *sk, int len) | |||
827 | 827 | ||
828 | static void nl_fib_lookup_init(void) | 828 | static void nl_fib_lookup_init(void) |
829 | { | 829 | { |
830 | netlink_kernel_create(NETLINK_FIB_LOOKUP, 0, nl_fib_input, THIS_MODULE); | 830 | netlink_kernel_create(NETLINK_FIB_LOOKUP, 0, nl_fib_input, NULL, |
831 | THIS_MODULE); | ||
831 | } | 832 | } |
832 | 833 | ||
833 | static void fib_disable_ip(struct net_device *dev, int force) | 834 | static void fib_disable_ip(struct net_device *dev, int force) |
diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c index 0148f0e34ceb..dbeacd8b0f90 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c | |||
@@ -893,7 +893,7 @@ static int __init inet_diag_init(void) | |||
893 | goto out; | 893 | goto out; |
894 | 894 | ||
895 | idiagnl = netlink_kernel_create(NETLINK_INET_DIAG, 0, inet_diag_rcv, | 895 | idiagnl = netlink_kernel_create(NETLINK_INET_DIAG, 0, inet_diag_rcv, |
896 | THIS_MODULE); | 896 | NULL, THIS_MODULE); |
897 | if (idiagnl == NULL) | 897 | if (idiagnl == NULL) |
898 | goto out_free_table; | 898 | goto out_free_table; |
899 | err = 0; | 899 | err = 0; |
diff --git a/net/ipv4/netfilter/ip_queue.c b/net/ipv4/netfilter/ip_queue.c index 0d72693869e6..702d94db19b9 100644 --- a/net/ipv4/netfilter/ip_queue.c +++ b/net/ipv4/netfilter/ip_queue.c | |||
@@ -668,7 +668,7 @@ static int __init ip_queue_init(void) | |||
668 | 668 | ||
669 | netlink_register_notifier(&ipq_nl_notifier); | 669 | netlink_register_notifier(&ipq_nl_notifier); |
670 | ipqnl = netlink_kernel_create(NETLINK_FIREWALL, 0, ipq_rcv_sk, | 670 | ipqnl = netlink_kernel_create(NETLINK_FIREWALL, 0, ipq_rcv_sk, |
671 | THIS_MODULE); | 671 | NULL, THIS_MODULE); |
672 | if (ipqnl == NULL) { | 672 | if (ipqnl == NULL) { |
673 | printk(KERN_ERR "ip_queue: failed to create netlink socket\n"); | 673 | printk(KERN_ERR "ip_queue: failed to create netlink socket\n"); |
674 | goto cleanup_netlink_notifier; | 674 | goto cleanup_netlink_notifier; |
diff --git a/net/ipv4/netfilter/ipt_ULOG.c b/net/ipv4/netfilter/ipt_ULOG.c index a2bcba70af50..23b607b33b32 100644 --- a/net/ipv4/netfilter/ipt_ULOG.c +++ b/net/ipv4/netfilter/ipt_ULOG.c | |||
@@ -420,7 +420,7 @@ static int __init ipt_ulog_init(void) | |||
420 | setup_timer(&ulog_buffers[i].timer, ulog_timer, i); | 420 | setup_timer(&ulog_buffers[i].timer, ulog_timer, i); |
421 | 421 | ||
422 | nflognl = netlink_kernel_create(NETLINK_NFLOG, ULOG_MAXNLGROUPS, NULL, | 422 | nflognl = netlink_kernel_create(NETLINK_NFLOG, ULOG_MAXNLGROUPS, NULL, |
423 | THIS_MODULE); | 423 | NULL, THIS_MODULE); |
424 | if (!nflognl) | 424 | if (!nflognl) |
425 | return -ENOMEM; | 425 | return -ENOMEM; |
426 | 426 | ||