mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 22:51:37 +00:00
[SCTP]: Fix couple of races between sctp_peeloff() and sctp_rcv().
Validate and update the sk in sctp_rcv() to avoid the race where an assoc/ep could move to a different socket after we get the sk, but before the skb is added to the backlog. Also migrate the skb's in backlog queue to new sk when doing a peeloff. Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
This commit is contained in:
parent
313e7b4d25
commit
c4d2444e99
3 changed files with 40 additions and 1 deletions
|
@ -5602,8 +5602,12 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
|
|||
*/
|
||||
newsp->type = type;
|
||||
|
||||
spin_lock_bh(&oldsk->sk_lock.slock);
|
||||
/* Migrate the backlog from oldsk to newsk. */
|
||||
sctp_backlog_migrate(assoc, oldsk, newsk);
|
||||
/* Migrate the association to the new socket. */
|
||||
sctp_assoc_migrate(assoc, newsk);
|
||||
spin_unlock_bh(&oldsk->sk_lock.slock);
|
||||
|
||||
/* If the association on the newsk is already closed before accept()
|
||||
* is called, set RCV_SHUTDOWN flag.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue