Web lists-archives.com

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




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>