* [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock @ 2023-07-21 5:19 Will Shiu 2023-07-21 10:34 ` Jeff Layton 0 siblings, 1 reply; 5+ messages in thread From: Will Shiu @ 2023-07-21 5:19 UTC (permalink / raw) To: Jeff Layton, Chuck Lever, Alexander Viro, Christian Brauner, Matthias Brugger, AngeloGioacchino Del Regno, linux-fsdevel, linux-kernel, linux-arm-kernel, linux-mediatek Cc: Will Shiu As following backtrace, the struct file_lock request , in posix_lock_inode is free before ftrace function using. Replace the ftrace function ahead free flow could fix the use-after-free issue. [name:report&]=============================================== BUG:KASAN: use-after-free in trace_event_raw_event_filelock_lock+0x80/0x12c [name:report&]Read at addr f6ffff8025622620 by task NativeThread/16753 [name:report_hw_tags&]Pointer tag: [f6], memory tag: [fe] [name:report&] BT: Hardware name: MT6897 (DT) Call trace: dump_backtrace+0xf8/0x148 show_stack+0x18/0x24 dump_stack_lvl+0x60/0x7c print_report+0x2c8/0xa08 kasan_report+0xb0/0x120 __do_kernel_fault+0xc8/0x248 do_bad_area+0x30/0xdc do_tag_check_fault+0x1c/0x30 do_mem_abort+0x58/0xbc el1_abort+0x3c/0x5c el1h_64_sync_handler+0x54/0x90 el1h_64_sync+0x68/0x6c trace_event_raw_event_filelock_lock+0x80/0x12c posix_lock_inode+0xd0c/0xd60 do_lock_file_wait+0xb8/0x190 fcntl_setlk+0x2d8/0x440 ... [name:report&] [name:report&]Allocated by task 16752: ... slab_post_alloc_hook+0x74/0x340 kmem_cache_alloc+0x1b0/0x2f0 posix_lock_inode+0xb0/0xd60 ... [name:report&] [name:report&]Freed by task 16752: ... kmem_cache_free+0x274/0x5b0 locks_dispose_list+0x3c/0x148 posix_lock_inode+0xc40/0xd60 do_lock_file_wait+0xb8/0x190 fcntl_setlk+0x2d8/0x440 do_fcntl+0x150/0xc18 ... Signed-off-by: Will Shiu <Will.Shiu@mediatek.com> --- fs/locks.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/locks.c b/fs/locks.c index df8b26a42524..a552bdb6badc 100644 --- a/fs/locks.c +++ b/fs/locks.c @@ -1301,6 +1301,7 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, out: spin_unlock(&ctx->flc_lock); percpu_up_read(&file_rwsem); + trace_posix_lock_inode(inode, request, error); /* * Free any unused locks. */ @@ -1309,7 +1310,6 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, if (new_fl2) locks_free_lock(new_fl2); locks_dispose_list(&dispose); - trace_posix_lock_inode(inode, request, error); return error; } -- 2.18.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock 2023-07-21 5:19 [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock Will Shiu @ 2023-07-21 10:34 ` Jeff Layton 2023-07-21 12:11 ` Jeff Layton [not found] ` <SI2PR03MB554528497A79492CCAC040808BC22@SI2PR03MB5545.apcprd03.prod.outlook.com> 0 siblings, 2 replies; 5+ messages in thread From: Jeff Layton @ 2023-07-21 10:34 UTC (permalink / raw) To: Will Shiu, Chuck Lever, Alexander Viro, Christian Brauner, Matthias Brugger, AngeloGioacchino Del Regno, linux-fsdevel, linux-kernel, linux-arm-kernel, linux-mediatek On Fri, 2023-07-21 at 13:19 +0800, Will Shiu wrote: > As following backtrace, the struct file_lock request , in posix_lock_inode > is free before ftrace function using. > Replace the ftrace function ahead free flow could fix the use-after-free > issue. > > [name:report&]=============================================== > BUG:KASAN: use-after-free in trace_event_raw_event_filelock_lock+0x80/0x12c > [name:report&]Read at addr f6ffff8025622620 by task NativeThread/16753 > [name:report_hw_tags&]Pointer tag: [f6], memory tag: [fe] > [name:report&] > BT: > Hardware name: MT6897 (DT) > Call trace: > dump_backtrace+0xf8/0x148 > show_stack+0x18/0x24 > dump_stack_lvl+0x60/0x7c > print_report+0x2c8/0xa08 > kasan_report+0xb0/0x120 > __do_kernel_fault+0xc8/0x248 > do_bad_area+0x30/0xdc > do_tag_check_fault+0x1c/0x30 > do_mem_abort+0x58/0xbc > el1_abort+0x3c/0x5c > el1h_64_sync_handler+0x54/0x90 > el1h_64_sync+0x68/0x6c > trace_event_raw_event_filelock_lock+0x80/0x12c > posix_lock_inode+0xd0c/0xd60 > do_lock_file_wait+0xb8/0x190 > fcntl_setlk+0x2d8/0x440 > ... > [name:report&] > [name:report&]Allocated by task 16752: > ... > slab_post_alloc_hook+0x74/0x340 > kmem_cache_alloc+0x1b0/0x2f0 > posix_lock_inode+0xb0/0xd60 > ... > [name:report&] > [name:report&]Freed by task 16752: > ... > kmem_cache_free+0x274/0x5b0 > locks_dispose_list+0x3c/0x148 > posix_lock_inode+0xc40/0xd60 > do_lock_file_wait+0xb8/0x190 > fcntl_setlk+0x2d8/0x440 > do_fcntl+0x150/0xc18 > ... > > Signed-off-by: Will Shiu <Will.Shiu@mediatek.com> > --- > fs/locks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/locks.c b/fs/locks.c > index df8b26a42524..a552bdb6badc 100644 > --- a/fs/locks.c > +++ b/fs/locks.c > @@ -1301,6 +1301,7 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, > out: > spin_unlock(&ctx->flc_lock); > percpu_up_read(&file_rwsem); > + trace_posix_lock_inode(inode, request, error); > /* > * Free any unused locks. > */ > @@ -1309,7 +1310,6 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, > if (new_fl2) > locks_free_lock(new_fl2); > locks_dispose_list(&dispose); > - trace_posix_lock_inode(inode, request, error); > > return error; > } Could you send along the entire KASAN log message? I'm not sure I see how this is being tripped. The lock we're passing in here is "request" and that shouldn't be freed since it's allocated and owned by the caller. -- Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock 2023-07-21 10:34 ` Jeff Layton @ 2023-07-21 12:11 ` Jeff Layton 2023-07-27 2:15 ` Will Shiu (許恭瑜) [not found] ` <SI2PR03MB554528497A79492CCAC040808BC22@SI2PR03MB5545.apcprd03.prod.outlook.com> 1 sibling, 1 reply; 5+ messages in thread From: Jeff Layton @ 2023-07-21 12:11 UTC (permalink / raw) To: Will Shiu, Chuck Lever, Alexander Viro, Christian Brauner, Matthias Brugger, AngeloGioacchino Del Regno, linux-fsdevel, linux-kernel, linux-arm-kernel, linux-mediatek On Fri, 2023-07-21 at 06:34 -0400, Jeff Layton wrote: > > Could you send along the entire KASAN log message? I'm not sure I see > how this is being tripped. The lock we're passing in here is "request" > and that shouldn't be freed since it's allocated and owned by the > caller. > Nevermind. I see how this could happen, and have gone ahead and merged the patch. It should make v6.6. Cheers, -- Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock 2023-07-21 12:11 ` Jeff Layton @ 2023-07-27 2:15 ` Will Shiu (許恭瑜) 0 siblings, 0 replies; 5+ messages in thread From: Will Shiu (許恭瑜) @ 2023-07-27 2:15 UTC (permalink / raw) To: linux-kernel@vger.kernel.org, linux-mediatek@lists.infradead.org, chuck.lever@oracle.com, jlayton@kernel.org, viro@zeniv.linux.org.uk, brauner@kernel.org, linux-fsdevel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com On Fri, 2023-07-21 at 08:11 -0400, Jeff Layton wrote: > > Nevermind. I see how this could happen, and have gone ahead and > merged > the patch. It should make v6.6. > > Cheers, > -- > Jeff Layton <jlayton@kernel.org> Dear Jeff, Really thanks for your reply. we'd want to know could the patch we delivered, which moves ftrace function ahead the removing APIs, be the finial patch and will submit in k6.6. If yes, we would try to ask google owner to patch back the patch in k6.1. Or is there any advice to show us how to fix it. Thanks again. Best Regards, Will Shiu ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <SI2PR03MB554528497A79492CCAC040808BC22@SI2PR03MB5545.apcprd03.prod.outlook.com>]
[parent not found: <SI2PR03MB5260D225AAF32A837882210784C22@SI2PR03MB5260.apcprd03.prod.outlook.com>]
* Re: [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock [not found] ` <SI2PR03MB5260D225AAF32A837882210784C22@SI2PR03MB5260.apcprd03.prod.outlook.com> @ 2024-06-14 10:27 ` Jeff Layton 0 siblings, 0 replies; 5+ messages in thread From: Jeff Layton @ 2024-06-14 10:27 UTC (permalink / raw) To: Light Hsieh (謝明燈) Cc: Ed Tsai (蔡宗軒), linux-fsdevel, chuck.lever, alex.aring On Fri, 2024-06-14 at 06:31 +0000, Light Hsieh (謝明燈) wrote: > Hi, Jeff > > We still get use-after-free issue on trace_posix_lock_inode() within posix_lock_inodes(). > Do you think invoke trace_posix_lock_inode() just before spin_unlock(&ctx->flc_lock) is better? > (cc'ing linux-fsdevel and the other file locking maintainers) Thanks for the bug report! Note that the UAF was detected in the context of pid 26303, but the object was allocated and freed by pid 26304. So, this is a race between threads. I suspect that what's happening is that the "request" pointer is being overwritten by one of the objects on the list and then that lock is being freed after we release the spinlock but before the tracepoint happens. Moving the tracepoint inside the spinlock does sound like what we need to do. Care to propose a patch? Thanks, Jeff > [36705.493785] [T626354] BackgroundHandl: audit: audit_lost=637997 audit_rate_limit=5 audit_backlog_limit=64 > [36705.493799] [T626354] BackgroundHandl: audit: rate limit exceeded > [36705.558088] [T226303] BackgroundHandl: ================================================================== > [36705.558104] [T226303] BackgroundHandl: BUG: KASAN: slab-use-after-free in trace_event_raw_event_filelock_lock+0x7c/0x128 > [36705.558123] [T226303] BackgroundHandl: Read at addr fbffff80d9ea9dc0 by task BackgroundHandl/26303 > [36705.558129] [T226303] BackgroundHandl: Pointer tag: [fb], memory tag: [fe] > [36705.558132] [T226303] BackgroundHandl: > [36705.558136] [T226303] BackgroundHandl: CPU: 2 PID: 26303 Comm: BackgroundHandl Tainted: G W OE 6.6.29-android15-5-gaace8ad45e01 #1 > [36705.558142] [T226303] BackgroundHandl: Hardware name: MT6991(ENG) (DT) > [36705.558145] [T226303] BackgroundHandl: Call trace: > [36705.558148] [T226303] BackgroundHandl: dump_backtrace+0xec/0x138 > [36705.558155] [T226303] BackgroundHandl: show_stack+0x18/0x24 > [36705.558159] [T226303] BackgroundHandl: dump_stack_lvl+0x50/0x6c > [36705.558165] [T226303] BackgroundHandl: print_report+0x1b0/0x714 > [36705.558175] [T226303] BackgroundHandl: kasan_report+0xc4/0x124 > [36705.558179] [T226303] BackgroundHandl: __do_kernel_fault+0xbc/0x2d4 > [36705.558191] [T226303] BackgroundHandl: do_bad_area+0x30/0xdc > [36705.558196] [T226303] BackgroundHandl: do_tag_check_fault+0x20/0x34 > [36705.558200] [T226303] BackgroundHandl: do_mem_abort+0x58/0x118 > [36705.558205] [T226303] BackgroundHandl: el1_abort+0x3c/0x5c > [36705.558209] [T226303] BackgroundHandl: el1h_64_sync_handler+0x54/0x90 > [36705.558213] [T226303] BackgroundHandl: el1h_64_sync+0x68/0x6c > [36705.558217] [T226303] BackgroundHandl: trace_event_raw_event_filelock_lock+0x7c/0x128 > [36705.558222] [T226303] BackgroundHandl: posix_lock_inode+0xe34/0xe94 > [36705.558228] [T226303] BackgroundHandl: do_lock_file_wait+0xc4/0x1a4 > [36705.558234] [T226303] BackgroundHandl: fcntl_setlk+0x2dc/0x448 > [36705.558239] [T226303] BackgroundHandl: do_fcntl+0x90/0x570 > [36705.558251] [T226303] BackgroundHandl: __arm64_sys_fcntl+0x7c/0xc8 > [36705.558256] [T226303] BackgroundHandl: invoke_syscall+0x58/0x114 > [36705.558269] [T226303] BackgroundHandl: el0_svc_common+0x80/0xe0 > [36705.558274] [T226303] BackgroundHandl: do_el0_svc+0x1c/0x28 > [36705.558279] [T226303] BackgroundHandl: el0_svc+0x38/0x68 > [36705.558283] [T226303] BackgroundHandl: el0t_64_sync_handler+0x68/0xbc > [36705.558287] [T226303] BackgroundHandl: el0t_64_sync+0x1a8/0x1ac > [36705.558290] [T226303] BackgroundHandl: > [36705.558292] [T226303] BackgroundHandl: Allocated by task 26304: > [36705.558296] [T226303] BackgroundHandl: kasan_save_stack+0x40/0x70 > [36705.558300] [T226303] BackgroundHandl: save_stack_info+0x34/0x128 > [36705.558306] [T226303] BackgroundHandl: kasan_save_alloc_info+0x14/0x20 > [36705.558310] [T226303] BackgroundHandl: __kasan_slab_alloc+0x168/0x174 > [36705.558315] [T226303] BackgroundHandl: slab_post_alloc_hook+0x88/0x3a4 > [36705.558331] [T226303] BackgroundHandl: kmem_cache_alloc+0x18c/0x2c8 > [36705.558336] [T226303] BackgroundHandl: posix_lock_inode+0xb4/0xe94 > [36705.558341] [T226303] BackgroundHandl: do_lock_file_wait+0xc4/0x1a4 > [36705.558346] [T226303] BackgroundHandl: fcntl_setlk+0x2dc/0x448 > [36705.558350] [T226303] BackgroundHandl: do_fcntl+0x90/0x570 > [36705.558355] [T226303] BackgroundHandl: __arm64_sys_fcntl+0x7c/0xc8 > [36705.558360] [T226303] BackgroundHandl: invoke_syscall+0x58/0x114 > [36705.558365] [T226303] BackgroundHandl: el0_svc_common+0x80/0xe0 > [36705.558370] [T226303] BackgroundHandl: do_el0_svc+0x1c/0x28 > [36705.558375] [T226303] BackgroundHandl: el0_svc+0x38/0x68 > [36705.558378] [T226303] BackgroundHandl: el0t_64_sync_handler+0x68/0xbc > [36705.558382] [T226303] BackgroundHandl: el0t_64_sync+0x1a8/0x1ac > [36705.558385] [T226303] BackgroundHandl: > [36705.558387] [T226303] BackgroundHandl: Freed by task 26304: > [36705.558391] [T226303] BackgroundHandl: kasan_save_stack+0x40/0x70 > [36705.558395] [T226303] BackgroundHandl: save_stack_info+0x34/0x128 > [36705.558399] [T226303] BackgroundHandl: kasan_save_free_info+0x18/0x28 > [36705.558403] [T226303] BackgroundHandl: ____kasan_slab_free+0x254/0x25c > [36705.558407] [T226303] BackgroundHandl: __kasan_slab_free+0x10/0x20 > [36705.558411] [T226303] BackgroundHandl: slab_free_freelist_hook+0x174/0x1e0 > [36705.558415] [T226303] BackgroundHandl: kmem_cache_free+0xc4/0x348 > [36705.558420] [T226303] BackgroundHandl: locks_dispose_list+0x3c/0x164 > [36705.558425] [T226303] BackgroundHandl: posix_lock_inode+0xb78/0xe94 > [36705.558429] [T226303] BackgroundHandl: do_lock_file_wait+0xc4/0x1a4 > [36705.558434] [T226303] BackgroundHandl: fcntl_setlk+0x2dc/0x448 > [36705.558439] [T226303] BackgroundHandl: do_fcntl+0x90/0x570 > [36705.558444] [T226303] BackgroundHandl: __arm64_sys_fcntl+0x7c/0xc8 > [36705.558448] [T226303] BackgroundHandl: invoke_syscall+0x58/0x114 > [36705.558454] [T226303] BackgroundHandl: el0_svc_common+0x80/0xe0 > [36705.558459] [T226303] BackgroundHandl: do_el0_svc+0x1c/0x28 > [36705.558464] [T226303] BackgroundHandl: el0_svc+0x38/0x68 > [36705.558468] [T226303] BackgroundHandl: el0t_64_sync_handler+0x68/0xbc > [36705.558472] [T226303] BackgroundHandl: el0t_64_sync+0x1a8/0x1ac > [36705.558475] [T226303] BackgroundHandl: > [36705.558477] [T226303] BackgroundHandl: The buggy address belongs to the object at ffffff80d9ea9dc0 > which belongs to the cache file_lock_cache of size 216 > [36705.558481] [T226303] BackgroundHandl: The buggy address is located 0 bytes inside of > 216-byte region [ffffff80d9ea9dc0, ffffff80d9ea9e98) > [36705.558485] [T226303] BackgroundHandl: > [36705.558487] [T226303] BackgroundHandl: The buggy address belongs to the physical page: > [36705.558491] [T226303] BackgroundHandl: page:000000002f0b235f refcount:1 mapcount:0 mapping:0000000000000000 index:0xf6ffff80d9ea9b20 pfn:0x159ea8 > [36705.558495] [T226303] BackgroundHandl: head:000000002f0b235f order:1 entire_mapcount:0 nr_pages_mapped:0 pincount:0 > [36705.558499] [T226303] BackgroundHandl: flags: 0x4000000000000840(slab|head|zone=1|kasantag=0x0) > [36705.558505] [T226303] BackgroundHandl: page_type: 0xffffffff() > [36705.558509] [T226303] BackgroundHandl: raw: 4000000000000840 f8ffff8012e57b00 fffffffe06a4fb00 0000000000000004 > [36705.558513] [T226303] BackgroundHandl: raw: f6ffff80d9ea9b20 0000000080240021 00000001ffffffff 0000000000000000 > [36705.558516] [T226303] BackgroundHandl: page dumped because: kasan: bad access detected > [36705.558519] [T226303] BackgroundHandl: page_owner tracks the page as allocated > [36705.558522] [T226303] BackgroundHandl: page last allocated via order 1, migratetype Unmovable, gfp_mask 0x1d20c0(__GFP_IO|__GFP_FS|__GFP_NOWARN|__GFP_NORETRY|__GFP_COMP|__GFP_NOMEMALLOC|__GFP_HARDWALL), pid 23092, tgid 23025 (elastic_NPS), ts 15865705548286, free_ts 15865538036285 > [36705.558529] [T226303] BackgroundHandl: post_alloc_hook+0x18c/0x194 > [36705.558542] [T226303] BackgroundHandl: prep_new_page+0x28/0x13c > [36705.558548] [T226303] BackgroundHandl: get_page_from_freelist+0x1928/0x198c > [36705.558553] [T226303] BackgroundHandl: __alloc_pages+0x158/0x310 > [36705.558558] [T226303] BackgroundHandl: alloc_slab_page+0x8c/0x178 > [36705.558562] [T226303] BackgroundHandl: new_slab+0xa4/0x340 > [36705.558565] [T226303] BackgroundHandl: ___slab_alloc+0x648/0x98c > [36705.558569] [T226303] BackgroundHandl: __slab_alloc+0x6c/0xac > [36705.558575] [T226303] BackgroundHandl: kmem_cache_alloc+0x1e8/0x2c8 > [36705.558580] [T226303] BackgroundHandl: posix_lock_inode+0x108/0xe94 > [36705.558584] [T226303] BackgroundHandl: do_lock_file_wait+0xc4/0x1a4 > [36705.558589] [T226303] BackgroundHandl: fcntl_setlk+0x2dc/0x448 > [36705.558594] [T226303] BackgroundHandl: do_fcntl+0x90/0x570 > [36705.558599] [T226303] BackgroundHandl: __arm64_sys_fcntl+0x7c/0xc8 > [36705.558603] [T226303] BackgroundHandl: invoke_syscall+0x58/0x114 > [36705.558609] [T226303] BackgroundHandl: el0_svc_common+0x80/0xe0 > [36705.558614] [T226303] BackgroundHandl: page last free pid 23092 tgid 23025 stack trace: > [36705.558617] [T226303] BackgroundHandl: free_unref_page_prepare+0x2e8/0x310 > [36705.558622] [T226303] BackgroundHandl: free_unref_page_list+0x90/0x374 > [36705.558627] [T226303] BackgroundHandl: release_pages+0x44c/0x488 > [36705.558642] [T226303] BackgroundHandl: free_pages_and_swap_cache+0x58/0x70 > [36705.558648] [T226303] BackgroundHandl: tlb_flush_mmu+0xa0/0x144 > [36705.558662] [T226303] BackgroundHandl: tlb_finish_mmu+0x48/0xb0 > [36705.558667] [T226303] BackgroundHandl: zap_page_range_single+0x168/0x1a0 > [36705.558671] [T226303] BackgroundHandl: do_madvise+0x2f4/0xf00 > [36705.558675] [T226303] BackgroundHandl: __arm64_sys_madvise+0x20/0x34 > [36705.558679] [T226303] BackgroundHandl: invoke_syscall+0x58/0x114 > [36705.558684] [T226303] BackgroundHandl: el0_svc_common+0x80/0xe0 > [36705.558689] [T226303] BackgroundHandl: do_el0_svc+0x1c/0x28 > [36705.558694] [T226303] BackgroundHandl: el0_svc+0x38/0x68 > [36705.558698] [T226303] BackgroundHandl: el0t_64_sync_handler+0x68/0xbc > [36705.558701] [T226303] BackgroundHandl: el0t_64_sync+0x1a8/0x1ac > [36705.558705] [T226303] BackgroundHandl: > [36705.558708] [T226303] BackgroundHandl: Memory state around the buggy address: > [36705.558711] [T226303] BackgroundHandl: ffffff80d9ea9b00: f2 f2 fe fe fe fe fe fe fe fe fe fe fe fe fe fe > [36705.558714] [T226303] BackgroundHandl: ffffff80d9ea9c00: f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f9 f5 f5 > [36705.558718] [T226303] BackgroundHandl: >ffffff80d9ea9d00: f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 f5 fe fe fe fe > [36705.558721] [T226303] BackgroundHandl: ^ > [36705.558724] [T226303] BackgroundHandl: ffffff80d9ea9e00: fe fe fe fe fe fe fe fe fe fe fa fa fa fa fa fa > [36705.558728] [T226303] BackgroundHandl: ffffff80d9ea9f00: fa fa fa fa fa fa fa fa fe fe fe fe fe fe fe fe > [36705.558738] [T226303] BackgroundHandl: ================================================================== > > > > -----Original Message----- > From: Jeff Layton <jlayton@kernel.org> > Sent: Friday, July 21, 2023 6:35 PM > To: Will Shiu (許恭瑜) <Will.Shiu@mediatek.com>; Chuck Lever <chuck.lever@oracle.com>; Alexander Viro <viro@zeniv.linux.org.uk>; Christian Brauner <brauner@kernel.org>; Matthias Brugger <matthias.bgg@gmail.com>; AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>; linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-mediatek@lists.infradead.org > Subject: Re: [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock > > On Fri, 2023-07-21 at 13:19 +0800, Will Shiu wrote: > > As following backtrace, the struct file_lock request , in > > posix_lock_inode is free before ftrace function using. > > Replace the ftrace function ahead free flow could fix the > > use-after-free issue. > > > > [name:report&]=============================================== > > BUG:KASAN: use-after-free in > > trace_event_raw_event_filelock_lock+0x80/0x12c > > [name:report&]Read at addr f6ffff8025622620 by task NativeThread/16753 > > [name:report_hw_tags&]Pointer tag: [f6], memory tag: [fe] > > [name:report&] > > BT: > > Hardware name: MT6897 (DT) > > Call trace: > > dump_backtrace+0xf8/0x148 > > show_stack+0x18/0x24 > > dump_stack_lvl+0x60/0x7c > > print_report+0x2c8/0xa08 > > kasan_report+0xb0/0x120 > > __do_kernel_fault+0xc8/0x248 > > do_bad_area+0x30/0xdc > > do_tag_check_fault+0x1c/0x30 > > do_mem_abort+0x58/0xbc > > el1_abort+0x3c/0x5c > > el1h_64_sync_handler+0x54/0x90 > > el1h_64_sync+0x68/0x6c > > trace_event_raw_event_filelock_lock+0x80/0x12c > > posix_lock_inode+0xd0c/0xd60 > > do_lock_file_wait+0xb8/0x190 > > fcntl_setlk+0x2d8/0x440 > > ... > > [name:report&] > > [name:report&]Allocated by task 16752: > > ... > > slab_post_alloc_hook+0x74/0x340 > > kmem_cache_alloc+0x1b0/0x2f0 > > posix_lock_inode+0xb0/0xd60 > > ... > > [name:report&] > > [name:report&]Freed by task 16752: > > ... > > kmem_cache_free+0x274/0x5b0 > > locks_dispose_list+0x3c/0x148 > > posix_lock_inode+0xc40/0xd60 > > do_lock_file_wait+0xb8/0x190 > > fcntl_setlk+0x2d8/0x440 > > do_fcntl+0x150/0xc18 > > ... > > > > Signed-off-by: Will Shiu <Will.Shiu@mediatek.com> > > --- > > fs/locks.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/fs/locks.c b/fs/locks.c > > index df8b26a42524..a552bdb6badc 100644 > > --- a/fs/locks.c > > +++ b/fs/locks.c > > @@ -1301,6 +1301,7 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, > > out: > > spin_unlock(&ctx->flc_lock); > > percpu_up_read(&file_rwsem); > > + trace_posix_lock_inode(inode, request, error); > > /* > > * Free any unused locks. > > */ > > @@ -1309,7 +1310,6 @@ static int posix_lock_inode(struct inode *inode, struct file_lock *request, > > if (new_fl2) > > locks_free_lock(new_fl2); > > locks_dispose_list(&dispose); > > - trace_posix_lock_inode(inode, request, error); > > > > return error; > > } > > Could you send along the entire KASAN log message? I'm not sure I see how this is being tripped. The lock we're passing in here is "request" > and that shouldn't be freed since it's allocated and owned by the caller. > > -- > Jeff Layton <jlayton@kernel.org> -- Jeff Layton <jlayton@kernel.org> ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-06-14 10:27 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-07-21 5:19 [PATCH] Fix BUG: KASAN: use-after-free in trace_event_raw_event_filelock_lock Will Shiu 2023-07-21 10:34 ` Jeff Layton 2023-07-21 12:11 ` Jeff Layton 2023-07-27 2:15 ` Will Shiu (許恭瑜) [not found] ` <SI2PR03MB554528497A79492CCAC040808BC22@SI2PR03MB5545.apcprd03.prod.outlook.com> [not found] ` <SI2PR03MB5260D225AAF32A837882210784C22@SI2PR03MB5260.apcprd03.prod.outlook.com> 2024-06-14 10:27 ` Jeff Layton
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).