diff options
author | Ying Xue <ying.xue@windriver.com> | 2014-04-21 10:55:49 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-04-22 21:17:53 -0400 |
commit | f1c8d8cb82113ea6f41d2774127d3d08a4ca8d46 (patch) | |
tree | 2d693909807175458e181073041ec2d63cdb3fa0 /net/tipc/bearer.c | |
parent | 7216cd949c9bd56a4ccd952c624ab68f8c9aa0a4 (diff) | |
download | blackbird-op-linux-f1c8d8cb82113ea6f41d2774127d3d08a4ca8d46.tar.gz blackbird-op-linux-f1c8d8cb82113ea6f41d2774127d3d08a4ca8d46.zip |
tipc: make media_ptr pointed netdevice valid
The 'media_ptr' pointer in bearer structure which points to network
device, is protected by RCU. So, before netdevice is released,
synchronize_net() should be involved to prevent no any user of
the netdevice on read side from accessing it after it is freed.
Signed-off-by: Ying Xue <ying.xue@windriver.com>
Reviewed-by: Jon Maloy <jon.maloy@ericsson.com>
Reviewed-by: Erik Hugne <erik.hugne@ericsson.com>
Tested-by: Erik Hugne <erik.hugne@ericsson.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/tipc/bearer.c')
-rw-r--r-- | net/tipc/bearer.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 1bd96eb465e1..402e99472a63 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c @@ -471,6 +471,7 @@ void tipc_disable_l2_media(struct tipc_bearer *b) dev = (struct net_device *)rtnl_dereference(b->media_ptr); RCU_INIT_POINTER(b->media_ptr, NULL); RCU_INIT_POINTER(dev->tipc_ptr, NULL); + synchronize_net(); dev_put(dev); } |