Re: [f2fs-dev] [PATCH 1/2] f2fs: fix stale ATOMIC_WRITTEN_PAGE private pointer

From: Chao Yu
Date: Fri Mar 17 2017 - 02:51:40 EST


On 2017/3/17 10:09, Jaegeuk Kim wrote:
> When I forced to enable atomic operations intentionally, I could hit the below
> panic, since we didn't clear page->private in f2fs_invalidate_page called by
> file truncation.
>
> The panic occurs due to NULL mapping having page->private.
>
> BUG: unable to handle kernel paging request at ffffffffffffffff
> IP: drop_buffers+0x38/0xe0
> PGD 5d00c067
> PUD 5d00e067
> PMD 0
> CPU: 3 PID: 1648 Comm: fsstress Tainted: G D OE 4.10.0+ #5
> Hardware name: innotek GmbH VirtualBox/VirtualBox, BIOS VirtualBox 12/01/2006
> task: ffff9151952863c0 task.stack: ffffaaec40db4000
> RIP: 0010:drop_buffers+0x38/0xe0
> RSP: 0018:ffffaaec40db74c8 EFLAGS: 00010292
> Call Trace:
> ? page_referenced+0x8b/0x170
> try_to_free_buffers+0xc5/0xe0
> try_to_release_page+0x49/0x50
> shrink_page_list+0x8bc/0x9f0
> shrink_inactive_list+0x1dd/0x500
> ? shrink_active_list+0x2c0/0x430
> shrink_node_memcg+0x5eb/0x7c0
> shrink_node+0xe1/0x320
> do_try_to_free_pages+0xef/0x2e0
> try_to_free_pages+0xe9/0x190
> __alloc_pages_slowpath+0x390/0xe70
> __alloc_pages_nodemask+0x291/0x2b0
> alloc_pages_current+0x95/0x140
> __page_cache_alloc+0xc4/0xe0
> pagecache_get_page+0xab/0x2a0
> grab_cache_page_write_begin+0x20/0x40
> get_read_data_page+0x2e6/0x4c0 [f2fs]
> ? f2fs_mark_inode_dirty_sync+0x16/0x30 [f2fs]
> ? truncate_data_blocks_range+0x238/0x2b0 [f2fs]
> get_lock_data_page+0x30/0x190 [f2fs]
> __exchange_data_block+0xaaf/0xf40 [f2fs]
> f2fs_fallocate+0x418/0xd00 [f2fs]
> vfs_fallocate+0x157/0x220
> SyS_fallocate+0x48/0x80
>
> Signed-off-by: Yunlei He <heyunlei@xxxxxxxxxx>
> Signed-off-by: Jaegeuk Kim <jaegeuk@xxxxxxxxxx>

Reviewed-by: Chao Yu <yuchao0@xxxxxxxxxx>