]> git.itanic.dy.fi Git - linux-stable/commitdiff
cxl: Explicitly initialize resources when media is not ready
authorDave Jiang <dave.jiang@intel.com>
Fri, 26 May 2023 00:33:01 +0000 (17:33 -0700)
committerDan Williams <dan.j.williams@intel.com>
Fri, 26 May 2023 20:34:39 +0000 (13:34 -0700)
When media is not ready do not assume that the capacity information from
the identify command is valid, i.e. ->total_bytes
->partition_align_bytes ->{volatile,persistent}_only_bytes. Explicitly
zero out the capacity resources and exit early.

Given zero-init of those fields this patch is functionally equivalent to
the prior state, but it improves readability and robustness going
forward.

Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Link: https://lore.kernel.org/r/168506118166.3004974.13523455340007852589.stgit@djiang5-mobl3
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
drivers/cxl/core/mbox.c

index 2c8dc7e2b84df412b4e90b4576ee1b32a46324fd..bea9cf31a12df9a3f258e47e98ca5af3582ea856 100644 (file)
@@ -1105,6 +1105,13 @@ int cxl_mem_create_range_info(struct cxl_dev_state *cxlds)
        struct device *dev = cxlds->dev;
        int rc;
 
+       if (!cxlds->media_ready) {
+               cxlds->dpa_res = DEFINE_RES_MEM(0, 0);
+               cxlds->ram_res = DEFINE_RES_MEM(0, 0);
+               cxlds->pmem_res = DEFINE_RES_MEM(0, 0);
+               return 0;
+       }
+
        cxlds->dpa_res =
                (struct resource)DEFINE_RES_MEM(0, cxlds->total_bytes);
 
@@ -1118,12 +1125,10 @@ int cxl_mem_create_range_info(struct cxl_dev_state *cxlds)
                                   cxlds->persistent_only_bytes, "pmem");
        }
 
-       if (cxlds->media_ready) {
-               rc = cxl_mem_get_partition_info(cxlds);
-               if (rc) {
-                       dev_err(dev, "Failed to query partition information\n");
-                       return rc;
-               }
+       rc = cxl_mem_get_partition_info(cxlds);
+       if (rc) {
+               dev_err(dev, "Failed to query partition information\n");
+               return rc;
        }
 
        rc = add_dpa_res(dev, &cxlds->dpa_res, &cxlds->ram_res, 0,