diff options
| -rw-r--r-- | drivers/s390/cio/ccwgroup.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/s390/cio/ccwgroup.c b/drivers/s390/cio/ccwgroup.c index e0ce65fca4e7..9a50f245774b 100644 --- a/drivers/s390/cio/ccwgroup.c +++ b/drivers/s390/cio/ccwgroup.c | |||
| @@ -113,7 +113,8 @@ ccwgroup_release (struct device *dev) | |||
| 113 | 113 | ||
| 114 | for (i = 0; i < gdev->count; i++) { | 114 | for (i = 0; i < gdev->count; i++) { |
| 115 | if (gdev->cdev[i]) { | 115 | if (gdev->cdev[i]) { |
| 116 | dev_set_drvdata(&gdev->cdev[i]->dev, NULL); | 116 | if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev) |
| 117 | dev_set_drvdata(&gdev->cdev[i]->dev, NULL); | ||
| 117 | put_device(&gdev->cdev[i]->dev); | 118 | put_device(&gdev->cdev[i]->dev); |
| 118 | } | 119 | } |
| 119 | } | 120 | } |
| @@ -296,6 +297,7 @@ error: | |||
| 296 | if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev) | 297 | if (dev_get_drvdata(&gdev->cdev[i]->dev) == gdev) |
| 297 | dev_set_drvdata(&gdev->cdev[i]->dev, NULL); | 298 | dev_set_drvdata(&gdev->cdev[i]->dev, NULL); |
| 298 | put_device(&gdev->cdev[i]->dev); | 299 | put_device(&gdev->cdev[i]->dev); |
| 300 | gdev->cdev[i] = NULL; | ||
| 299 | } | 301 | } |
| 300 | mutex_unlock(&gdev->reg_mutex); | 302 | mutex_unlock(&gdev->reg_mutex); |
| 301 | put_device(&gdev->dev); | 303 | put_device(&gdev->dev); |
