Skip to content

Commit 585fb3d

Browse files
SinkFinderaegl
authored andcommitted
EDAC/sysfs: Fix memory leak when creating a csrow object
In edac_create_csrow_object(), the reference to the object is not released when adding the device to the device hierarchy fails (device_add()). This may result in a memory leak. Signed-off-by: Pan Bian <[email protected]> Signed-off-by: Borislav Petkov <[email protected]> Reviewed-by: Greg Kroah-Hartman <[email protected]> Cc: James Morse <[email protected]> Cc: Mauro Carvalho Chehab <[email protected]> Cc: linux-edac <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
1 parent 9e0babf commit 585fb3d

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

drivers/edac/edac_mc_sysfs.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,8 @@ static inline int nr_pages_per_csrow(struct csrow_info *csrow)
404404
static int edac_create_csrow_object(struct mem_ctl_info *mci,
405405
struct csrow_info *csrow, int index)
406406
{
407+
int err;
408+
407409
csrow->dev.type = &csrow_attr_type;
408410
csrow->dev.groups = csrow_dev_groups;
409411
device_initialize(&csrow->dev);
@@ -415,7 +417,11 @@ static int edac_create_csrow_object(struct mem_ctl_info *mci,
415417
edac_dbg(0, "creating (virtual) csrow node %s\n",
416418
dev_name(&csrow->dev));
417419

418-
return device_add(&csrow->dev);
420+
err = device_add(&csrow->dev);
421+
if (err)
422+
put_device(&csrow->dev);
423+
424+
return err;
419425
}
420426

421427
/* Create a CSROW object under specifed edac_mc_device */

0 commit comments

Comments
 (0)