lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 23 Jan 2019 00:30:35 -0500 From: "Theodore Y. Ts'o" <tytso@....edu> To: Xiaoguang Wang <xiaoguang.wang@...ux.alibaba.com> CC: <linux-ext4@...r.kernel.org>, <jack@...e.cz> Subject: Re: [PATCH v2] jbd2: fix deadlock while checkpoint thread waits commit thread to finish On Sun, Nov 25, 2018 at 04:36:06PM +0800, Xiaoguang Wang wrote: > This issue was found when I tried to put checkpoint work in a separate thread, > the deadlock below happened: > Thread1 | Thread2 > __jbd2_log_wait_for_space | > jbd2_log_do_checkpoint (hold j_checkpoint_mutex)| > if (jh->b_transaction != NULL) | > ... | > jbd2_log_start_commit(journal, tid); |jbd2_update_log_tail > | will lock j_checkpoint_mutex, > | but will be blocked here. > | > jbd2_log_wait_commit(journal, tid); | > wait_event(journal->j_wait_done_commit, | > !tid_gt(tid, journal->j_commit_sequence)); | > ... |wake_up(j_wait_done_commit) > } | > > then deadlock occurs, Thread1 will never be waken up. > > To fix this issue, drop j_checkpoint_mutex in jbd2_log_do_checkpoint() > when we are going to wait for transaction commit. > > Reviewed-by: Jan Kara <jack@...e.cz> > Signed-off-by: Xiaoguang Wang <xiaoguang.wang@...ux.alibaba.com> Thanks, applied. - Ted
Powered by blists - more mailing lists