In preparation to handle CXL labels with the same code that handles EFI
labels, add a specific interleave-set-cookie validation helper
rather than a getter since the CXL label type does not support this
concept. The answer for CXL labels will always be true.

Signed-off-by: Dan Williams <[email protected]>
---
 drivers/nvdimm/namespace_devs.c |    8 +++-----
 drivers/nvdimm/nd.h             |    7 +++++++
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/drivers/nvdimm/namespace_devs.c b/drivers/nvdimm/namespace_devs.c
index 94da804372bf..f33245c27cc4 100644
--- a/drivers/nvdimm/namespace_devs.c
+++ b/drivers/nvdimm/namespace_devs.c
@@ -1847,15 +1847,13 @@ static bool has_uuid_at_pos(struct nd_region 
*nd_region, u8 *uuid,
                list_for_each_entry(label_ent, &nd_mapping->labels, list) {
                        struct nd_namespace_label *nd_label = label_ent->label;
                        u16 position, nlabel;
-                       u64 isetcookie;
 
                        if (!nd_label)
                                continue;
-                       isetcookie = nsl_get_isetcookie(ndd, nd_label);
                        position = nsl_get_position(ndd, nd_label);
                        nlabel = nsl_get_nlabel(ndd, nd_label);
 
-                       if (isetcookie != cookie)
+                       if (!nsl_validate_isetcookie(ndd, nd_label, cookie))
                                continue;
 
                        if (memcmp(nd_label->uuid, uuid, NSLABEL_UUID_LEN) != 0)
@@ -1968,10 +1966,10 @@ static struct device *create_namespace_pmem(struct 
nd_region *nd_region,
                return ERR_PTR(-ENXIO);
        }
 
-       if (nsl_get_isetcookie(ndd, nd_label) != cookie) {
+       if (!nsl_validate_isetcookie(ndd, nd_label, cookie)) {
                dev_dbg(&nd_region->dev, "invalid cookie in label: %pUb\n",
                                nd_label->uuid);
-               if (nsl_get_isetcookie(ndd, nd_label) != altcookie)
+               if (!nsl_validate_isetcookie(ndd, nd_label, altcookie))
                        return ERR_PTR(-EAGAIN);
 
                dev_dbg(&nd_region->dev, "valid altcookie in label: %pUb\n",
diff --git a/drivers/nvdimm/nd.h b/drivers/nvdimm/nd.h
index 61f43f0edabf..b3feaf3699f7 100644
--- a/drivers/nvdimm/nd.h
+++ b/drivers/nvdimm/nd.h
@@ -83,6 +83,13 @@ static inline u64 nsl_get_isetcookie(struct nvdimm_drvdata 
*ndd,
        return __le64_to_cpu(nd_label->isetcookie);
 }
 
+static inline bool nsl_validate_isetcookie(struct nvdimm_drvdata *ndd,
+                                          struct nd_namespace_label *nd_label,
+                                          u64 cookie)
+{
+       return cookie == __le64_to_cpu(nd_label->isetcookie);
+}
+
 static inline u16 nsl_get_position(struct nvdimm_drvdata *ndd,
                                   struct nd_namespace_label *nd_label)
 {


Reply via email to