Neil Horman
4fdcfa1284
drop_monitor: prevent init path from scheduling on the wrong cpu
...
I just noticed after some recent updates, that the init path for the drop
monitor protocol has a minor error. drop monitor maintains a per cpu structure,
that gets initalized from a single cpu. Normally this is fine, as the protocol
isn't in use yet, but I recently made a change that causes a failed skb
allocation to reschedule itself . Given the current code, the implication is
that this workqueue reschedule will take place on the wrong cpu. If drop
monitor is used early during the boot process, its possible that two cpus will
access a single per-cpu structure in parallel, possibly leading to data
corruption.
This patch fixes the situation, by storing the cpu number that a given instance
of this per-cpu data should be accessed from. In the case of a need for a
reschedule, the cpu stored in the struct is assigned the rescheule, rather than
the currently executing cpu
Tested successfully by myself.
Signed-off-by: Neil Horman <nhorman@tuxdriver.com>
CC: David Miller <davem@davemloft.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2012-05-02 21:02:48 -04:00
..
datagram.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
dev.c
net: In unregister_netdevice_notifier unregister the netdevices.
2012-04-13 11:01:43 -04:00
dev_addr_lists.c
net: fix /proc/net/dev regression
2012-04-03 17:23:23 -04:00
drop_monitor.c
drop_monitor: prevent init path from scheduling on the wrong cpu
2012-05-02 21:02:48 -04:00
dst.c
net: Rename dst_get_neighbour{, _raw} to dst_get_neighbour_noref{, _raw}.
2011-12-05 15:20:19 -05:00
ethtool.c
net: Support RX-ALL feature flag.
2012-02-24 01:42:07 -08:00
fib_rules.c
net: Fix files explicitly needing to include module.h
2011-10-31 19:30:28 -04:00
filter.c
bpf jit: Make the filter.c::__load_pointer helper non-static for the jits
2012-04-03 18:01:03 -04:00
flow.c
net: Add a flow_cache_flush_deferred function
2011-12-21 16:48:08 -05:00
flow_dissector.c
net: flow_dissector.c missing include linux/export.h
2012-01-24 16:03:33 -05:00
gen_estimator.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
gen_stats.c
net/core: EXPORT_SYMBOL cleanups
2010-07-12 12:57:55 -07:00
iovec.c
net: get rid of some pointless casts to sockaddr
2012-03-11 19:11:22 -07:00
kmap_skb.h
net: remove the second argument of k[un]map_atomic()
2012-03-20 21:48:27 +08:00
link_watch.c
net: linkwatch: allow vlans to get carrier changes faster
2011-09-15 15:36:34 -04:00
Makefile
sock_diag: Move the sock_ code to net/core/
2011-12-06 13:58:02 -05:00
neighbour.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-02-26 21:55:51 -05:00
net-sysfs.c
static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]()
2012-02-24 10:05:59 +01:00
net-sysfs.h
xps: Add CONFIG_XPS
2010-11-28 18:24:14 -08:00
net-traces.c
net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules
2011-10-31 19:30:30 -04:00
net_namespace.c
netns: do not leak net_generic data on failed init
2012-04-18 00:05:33 -04:00
netevent.c
net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules
2011-10-31 19:30:30 -04:00
netpoll.c
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2012-02-19 16:03:15 -05:00
netprio_cgroup.c
Merge branch 'for-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup
2012-03-20 18:11:21 -07:00
pktgen.c
pktgen: Fix unsigned function that is returning negative vals
2012-01-22 15:08:44 -05:00
request_sock.c
ipv4:correct description for tcp_max_syn_backlog
2011-12-06 13:02:28 -05:00
rtnetlink.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
scm.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
secure_seq.c
net: fix some sparse errors
2012-01-17 10:31:12 -05:00
skbuff.c
net: allow pskb_expand_head() to get maximum tailroom
2012-04-11 10:10:43 -04:00
sock.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
sock_diag.c
sock_diag: Introduce the meminfo nla core (v2)
2011-12-30 16:42:19 -05:00
stream.c
net: Fix the condition passed to sk_wait_event()
2010-10-03 20:41:32 -07:00
sysctl_net_core.c
static keys: Introduce 'struct static_key', static_key_true()/false() and static_key_slow_[inc|dec]()
2012-02-24 10:05:59 +01:00
timestamping.c
net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules
2011-10-31 19:30:30 -04:00
user_dma.c
net: Add export.h for EXPORT_SYMBOL/THIS_MODULE to non-modules
2011-10-31 19:30:30 -04:00
utils.c
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00