OK, let's try that. This should be the patch if someone can try itThat would make more sense than trying to "reuse" the devicecdev->dev = NULL;The design of the code is simply to remove the link to the inserted
return device_add(&cdev->cdev);
}
}
return -ENODEV;
}
device which has been removed.
I*think* this means the calls to device_del and device_add are
unnecessary and should go. enclosure_remove_links and the put of
the
enclosed device should be sufficient.
structure
here by tearing it down and adding it back.
(I've compile tested it, but the enclosure system is under a heap of
stuff in the garage).
James
---
diff --git a/drivers/misc/enclosure.c b/drivers/misc/enclosure.c
index 6d27ccfe0680..3c2d405bc79b 100644
--- a/drivers/misc/enclosure.c
+++ b/drivers/misc/enclosure.c
@@ -406,10 +406,9 @@ int enclosure_remove_device(struct enclosure_device *edev, struct device *dev)
cdev = &edev->component[i];
if (cdev->dev == dev) {
enclosure_remove_links(cdev);
- device_del(&cdev->cdev);
put_device(dev);
cdev->dev = NULL;
- return device_add(&cdev->cdev);
+ return 0;
}
}
return -ENODEV;