On Mon, Feb 12, 2024 at 11:27:22AM -0500, Mathieu Desnoyers wrote: > Fix a leak on dax_add_host() error, where "goto out_cleanup_dax" is done > before setting pmem->dax_dev, which therefore issues the two following > calls on NULL pointers: > > out_cleanup_dax: > kill_dax(pmem->dax_dev); > put_dax(pmem->dax_dev); > > Signed-off-by: Mathieu Desnoyers <[email protected]> > Reviewed-by: Dan Williams <[email protected]> > Cc: Alasdair Kergon <[email protected]> > Cc: Mike Snitzer <[email protected]> > Cc: Mikulas Patocka <[email protected]> > Cc: Andrew Morton <[email protected]> > Cc: Linus Torvalds <[email protected]> > Cc: Dan Williams <[email protected]> > Cc: Vishal Verma <[email protected]> > Cc: Dave Jiang <[email protected]> > Cc: Matthew Wilcox <[email protected]> > Cc: Arnd Bergmann <[email protected]> > Cc: Russell King <[email protected]> > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected] > Cc: [email protected]
Reviewed-by: Fan Ni <[email protected]> > --- > drivers/nvdimm/pmem.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c > index 4e8fdcb3f1c8..9fe358090720 100644 > --- a/drivers/nvdimm/pmem.c > +++ b/drivers/nvdimm/pmem.c > @@ -566,12 +566,11 @@ static int pmem_attach_disk(struct device *dev, > set_dax_nomc(dax_dev); > if (is_nvdimm_sync(nd_region)) > set_dax_synchronous(dax_dev); > + pmem->dax_dev = dax_dev; > rc = dax_add_host(dax_dev, disk); > if (rc) > goto out_cleanup_dax; > dax_write_cache(dax_dev, nvdimm_has_cache(nd_region)); > - pmem->dax_dev = dax_dev; > - > rc = device_add_disk(dev, disk, pmem_attribute_groups); > if (rc) > goto out_remove_host; > -- > 2.39.2 >
