[PATCH] erofs: fix crash when enable tracepoint cachefiles_prep_read

JeffleXu jefflexu at linux.alibaba.com
Fri May 27 22:01:14 AEST 2022


Hi, thanks for catching this.


On 5/27/22 6:18 PM, Xin Yin wrote:
> RIP: 0010:trace_event_raw_event_cachefiles_prep_read+0x88/0xe0
> [cachefiles]
> Call Trace:
>   <TASK>
>   cachefiles_prepare_read+0x1d7/0x3a0 [cachefiles]
>   erofs_fscache_read_folios+0x188/0x220 [erofs]
>   erofs_fscache_meta_readpage+0x106/0x160 [erofs]
>   do_read_cache_folio+0x42a/0x590
>   ? bdi_register_va.part.14+0x1a7/0x210
>   ? super_setup_bdi_name+0x76/0xe0
>   erofs_bread+0x5b/0x170 [erofs]
>   erofs_fc_fill_super+0x12b/0xc50 [erofs]
> 
> This tracepoint uses rreq->inode, should set it when allocating.
> 
> Fixes: d435d53228dd ("erofs: change to use asynchronous io for fscache
> readpage/readahead")

The "Fixes" line should better be one single line. But no worry, I think
Gao Xiang will fix this then :)

> Signed-off-by: Xin Yin <yinxin.x at bytedance.com>
> ---
>  fs/erofs/fscache.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/fs/erofs/fscache.c b/fs/erofs/fscache.c
> index a5cc4ed2cd0d..8e01d89c3319 100644
> --- a/fs/erofs/fscache.c
> +++ b/fs/erofs/fscache.c
> @@ -17,6 +17,7 @@ static struct netfs_io_request *erofs_fscache_alloc_request(struct address_space
>  	rreq->start	= start;
>  	rreq->len	= len;
>  	rreq->mapping	= mapping;
> +	rreq->inode	= mapping->host;
>  	INIT_LIST_HEAD(&rreq->subrequests);
>  	refcount_set(&rreq->ref, 1);
>  	return rreq;

Otherwise, LGTM.

Reviewed-by: Jeffle Xu <jefflexu at linux.alibaba.com>

-- 
Thanks,
Jeffle


More information about the Linux-erofs mailing list