|
@@ -716,10 +716,17 @@ static int raw3215_probe (struct ccw_device *cdev)
|
|
|
static void raw3215_remove (struct ccw_device *cdev)
|
|
|
{
|
|
|
struct raw3215_info *raw;
|
|
|
+ unsigned int line;
|
|
|
|
|
|
ccw_device_set_offline(cdev);
|
|
|
raw = dev_get_drvdata(&cdev->dev);
|
|
|
if (raw) {
|
|
|
+ spin_lock(&raw3215_device_lock);
|
|
|
+ for (line = 0; line < NR_3215; line++)
|
|
|
+ if (raw3215[line] == raw)
|
|
|
+ break;
|
|
|
+ raw3215[line] = NULL;
|
|
|
+ spin_unlock(&raw3215_device_lock);
|
|
|
dev_set_drvdata(&cdev->dev, NULL);
|
|
|
raw3215_free_info(raw);
|
|
|
}
|