mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/
synced 2026-04-18 06:33:43 -04:00
[SCTP]: Add RCU synchronization around sctp_localaddr_list
sctp_localaddr_list is modified dynamically via NETDEV_UP and NETDEV_DOWN events, but there is not synchronization between writer (even handler) and readers. As a result, the readers can access an entry that has been freed and crash the sytem. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Sridhar Samdurala <sri@us.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
ddeee3ce7f
commit
2930354799
@@ -163,8 +163,10 @@ int sctp_add_bind_addr(struct sctp_bind_addr *bp, union sctp_addr *new,
|
||||
addr->a.v4.sin_port = htons(bp->port);
|
||||
|
||||
addr->use_as_src = use_as_src;
|
||||
addr->valid = 1;
|
||||
|
||||
INIT_LIST_HEAD(&addr->list);
|
||||
INIT_RCU_HEAD(&addr->rcu);
|
||||
list_add_tail(&addr->list, &bp->address_list);
|
||||
SCTP_DBG_OBJCNT_INC(addr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user