From: Chuck Lever <chuck.lever@xxxxxxxxxx> A recently-added error flow needs to fput() the block device just like the other error flows in this area; otherwise the device is leaked. Fixes: d76c769c8db4 ("pnfs/blocklayout: Don't add zero-length pnfs_block_dev") Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> --- fs/nfs/blocklayout/dev.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fs/nfs/blocklayout/dev.c b/fs/nfs/blocklayout/dev.c index 93ef7f864980..519c310c745d 100644 --- a/fs/nfs/blocklayout/dev.c +++ b/fs/nfs/blocklayout/dev.c @@ -351,8 +351,10 @@ bl_parse_scsi(struct nfs_server *server, struct pnfs_block_dev *d, d->map = bl_map_simple; d->pr_key = v->scsi.pr_key; - if (d->len == 0) - return -ENODEV; + if (d->len == 0) { + error = -ENODEV; + goto out_blkdev_put; + } pr_info("pNFS: using block device %s (reservation key 0x%llx)\n", file_bdev(d->bdev_file)->bd_disk->disk_name, d->pr_key); -- 2.45.1