| From cb6b823c9a98cd115dbea147d8e1c85e95f2ace6 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 19 Sep 2022 12:45:08 -0700 |
| Subject: nvme: copy firmware_rev on each init |
| |
| From: Keith Busch <kbusch@kernel.org> |
| |
| [ Upstream commit a8eb6c1ba48bddea82e8d74cbe6e119f006be97d ] |
| |
| The firmware revision can change on after a reset so copy the most |
| recent info each time instead of just the first time, otherwise the |
| sysfs firmware_rev entry may contain stale data. |
| |
| Reported-by: Jeff Lien <jeff.lien@wdc.com> |
| Signed-off-by: Keith Busch <kbusch@kernel.org> |
| Reviewed-by: Sagi Grimberg <sagi@grimberg.me> |
| Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com> |
| Reviewed-by: Chao Leng <lengchao@huawei.com> |
| Signed-off-by: Christoph Hellwig <hch@lst.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/nvme/host/core.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c |
| index f1717f34b2f3..6627fb531f33 100644 |
| --- a/drivers/nvme/host/core.c |
| +++ b/drivers/nvme/host/core.c |
| @@ -2671,7 +2671,6 @@ static int nvme_init_subsystem(struct nvme_ctrl *ctrl, struct nvme_id_ctrl *id) |
| nvme_init_subnqn(subsys, ctrl, id); |
| memcpy(subsys->serial, id->sn, sizeof(subsys->serial)); |
| memcpy(subsys->model, id->mn, sizeof(subsys->model)); |
| - memcpy(subsys->firmware_rev, id->fr, sizeof(subsys->firmware_rev)); |
| subsys->vendor_id = le16_to_cpu(id->vid); |
| subsys->cmic = id->cmic; |
| subsys->awupf = le16_to_cpu(id->awupf); |
| @@ -2824,6 +2823,8 @@ int nvme_init_identify(struct nvme_ctrl *ctrl) |
| ctrl->quirks |= core_quirks[i].quirks; |
| } |
| } |
| + memcpy(ctrl->subsys->firmware_rev, id->fr, |
| + sizeof(ctrl->subsys->firmware_rev)); |
| |
| if (force_apst && (ctrl->quirks & NVME_QUIRK_NO_DEEPEST_PS)) { |
| dev_warn(ctrl->device, "forcibly allowing all power states due to nvme_core.force_apst -- use at your own risk\n"); |
| -- |
| 2.35.1 |
| |