1
0
mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2026-01-12 01:20:14 +00:00
Edward Adam Davis 9a6b60cb14 nilfs2: avoid having an active sc_timer before freeing sci
Because kthread_stop did not stop sc_task properly and returned -EINTR,
the sc_timer was not properly closed, ultimately causing the problem [1]
reported by syzbot when freeing sci due to the sc_timer not being closed.

Because the thread sc_task main function nilfs_segctor_thread() returns 0
when it succeeds, when the return value of kthread_stop() is not 0 in
nilfs_segctor_destroy(), we believe that it has not properly closed
sc_timer.

We use timer_shutdown_sync() to sync wait for sc_timer to shutdown, and
set the value of sc_task to NULL under the protection of lock
sc_state_lock, so as to avoid the issue caused by sc_timer not being
properly shutdowned.

[1]
ODEBUG: free active (active state 0) object: 00000000dacb411a object type: timer_list hint: nilfs_construction_timeout
Call trace:
 nilfs_segctor_destroy fs/nilfs2/segment.c:2811 [inline]
 nilfs_detach_log_writer+0x668/0x8cc fs/nilfs2/segment.c:2877
 nilfs_put_super+0x4c/0x12c fs/nilfs2/super.c:509

Link: https://lkml.kernel.org/r/20251029225226.16044-1-konishi.ryusuke@gmail.com
Fixes: 3f66cc261ccb ("nilfs2: use kthread_create and kthread_stop for the log writer thread")
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Reported-by: syzbot+24d8b70f039151f65590@syzkaller.appspotmail.com
Closes: https://syzkaller.appspot.com/bug?extid=24d8b70f039151f65590
Tested-by: syzbot+24d8b70f039151f65590@syzkaller.appspotmail.com
Signed-off-by: Edward Adam Davis <eadavis@qq.com>
Cc: <stable@vger.kernel.org>	[6.12+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2025-11-09 21:19:46 -08:00
..
2025-07-28 13:43:25 -07:00
2025-07-28 13:43:25 -07:00
2025-07-28 13:43:25 -07:00
2025-11-04 14:25:38 +09:00
2025-07-28 13:43:25 -07:00
2025-10-03 16:32:36 -07:00
2025-10-02 18:44:54 -07:00
2025-09-29 11:55:15 -07:00
2025-09-29 15:24:58 -07:00
2025-09-29 09:03:07 -07:00
\n
2025-07-28 16:16:09 -07:00
2025-09-13 17:32:47 -07:00
2025-09-13 16:55:07 -07:00
2025-10-03 13:54:23 -07:00
2025-09-29 09:03:07 -07:00
2025-09-29 10:27:17 -07:00
2025-10-28 12:13:20 -07:00
2025-09-13 16:55:13 -07:00
2025-07-28 13:43:25 -07:00
2025-09-29 18:08:34 -07:00
2025-11-08 10:17:30 -08:00
2025-07-28 13:43:25 -07:00
2025-09-16 23:59:38 -04:00
2025-09-21 19:24:50 -04:00
2025-07-28 13:43:25 -07:00
2025-07-28 17:11:40 -07:00
2025-09-26 10:21:23 +02:00
2025-09-29 11:20:29 -07:00
2025-10-07 12:48:33 +02:00
2025-09-29 11:34:40 -07:00
2025-09-29 09:42:30 -07:00
2025-10-03 16:32:36 -07:00
2025-09-01 13:08:01 +02:00
2025-07-28 14:10:15 -07:00
2025-09-29 13:43:52 -07:00
2025-10-03 10:19:44 -07:00
2025-10-03 16:32:36 -07:00
2025-10-03 10:51:44 -07:00
2025-10-03 16:32:36 -07:00
2025-10-03 16:32:36 -07:00
2025-08-29 15:08:07 +02:00
2025-10-03 10:19:44 -07:00
2025-07-28 11:22:56 -07:00