|
|
@@ -321,11 +321,12 @@ static ssize_t nullb_device_power_store(struct config_item *item,
|
|
|
set_bit(NULLB_DEV_FL_CONFIGURED, &dev->flags);
|
|
|
dev->power = newp;
|
|
|
} else if (dev->power && !newp) {
|
|
|
- mutex_lock(&lock);
|
|
|
- dev->power = newp;
|
|
|
- null_del_dev(dev->nullb);
|
|
|
- mutex_unlock(&lock);
|
|
|
- clear_bit(NULLB_DEV_FL_UP, &dev->flags);
|
|
|
+ if (test_and_clear_bit(NULLB_DEV_FL_UP, &dev->flags)) {
|
|
|
+ mutex_lock(&lock);
|
|
|
+ dev->power = newp;
|
|
|
+ null_del_dev(dev->nullb);
|
|
|
+ mutex_unlock(&lock);
|
|
|
+ }
|
|
|
clear_bit(NULLB_DEV_FL_CONFIGURED, &dev->flags);
|
|
|
}
|
|
|
|