Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net:rds: Fix possible deadlock in rds_message_put
Functions rds_still_queued and rds_clear_recv_queue lock a given socket in order to safely iterate over the incoming rds messages. However calling rds_inc_put while under this lock creates a potential deadlock. rds_inc_put may eventually call rds_message_purge, which will lock m_rs_lock. This is the incorrect locking order since m_rs_lock is meant to be locked before the socket. To fix this, we move the message item to a local list or variable that wont need rs_recv_lock protection. Then we can safely call rds_inc_put on any item stored locally after rs_recv_lock is released. Fixes: possible deadlock in rds_message_put Reported-by: syzbot+f9db6ff27b9bfdcfeca0@syzkaller.appspotmail.com Signed-off-by: Allison Henderson <allison.henderson@oracle.com>
- Loading branch information