mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
nvmet: Finish the blk plug when integrity allocation fails
nvmet_bdev_execute_rw() starts a plug before building the bios, but
the two error exits taken when nvmet_bdev_alloc_bip() fails return
without calling blk_finish_plug(). current->plug is left pointing
at the stack frame of the returned function, so the next
blk_flush_plug() walks a stale list.
Route both failures through a common exit that finishes the plug.
Fixes: c6e3f13398 ("nvmet: add metadata support for block devices")
Cc: stable@vger.kernel.org
Reviewed-by: Hannes Reinecke <hare@kernel.org>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Nilay Shroff <nilay@linux.ibm.com>
Signed-off-by: Guixin Liu <kanie@linux.alibaba.com>
Signed-off-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
e35557e41a
commit
18fc5f6f1c
|
|
@ -316,7 +316,7 @@ static void nvmet_bdev_execute_rw(struct nvmet_req *req)
|
|||
&prot_miter);
|
||||
if (unlikely(rc)) {
|
||||
bio_io_error(bio);
|
||||
return;
|
||||
goto out_plug;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -336,11 +336,12 @@ static void nvmet_bdev_execute_rw(struct nvmet_req *req)
|
|||
rc = nvmet_bdev_alloc_bip(req, bio, &prot_miter);
|
||||
if (unlikely(rc)) {
|
||||
bio_io_error(bio);
|
||||
return;
|
||||
goto out_plug;
|
||||
}
|
||||
}
|
||||
|
||||
submit_bio(bio);
|
||||
out_plug:
|
||||
blk_finish_plug(&plug);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user