dasd: fix sysfs cleanup in dasd_generic_remove
When the DASD devices are detached from the driver, then the dasd_generic_remove function is called. One of the things this function should do is to remove the DASD specific sysfs attributes, but this is not done in all cases. This is likely to cause an oops when at a later point sysfs stumbles over the stale pointers. In particular this happens when when the modules are unloaded and loaded again. Signed-off-by: Stefan Weinhuber <wein@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
53923354d6
commit
be4904e503
|
@ -3042,12 +3042,15 @@ void dasd_generic_remove(struct ccw_device *cdev)
|
|||
cdev->handler = NULL;
|
||||
|
||||
device = dasd_device_from_cdev(cdev);
|
||||
if (IS_ERR(device))
|
||||
if (IS_ERR(device)) {
|
||||
dasd_remove_sysfs_files(cdev);
|
||||
return;
|
||||
}
|
||||
if (test_and_set_bit(DASD_FLAG_OFFLINE, &device->flags) &&
|
||||
!test_bit(DASD_FLAG_SAFE_OFFLINE_RUNNING, &device->flags)) {
|
||||
/* Already doing offline processing */
|
||||
dasd_put_device(device);
|
||||
dasd_remove_sysfs_files(cdev);
|
||||
return;
|
||||
}
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue