Re: [syzbot] [block?] general protection fault in rtlock_slowlock_locked
From: Edward Adam Davis
Date: Mon Nov 10 2025 - 08:15:34 EST
#syz test
diff --git a/fs/jfs/jfs_logmgr.c b/fs/jfs/jfs_logmgr.c
index b343c5ea1159..e61a7f02b14d 100644
--- a/fs/jfs/jfs_logmgr.c
+++ b/fs/jfs/jfs_logmgr.c
@@ -1860,6 +1860,7 @@ static void lbmLogShutdown(struct jfs_log * log)
lbuf = log->lbuf_free;
while (lbuf) {
struct lbuf *next = lbuf->l_freelist;
+ lbmIOWait(lbuf, 0);
__free_page(lbuf->l_page);
kfree(lbuf);
lbuf = next;
@@ -2146,10 +2147,9 @@ static int lbmIOWait(struct lbuf * bp, int flag)
jfs_info("lbmIOWait1: bp:0x%p flag:0x%x:0x%x", bp, bp->l_flag, flag);
- LCACHE_LOCK(flags); /* disable+lock */
-
LCACHE_SLEEP_COND(bp->l_ioevent, (bp->l_flag & lbmDONE), flags);
+ LCACHE_LOCK(flags); /* disable+lock */
rc = (bp->l_flag & lbmERROR) ? -EIO : 0;
if (flag & lbmFREE)