Skip to content

Commit

Permalink
[SCSI] st: clean up dev cleanup in st_probe
Browse files Browse the repository at this point in the history
st_probe leaves a cdev pointer hanging around that is compared
during the error path and freed later. There's no need for the pointer
to hang around at all. So we free it immediately and simplify the error
handling.

Reviewed-by: Lee Duncan <lduncan@suse.com>
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
Acked-by: Kai Mäkisara <kai.makisara@kolumbus.fi>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
  • Loading branch information
Jeff Mahoney authored and James Bottomley committed Sep 14, 2012
1 parent af23782 commit e3f2a9c
Showing 1 changed file with 4 additions and 7 deletions.
11 changes: 4 additions & 7 deletions drivers/scsi/st.c
Original file line number Diff line number Diff line change
Expand Up @@ -4156,6 +4156,7 @@ static int st_probe(struct device *dev)
printk(KERN_ERR
"st%d: out of memory. Device not attached.\n",
dev_num);
cdev_del(cdev);
goto out_free_tape;
}
cdev->owner = THIS_MODULE;
Expand Down Expand Up @@ -4194,17 +4195,13 @@ static int st_probe(struct device *dev)
"tape");
for (j=0; j < 2; j++) {
if (STm->cdevs[j]) {
if (cdev == STm->cdevs[j])
cdev = NULL;
device_destroy(&st_sysfs_class,
MKDEV(SCSI_TAPE_MAJOR,
TAPE_MINOR(i, mode, j)));
device_destroy(&st_sysfs_class,
MKDEV(SCSI_TAPE_MAJOR,
TAPE_MINOR(i, mode, j)));
cdev_del(STm->cdevs[j]);
}
}
}
if (cdev)
cdev_del(cdev);
write_lock(&st_dev_arr_lock);
scsi_tapes[dev_num] = NULL;
st_nr_dev--;
Expand Down

0 comments on commit e3f2a9c

Please sign in to comment.