Dne 16.6.2017 v 14:40 Douglas Miller napsal(a):
> 
> I'd like to add that we are seeing this problem with singlepath installations 
> and need to get this fixed upstream as soon as possible. RHEL new product 
> contains this fix and is working for us, but we need to be able to offer 
> other distros as well. I am currently running this patch on a custom-built 
> Ubuntu 16.04.2 kernel and it is fixing the problem there.
> 
> What needs to be done to get this patch accepted?
> 

Note that James proposed a different patch to fix this bug.

diff --git a/drivers/misc/enclosure.c b/drivers/misc/enclosure.c
index 65fed71..ae89082 100644
--- a/drivers/misc/enclosure.c
+++ b/drivers/misc/enclosure.c
@@ -375,6 +375,7 @@ int enclosure_add_device(struct enclosure_device *edev, int 
component,
                         struct device *dev)
 {
        struct enclosure_component *cdev;
+       int err;
 
        if (!edev || component >= edev->components)
                return -EINVAL;
@@ -384,12 +385,15 @@ int enclosure_add_device(struct enclosure_device *edev, 
int component,
        if (cdev->dev == dev)
                return -EEXIST;
 
-       if (cdev->dev)
+       if (cdev->dev) {
                enclosure_remove_links(cdev);
-
-       put_device(cdev->dev);
-       cdev->dev = get_device(dev);
-       return enclosure_add_links(cdev);
+               put_device(cdev->dev);
+               cdev->dev = NULL;
+       }
+       err = enclosure_add_links(cdev);
+       if (!err)
+               cdev->dev = get_device(dev);
+       return err;
 }
 EXPORT_SYMBOL_GPL(enclosure_add_device);
 

Reply via email to