On Tue, Mar 14, 2023 at 11:21:54AM -0700, Bart Van Assche wrote: > do_req_filebacked() calls blk_mq_complete_request() synchronously or > asynchronously when using asynchronous I/O unless memory allocation fails. > Hence, modify loop_handle_cmd() such that it does not dereference 'cmd' nor > 'rq' after do_req_filebacked() finished unless we are sure that the request > has not yet been completed. This patch fixes the following kernel crash: > > Unable to handle kernel NULL pointer dereference at virtual address 0000000000000054 > Call trace: > css_put.42938+0x1c/0x1ac > loop_process_work+0xc8c/0xfd4 > loop_rootcg_workfn+0x24/0x34 > process_one_work+0x244/0x558 > worker_thread+0x400/0x8fc > kthread+0x16c/0x1e0 > ret_from_fork+0x10/0x20 > > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: Ming Lei <ming.lei@xxxxxxxxxx> > Cc: Jan Kara <jack@xxxxxxx> > Cc: Johannes Weiner <hannes@xxxxxxxxxxx> > Cc: Dan Schatzberg <schatzberg.dan@xxxxxxxxx> > Fixes: c74d40e8b5e2 ("loop: charge i/o to mem and blk cg") > Fixes: bc07c10a3603 ("block: loop: support DIO & AIO") > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> Reviewed-by: Ming Lei <ming.lei@xxxxxxxxxx> Thanks, Ming