nvme-multipath: avoid crash on invalid subsystem cntlid enumeration
A process holding an open reference to a removed disk prevents it from completing deletion, so its name continues to exist. A subsequent gendisk creation may have the same cntlid which risks collision when using that for the name. Use the unique ctrl->instance instead. Signed-off-by: Hannes Reinecke <hare@suse.com> Reviewed-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
8730c1ddb6
commit
8a03b27ea6
|
@ -31,7 +31,7 @@ void nvme_set_disk_name(char *disk_name, struct nvme_ns *ns,
|
|||
sprintf(disk_name, "nvme%dn%d", ctrl->instance, ns->head->instance);
|
||||
} else if (ns->head->disk) {
|
||||
sprintf(disk_name, "nvme%dc%dn%d", ctrl->subsys->instance,
|
||||
ctrl->cntlid, ns->head->instance);
|
||||
ctrl->instance, ns->head->instance);
|
||||
*flags = GENHD_FL_HIDDEN;
|
||||
} else {
|
||||
sprintf(disk_name, "nvme%dn%d", ctrl->subsys->instance,
|
||||
|
|
Loading…
Reference in New Issue