mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
nvdimm: rectify the illogical code within nd_dax_probe()
When nd_dax is NULL, nd_pfn is consequently NULL as well. Nevertheless, it is inadvisable to perform pointer arithmetic or address-taking on a NULL pointer. Introduce the nd_dax_devinit() function to enhance the code's logic and improve its readability. Signed-off-by: Yi Yang <yiyang13@huawei.com> Reviewed-by: Dave Jiang <dave.jiang@intel.com> Link: https://patch.msgid.link/20241108085526.527957-1-yiyang13@huawei.com Signed-off-by: Ira Weiny <ira.weiny@intel.com>
This commit is contained in:
parent
f7f50742a6
commit
b613521014
@ -106,12 +106,12 @@ int nd_dax_probe(struct device *dev, struct nd_namespace_common *ndns)
|
||||
|
||||
nvdimm_bus_lock(&ndns->dev);
|
||||
nd_dax = nd_dax_alloc(nd_region);
|
||||
nd_pfn = &nd_dax->nd_pfn;
|
||||
dax_dev = nd_pfn_devinit(nd_pfn, ndns);
|
||||
dax_dev = nd_dax_devinit(nd_dax, ndns);
|
||||
nvdimm_bus_unlock(&ndns->dev);
|
||||
if (!dax_dev)
|
||||
return -ENOMEM;
|
||||
pfn_sb = devm_kmalloc(dev, sizeof(*pfn_sb), GFP_KERNEL);
|
||||
nd_pfn = &nd_dax->nd_pfn;
|
||||
nd_pfn->pfn_sb = pfn_sb;
|
||||
rc = nd_pfn_validate(nd_pfn, DAX_SIG);
|
||||
dev_dbg(dev, "dax: %s\n", rc == 0 ? dev_name(dax_dev) : "<none>");
|
||||
|
@ -600,6 +600,13 @@ struct nd_dax *to_nd_dax(struct device *dev);
|
||||
int nd_dax_probe(struct device *dev, struct nd_namespace_common *ndns);
|
||||
bool is_nd_dax(const struct device *dev);
|
||||
struct device *nd_dax_create(struct nd_region *nd_region);
|
||||
static inline struct device *nd_dax_devinit(struct nd_dax *nd_dax,
|
||||
struct nd_namespace_common *ndns)
|
||||
{
|
||||
if (!nd_dax)
|
||||
return NULL;
|
||||
return nd_pfn_devinit(&nd_dax->nd_pfn, ndns);
|
||||
}
|
||||
#else
|
||||
static inline int nd_dax_probe(struct device *dev,
|
||||
struct nd_namespace_common *ndns)
|
||||
|
Loading…
Reference in New Issue
Block a user