diff options
author | Eric Dumazet <edumazet@google.com> | 2012-10-18 03:21:55 +0000 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2012-11-17 13:14:23 -0800 |
commit | fdc00abab6858f9da6a40e03c831c252b4f419bd (patch) | |
tree | 9dcf20ae9c599eeb60b979c1450339db332b8baa /net/ipv4 | |
parent | b23270416da409bd4e637a5acbe31a1126235fb6 (diff) | |
download | kernel_samsung_espresso10-fdc00abab6858f9da6a40e03c831c252b4f419bd.zip kernel_samsung_espresso10-fdc00abab6858f9da6a40e03c831c252b4f419bd.tar.gz kernel_samsung_espresso10-fdc00abab6858f9da6a40e03c831c252b4f419bd.tar.bz2 |
netlink: use kfree_rcu() in netlink_release()
[ Upstream commit 6d772ac5578f711d1ce7b03535d1c95bffb21dff ]
On some suspend/resume operations involving wimax device, we have
noticed some intermittent memory corruptions in netlink code.
Stéphane Marchesin tracked this corruption in netlink_update_listeners()
and suggested a patch.
It appears netlink_release() should use kfree_rcu() instead of kfree()
for the listeners structure as it may be used by other cpus using RCU
protection.
netlink_release() must set to NULL the listeners pointer when
it is about to be freed.
Also have to protect netlink_update_listeners() and
netlink_has_listeners() if listeners is NULL.
Add a nl_deref_protected() lockdep helper to properly document which
locks protects us.
Reported-by: Jonathan Kliegman <kliegs@google.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Stéphane Marchesin <marcheu@google.com>
Cc: Sam Leffler <sleffler@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'net/ipv4')
0 files changed, 0 insertions, 0 deletions