Re: [Cluster-devel] [BUG] fs: dlm: possible ABBA deadlock
On 2021/8/19 23:55, David Teigland wrote: On Thu, Aug 19, 2021 at 04:54:57PM +0800, Jia-Ju Bai wrote: Hello, My static analysis tool reports a possible ABBA deadlock in the dlm filesystem in Linux 5.10: dlm_recover_waiters_pre() mutex_lock(>ls_waiters_mutex); --> line 5130 recover_convert_waiter() _receive_convert_reply() lock_rsb() mutex_lock(>res_mutex); --> line 69 dlm_recover_waiters_post() lock_rsb() mutex_lock(>res_mutex); --> line 69 mutex_lock(>ls_waiters_mutex); --> line 5307 When dlm_recover_waiters_pre() and dlm_recover_waiters_post() are concurrently executed, the deadlock can occur. I am not quite sure whether this possible deadlock is real and how to fix it if it is real. Any feedback would be appreciated, thanks :) They won't be concurrent, "pre" runs before recovery, and "post" is after. Okay, thanks for your reply :) Best wishes, Jia-Ju Bai
Re: [Cluster-devel] [BUG] fs: dlm: possible ABBA deadlock
On Thu, Aug 19, 2021 at 04:54:57PM +0800, Jia-Ju Bai wrote: > Hello, > > My static analysis tool reports a possible ABBA deadlock in the dlm > filesystem in Linux 5.10: > > dlm_recover_waiters_pre() > mutex_lock(>ls_waiters_mutex); --> line 5130 > recover_convert_waiter() > _receive_convert_reply() > lock_rsb() > mutex_lock(>res_mutex); --> line 69 > > dlm_recover_waiters_post() > lock_rsb() > mutex_lock(>res_mutex); --> line 69 > mutex_lock(>ls_waiters_mutex); --> line 5307 > > When dlm_recover_waiters_pre() and dlm_recover_waiters_post() are > concurrently executed, the deadlock can occur. > > I am not quite sure whether this possible deadlock is real and how to fix it > if it is real. > Any feedback would be appreciated, thanks :) They won't be concurrent, "pre" runs before recovery, and "post" is after. Dave
[Cluster-devel] [BUG] fs: dlm: possible ABBA deadlock
Hello, My static analysis tool reports a possible ABBA deadlock in the dlm filesystem in Linux 5.10: dlm_recover_waiters_pre() mutex_lock(>ls_waiters_mutex); --> line 5130 recover_convert_waiter() _receive_convert_reply() lock_rsb() mutex_lock(>res_mutex); --> line 69 dlm_recover_waiters_post() lock_rsb() mutex_lock(>res_mutex); --> line 69 mutex_lock(>ls_waiters_mutex); --> line 5307 When dlm_recover_waiters_pre() and dlm_recover_waiters_post() are concurrently executed, the deadlock can occur. I am not quite sure whether this possible deadlock is real and how to fix it if it is real. Any feedback would be appreciated, thanks :) Reported-by: TOTE Robot Best wishes, Jia-Ju Bai