• R
    block: Don't access request after it might be freed · 893d290f
    Roland Dreier 提交于
    After we've done __elv_add_request() and __blk_run_queue() in
    blk_execute_rq_nowait(), the request might finish and be freed
    immediately.  Therefore checking if the type is REQ_TYPE_PM_RESUME
    isn't safe afterwards, because if it isn't, rq might be gone.
    Instead, check beforehand and stash the result in a temporary.
    
    This fixes crashes in blk_execute_rq_nowait() I get occasionally when
    running with lots of memory debugging options enabled -- I think this
    race is usually harmless because the window for rq to be reallocated
    is so small.
    Signed-off-by: NRoland Dreier <roland@purestorage.com>
    Cc: stable@kernel.org
    Signed-off-by: NJens Axboe <axboe@kernel.dk>
    893d290f
blk-exec.c 3.2 KB