net/smc: fix TCP fallback socket release
clcsock can be released while kernel_accept() references it in TCP listen worker. Also, clcsock needs to wake up before released if TCP fallback is used and the clcsock is blocked by accept. Add a lock to safely release clcsock and call kernel_sock_shutdown() to wake up clcsock from accept in smc_release(). Reported-by: syzbot+0bf2e01269f1274b4b03@syzkaller.appspotmail.com Reported-by: syzbot+e3132895630f957306bc@syzkaller.appspotmail.com Signed-off-by: Myungho Jung <mhjungk@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
f7db2beb4c
commit
78abe3d0df
@@ -219,6 +219,10 @@ struct smc_sock { /* smc sock container */
|
||||
* started, waiting for unsent
|
||||
* data to be sent
|
||||
*/
|
||||
struct mutex clcsock_release_lock;
|
||||
/* protects clcsock of a listen
|
||||
* socket
|
||||
* */
|
||||
};
|
||||
|
||||
static inline struct smc_sock *smc_sk(const struct sock *sk)
|
||||
|
Reference in New Issue
Block a user