Skip to content

Commit 8045fe0

Browse files
maurizio-lombardigregkh
authored andcommitted
scsi: ses: do not add a device to an enclosure if enclosure_add_links() fails.
commit 62e62ff upstream. The enclosure_add_device() function should fail if it can't create the relevant sysfs links. Signed-off-by: Maurizio Lombardi <[email protected]> Tested-by: Douglas Miller <[email protected]> Acked-by: James Bottomley <[email protected]> Signed-off-by: Martin K. Petersen <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent e114c61 commit 8045fe0

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

drivers/misc/enclosure.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ int enclosure_add_device(struct enclosure_device *edev, int component,
375375
struct device *dev)
376376
{
377377
struct enclosure_component *cdev;
378+
int err;
378379

379380
if (!edev || component >= edev->components)
380381
return -EINVAL;
@@ -384,12 +385,17 @@ int enclosure_add_device(struct enclosure_device *edev, int component,
384385
if (cdev->dev == dev)
385386
return -EEXIST;
386387

387-
if (cdev->dev)
388+
if (cdev->dev) {
388389
enclosure_remove_links(cdev);
389-
390-
put_device(cdev->dev);
390+
put_device(cdev->dev);
391+
}
391392
cdev->dev = get_device(dev);
392-
return enclosure_add_links(cdev);
393+
err = enclosure_add_links(cdev);
394+
if (err) {
395+
put_device(cdev->dev);
396+
cdev->dev = NULL;
397+
}
398+
return err;
393399
}
394400
EXPORT_SYMBOL_GPL(enclosure_add_device);
395401

0 commit comments

Comments
 (0)