Print this page
11969 Attempting to attach an invalid nvme namespace will cause a panic
Reviewed by: Robert Mustacchi <rm+illumos@fingolfin.org>
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>

*** 4548,4557 **** --- 4548,4560 ---- return (EPERM); if (nsid == 0) return (EINVAL); + if (nvme->n_ns[nsid - 1].ns_ignore) + return (0); + rv = bd_detach_handle(nvme->n_ns[nsid - 1].ns_bd_hdl); if (rv != DDI_SUCCESS) rv = EBUSY; return (rv);
*** 4578,4587 **** --- 4581,4598 ---- if (nvme_init_ns(nvme, nsid) != DDI_SUCCESS) return (EIO); kmem_free(idns, sizeof (nvme_identify_nsid_t)); + if (nvme->n_ns[nsid - 1].ns_ignore) + return (ENOTSUP); + + if (nvme->n_ns[nsid - 1].ns_bd_hdl == NULL) + nvme->n_ns[nsid - 1].ns_bd_hdl = bd_alloc_handle( + &nvme->n_ns[nsid - 1], &nvme_bd_ops, &nvme->n_prp_dma_attr, + KM_SLEEP); + rv = bd_attach_handle(nvme->n_dip, nvme->n_ns[nsid - 1].ns_bd_hdl); if (rv != DDI_SUCCESS) rv = EBUSY; return (rv);