[PATCH] nvmet: Finish the blk plug when integrity allocation fails
Hannes Reinecke
hare at suse.de
Wed Oct 28 00:43:29 PDT 2026
On 10/28/26 7:44 AM, Guixin Liu wrote:
> 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: c6e3f13398123 ("nvmet: add metadata support for block devices")
> Cc: stable at vger.kernel.org
> Signed-off-by: Guixin Liu <kanie at linux.alibaba.com>
> ---
> drivers/nvme/target/io-cmd-bdev.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/nvme/target/io-cmd-bdev.c b/drivers/nvme/target/io-cmd-bdev.c
> index f2d9e8901df4e..4b7483bc9cc31 100644
> --- a/drivers/nvme/target/io-cmd-bdev.c
> +++ b/drivers/nvme/target/io-cmd-bdev.c
> @@ -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);
> }
>
Reviewed-by: Hannes Reinecke <hare at kernel.org>
Cheers,
Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare at suse.de +49 911 74053 688
SUSE Software Solutions GmbH, Frankenstr. 146, 90461 Nürnberg
HRB 36809 (AG Nürnberg), GF: I. Totev, A. McDonald, W. Knoblich
More information about the Linux-nvme
mailing list