diff options
| author | Yun Zhou <yun.zhou@windriver.com> | 2026-07-30 17:30:02 +0800 |
|---|---|---|
| committer | Carlos Maiolino <cem@kernel.org> | 2026-08-10 08:43:56 +0200 |
| commit | 0241ea5fb0fe86d2a673163b2f5815111aadc7f7 (patch) | |
| tree | 45c437dc891f5fea2df7f6e7faae76cca6f3b56f /tools/tracing/rtla/tests/scripts/lib/git@git.tavy.me:linux.git | |
| parent | 00f40876f417463ef759dc3b0c4cfe15da48b092 (diff) | |
xfs: restore nofs context unconditionally in xfs_trans_roll
When __xfs_trans_commit() fails in xfs_trans_roll(), the NOFS context
is cleared but only restored in the success path. This leaves the
error path without nofs protection, causing a circular lock dependency
between xfs_nondir_ilock_class and fs_reclaim:
CPU0 CPU1
---- ----
lock(&xfs_nondir_ilock_class);
lock(fs_reclaim);
lock(&xfs_nondir_ilock_class);
lock(fs_reclaim);
Fix this by moving xfs_trans_set_context() before the error check so
that nofs context is always restored on the new transaction.
Reported-by: syzbot+59178abfeb0ea3f0ab20@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=59178abfeb0ea3f0ab20
Fixes: a1ca658d649a ("xfs: fix incorrect context handling in xfs_trans_roll")
Cc: stable@vger.kernel.org
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Yun Zhou <yun.zhou@windriver.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
Diffstat (limited to 'tools/tracing/rtla/tests/scripts/lib/git@git.tavy.me:linux.git')
0 files changed, 0 insertions, 0 deletions
