Ryusuke Konishi f83913f8c5 nilfs2: fix general protection fault in nilfs_lookup_dirty_data_buffers()
A syzbot stress test reported that create_empty_buffers() called from
nilfs_lookup_dirty_data_buffers() can cause a general protection fault.

Analysis using its reproducer revealed that the back reference "mapping"
from a page/folio has been changed to NULL after dirty page/folio gang
lookup in nilfs_lookup_dirty_data_buffers().

Fix this issue by excluding pages/folios from being collected if, after
acquiring a lock on each page/folio, its back reference "mapping" differs
from the pointer to the address space struct that held the page/folio.

Link: https://lkml.kernel.org/r/20230805132038.6435-1-konishi.ryusuke@gmail.com
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Reported-by: syzbot+0ad741797f4565e7e2d2@syzkaller.appspotmail.com
Closes: https://lkml.kernel.org/r/0000000000002930a705fc32b231@google.com
Tested-by: Ryusuke Konishi <konishi.ryusuke@gmail.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-08-21 13:07:21 -07:00
..
2023-07-27 11:44:08 -07:00
2023-06-26 10:14:36 -07:00
2023-05-24 08:42:16 -06:00
2023-06-29 13:27:50 -07:00
\n
2023-06-29 13:39:51 -07:00
2023-07-05 14:14:37 -07:00
2023-07-19 11:00:27 -07:00
2023-07-04 11:45:16 -07:00
2023-06-27 17:10:27 -07:00
2023-06-26 11:52:12 -07:00
2023-06-29 13:10:32 -07:00
2023-07-03 12:56:23 -07:00
2023-07-01 14:38:25 -07:00
2023-07-01 14:38:25 -07:00
2023-07-25 13:54:04 -07:00
2023-07-07 14:59:38 -07:00
2023-06-27 21:21:32 -07:00
2023-03-14 12:56:30 -06:00
2023-06-05 16:50:30 +02:00
2023-07-29 20:49:13 -07:00
2023-06-15 13:37:53 +02:00
2023-06-26 11:52:12 -07:00
\n
2023-06-29 13:39:51 -07:00
2023-06-27 21:24:18 -07:00
2023-03-30 08:51:48 +02:00
2023-06-28 20:35:21 -07:00
\n
2023-06-29 13:39:51 -07:00
2023-06-26 09:50:21 -07:00
2023-05-17 09:16:59 +02:00
2022-10-10 19:45:17 -07:00
2023-06-26 09:50:21 -07:00
\n
2023-06-29 13:31:44 -07:00
2023-02-20 11:53:11 -08:00
2023-06-26 10:14:36 -07:00
2022-10-10 14:21:11 -07:00
2023-06-26 12:47:20 -07:00
2023-01-19 09:24:30 +01:00
2023-07-04 10:20:29 +02:00
2023-06-26 10:27:04 -07:00
\n
2023-06-29 13:31:44 -07:00
2023-05-19 04:30:22 +02:00
2023-05-19 04:30:22 +02:00
2023-03-06 09:59:20 +01:00
2023-02-20 11:53:11 -08:00
\n
2023-06-29 13:39:51 -07:00
2023-02-20 11:53:11 -08:00