diff options
author | David S. Miller <davem@davemloft.net> | 2012-02-10 23:32:28 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-02-10 23:32:28 -0500 |
commit | d5ef8a4d87ab21d575ac86366599c9152a28028d (patch) | |
tree | 8b1be85ad1af7ee6a0e3e36c77ae738c966c1f21 /net | |
parent | d9dd966d7fc088a6bed991c2b1e2fba4485e0a31 (diff) | |
parent | 8df54d622a120058ee8bec38743c9b8f091c8e58 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/infiniband/hw/nes/nes_cm.c
Simple whitespace conflict.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ceph/ceph_common.c | 2 | ||||
-rw-r--r-- | net/ceph/mon_client.c | 13 | ||||
-rw-r--r-- | net/core/netprio_cgroup.c | 8 | ||||
-rw-r--r-- | net/core/sock.c | 7 | ||||
-rw-r--r-- | net/ipv4/Kconfig | 2 | ||||
-rw-r--r-- | net/ipv4/arp.c | 3 | ||||
-rw-r--r-- | net/ipv4/ip_options.c | 2 | ||||
-rw-r--r-- | net/ipv4/tcp_ipv4.c | 5 |
8 files changed, 24 insertions, 18 deletions
diff --git a/net/ceph/ceph_common.c b/net/ceph/ceph_common.c index 97f70e50ad3b..761ad9d6cc3b 100644 --- a/net/ceph/ceph_common.c +++ b/net/ceph/ceph_common.c | |||
@@ -85,8 +85,6 @@ int ceph_check_fsid(struct ceph_client *client, struct ceph_fsid *fsid) | |||
85 | } else { | 85 | } else { |
86 | pr_info("client%lld fsid %pU\n", ceph_client_id(client), fsid); | 86 | pr_info("client%lld fsid %pU\n", ceph_client_id(client), fsid); |
87 | memcpy(&client->fsid, fsid, sizeof(*fsid)); | 87 | memcpy(&client->fsid, fsid, sizeof(*fsid)); |
88 | ceph_debugfs_client_init(client); | ||
89 | client->have_fsid = true; | ||
90 | } | 88 | } |
91 | return 0; | 89 | return 0; |
92 | } | 90 | } |
diff --git a/net/ceph/mon_client.c b/net/ceph/mon_client.c index 0b62deae42bd..1845cde26227 100644 --- a/net/ceph/mon_client.c +++ b/net/ceph/mon_client.c | |||
@@ -8,8 +8,8 @@ | |||
8 | 8 | ||
9 | #include <linux/ceph/mon_client.h> | 9 | #include <linux/ceph/mon_client.h> |
10 | #include <linux/ceph/libceph.h> | 10 | #include <linux/ceph/libceph.h> |
11 | #include <linux/ceph/debugfs.h> | ||
11 | #include <linux/ceph/decode.h> | 12 | #include <linux/ceph/decode.h> |
12 | |||
13 | #include <linux/ceph/auth.h> | 13 | #include <linux/ceph/auth.h> |
14 | 14 | ||
15 | /* | 15 | /* |
@@ -340,8 +340,19 @@ static void ceph_monc_handle_map(struct ceph_mon_client *monc, | |||
340 | client->monc.monmap = monmap; | 340 | client->monc.monmap = monmap; |
341 | kfree(old); | 341 | kfree(old); |
342 | 342 | ||
343 | if (!client->have_fsid) { | ||
344 | client->have_fsid = true; | ||
345 | mutex_unlock(&monc->mutex); | ||
346 | /* | ||
347 | * do debugfs initialization without mutex to avoid | ||
348 | * creating a locking dependency | ||
349 | */ | ||
350 | ceph_debugfs_client_init(client); | ||
351 | goto out_unlocked; | ||
352 | } | ||
343 | out: | 353 | out: |
344 | mutex_unlock(&monc->mutex); | 354 | mutex_unlock(&monc->mutex); |
355 | out_unlocked: | ||
345 | wake_up_all(&client->auth_wq); | 356 | wake_up_all(&client->auth_wq); |
346 | } | 357 | } |
347 | 358 | ||
diff --git a/net/core/netprio_cgroup.c b/net/core/netprio_cgroup.c index 9ae183a9a381..4dacc44637ef 100644 --- a/net/core/netprio_cgroup.c +++ b/net/core/netprio_cgroup.c | |||
@@ -108,7 +108,7 @@ static void extend_netdev_table(struct net_device *dev, u32 new_len) | |||
108 | static void update_netdev_tables(void) | 108 | static void update_netdev_tables(void) |
109 | { | 109 | { |
110 | struct net_device *dev; | 110 | struct net_device *dev; |
111 | u32 max_len = atomic_read(&max_prioidx); | 111 | u32 max_len = atomic_read(&max_prioidx) + 1; |
112 | struct netprio_map *map; | 112 | struct netprio_map *map; |
113 | 113 | ||
114 | rtnl_lock(); | 114 | rtnl_lock(); |
@@ -271,7 +271,6 @@ static int netprio_device_event(struct notifier_block *unused, | |||
271 | { | 271 | { |
272 | struct net_device *dev = ptr; | 272 | struct net_device *dev = ptr; |
273 | struct netprio_map *old; | 273 | struct netprio_map *old; |
274 | u32 max_len = atomic_read(&max_prioidx); | ||
275 | 274 | ||
276 | /* | 275 | /* |
277 | * Note this is called with rtnl_lock held so we have update side | 276 | * Note this is called with rtnl_lock held so we have update side |
@@ -279,11 +278,6 @@ static int netprio_device_event(struct notifier_block *unused, | |||
279 | */ | 278 | */ |
280 | 279 | ||
281 | switch (event) { | 280 | switch (event) { |
282 | |||
283 | case NETDEV_REGISTER: | ||
284 | if (max_len) | ||
285 | extend_netdev_table(dev, max_len); | ||
286 | break; | ||
287 | case NETDEV_UNREGISTER: | 281 | case NETDEV_UNREGISTER: |
288 | old = rtnl_dereference(dev->priomap); | 282 | old = rtnl_dereference(dev->priomap); |
289 | RCU_INIT_POINTER(dev->priomap, NULL); | 283 | RCU_INIT_POINTER(dev->priomap, NULL); |
diff --git a/net/core/sock.c b/net/core/sock.c index 3e81fd2e3c75..02f8dfe320b7 100644 --- a/net/core/sock.c +++ b/net/core/sock.c | |||
@@ -1171,13 +1171,10 @@ EXPORT_SYMBOL(sock_update_classid); | |||
1171 | 1171 | ||
1172 | void sock_update_netprioidx(struct sock *sk) | 1172 | void sock_update_netprioidx(struct sock *sk) |
1173 | { | 1173 | { |
1174 | struct cgroup_netprio_state *state; | ||
1175 | if (in_interrupt()) | 1174 | if (in_interrupt()) |
1176 | return; | 1175 | return; |
1177 | rcu_read_lock(); | 1176 | |
1178 | state = task_netprio_state(current); | 1177 | sk->sk_cgrp_prioidx = task_netprioidx(current); |
1179 | sk->sk_cgrp_prioidx = state ? state->prioidx : 0; | ||
1180 | rcu_read_unlock(); | ||
1181 | } | 1178 | } |
1182 | EXPORT_SYMBOL_GPL(sock_update_netprioidx); | 1179 | EXPORT_SYMBOL_GPL(sock_update_netprioidx); |
1183 | #endif | 1180 | #endif |
diff --git a/net/ipv4/Kconfig b/net/ipv4/Kconfig index aa2a2c79776f..d183262943d9 100644 --- a/net/ipv4/Kconfig +++ b/net/ipv4/Kconfig | |||
@@ -409,7 +409,7 @@ config INET_TCP_DIAG | |||
409 | 409 | ||
410 | config INET_UDP_DIAG | 410 | config INET_UDP_DIAG |
411 | tristate "UDP: socket monitoring interface" | 411 | tristate "UDP: socket monitoring interface" |
412 | depends on INET_DIAG | 412 | depends on INET_DIAG && (IPV6 || IPV6=n) |
413 | default n | 413 | default n |
414 | ---help--- | 414 | ---help--- |
415 | Support for UDP socket monitoring interface used by the ss tool. | 415 | Support for UDP socket monitoring interface used by the ss tool. |
diff --git a/net/ipv4/arp.c b/net/ipv4/arp.c index 59402be133f0..63e49890ad31 100644 --- a/net/ipv4/arp.c +++ b/net/ipv4/arp.c | |||
@@ -863,7 +863,8 @@ static int arp_process(struct sk_buff *skb) | |||
863 | if (addr_type == RTN_UNICAST && | 863 | if (addr_type == RTN_UNICAST && |
864 | (arp_fwd_proxy(in_dev, dev, rt) || | 864 | (arp_fwd_proxy(in_dev, dev, rt) || |
865 | arp_fwd_pvlan(in_dev, dev, rt, sip, tip) || | 865 | arp_fwd_pvlan(in_dev, dev, rt, sip, tip) || |
866 | pneigh_lookup(&arp_tbl, net, &tip, dev, 0))) { | 866 | (rt->dst.dev != dev && |
867 | pneigh_lookup(&arp_tbl, net, &tip, dev, 0)))) { | ||
867 | n = neigh_event_ns(&arp_tbl, sha, &sip, dev); | 868 | n = neigh_event_ns(&arp_tbl, sha, &sip, dev); |
868 | if (n) | 869 | if (n) |
869 | neigh_release(n); | 870 | neigh_release(n); |
diff --git a/net/ipv4/ip_options.c b/net/ipv4/ip_options.c index 1e60f7679075..42dd1a90edea 100644 --- a/net/ipv4/ip_options.c +++ b/net/ipv4/ip_options.c | |||
@@ -573,8 +573,8 @@ void ip_forward_options(struct sk_buff *skb) | |||
573 | } | 573 | } |
574 | if (srrptr + 3 <= srrspace) { | 574 | if (srrptr + 3 <= srrspace) { |
575 | opt->is_changed = 1; | 575 | opt->is_changed = 1; |
576 | ip_rt_get_source(&optptr[srrptr-1], skb, rt); | ||
577 | ip_hdr(skb)->daddr = opt->nexthop; | 576 | ip_hdr(skb)->daddr = opt->nexthop; |
577 | ip_rt_get_source(&optptr[srrptr-1], skb, rt); | ||
578 | optptr[2] = srrptr+4; | 578 | optptr[2] = srrptr+4; |
579 | } else if (net_ratelimit()) | 579 | } else if (net_ratelimit()) |
580 | printk(KERN_CRIT "ip_forward(): Argh! Destination lost!\n"); | 580 | printk(KERN_CRIT "ip_forward(): Argh! Destination lost!\n"); |
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c index 90e47931e217..4d6f81c818dc 100644 --- a/net/ipv4/tcp_ipv4.c +++ b/net/ipv4/tcp_ipv4.c | |||
@@ -676,6 +676,11 @@ static void tcp_v4_send_reset(struct sock *sk, struct sk_buff *skb) | |||
676 | arg.iov[0].iov_len, IPPROTO_TCP, 0); | 676 | arg.iov[0].iov_len, IPPROTO_TCP, 0); |
677 | arg.csumoffset = offsetof(struct tcphdr, check) / 2; | 677 | arg.csumoffset = offsetof(struct tcphdr, check) / 2; |
678 | arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0; | 678 | arg.flags = (sk && inet_sk(sk)->transparent) ? IP_REPLY_ARG_NOSRCCHECK : 0; |
679 | /* When socket is gone, all binding information is lost. | ||
680 | * routing might fail in this case. using iif for oif to | ||
681 | * make sure we can deliver it | ||
682 | */ | ||
683 | arg.bound_dev_if = sk ? sk->sk_bound_dev_if : inet_iif(skb); | ||
679 | 684 | ||
680 | net = dev_net(skb_dst(skb)->dev); | 685 | net = dev_net(skb_dst(skb)->dev); |
681 | arg.tos = ip_hdr(skb)->tos; | 686 | arg.tos = ip_hdr(skb)->tos; |