]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/nvme/host/core.c
nvme: strip trailing 0-bytes in wwid_show
[karo-tx-linux.git] / drivers / nvme / host / core.c
index 3b77cfe5aa1eb2250b6f60d4a596840a57473a03..1e929098369464c551762156c5bedc779e6f7611 100644 (file)
@@ -1995,15 +1995,20 @@ static ssize_t wwid_show(struct device *dev, struct device_attribute *attr,
        int serial_len = sizeof(ctrl->serial);
        int model_len = sizeof(ctrl->model);
 
+       if (!uuid_is_null(&ns->uuid))
+               return sprintf(buf, "uuid.%pU\n", &ns->uuid);
+
        if (memchr_inv(ns->nguid, 0, sizeof(ns->nguid)))
                return sprintf(buf, "eui.%16phN\n", ns->nguid);
 
        if (memchr_inv(ns->eui, 0, sizeof(ns->eui)))
                return sprintf(buf, "eui.%8phN\n", ns->eui);
 
-       while (ctrl->serial[serial_len - 1] == ' ')
+       while (serial_len > 0 && (ctrl->serial[serial_len - 1] == ' ' ||
+                                 ctrl->serial[serial_len - 1] == '\0'))
                serial_len--;
-       while (ctrl->model[model_len - 1] == ' ')
+       while (model_len > 0 && (ctrl->model[model_len - 1] == ' ' ||
+                                ctrl->model[model_len - 1] == '\0'))
                model_len--;
 
        return sprintf(buf, "nvme.%04x-%*phN-%*phN-%08x\n", ctrl->vid,
@@ -2709,7 +2714,8 @@ void nvme_kill_queues(struct nvme_ctrl *ctrl)
        mutex_lock(&ctrl->namespaces_mutex);
 
        /* Forcibly unquiesce queues to avoid blocking dispatch */
-       blk_mq_unquiesce_queue(ctrl->admin_q);
+       if (ctrl->admin_q)
+               blk_mq_unquiesce_queue(ctrl->admin_q);
 
        list_for_each_entry(ns, &ctrl->namespaces, list) {
                /*