s390/zcrypt: fix device unregister race
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 17 Jul 2015 13:01:08 +0000 (15:01 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 14 Oct 2015 12:32:20 +0000 (14:32 +0200)
The ap_queue_messsage function will call device_unregister if the
unregistered field of the device has been set while trying to queue
a message. This races with other device_unregister calls, e.g. from
the ap_scan_bus. Remove the call to device_unregister from
ap_queue_message and let ap_scan_bus deal with it.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
drivers/s390/crypto/ap_bus.c

index 689f46cbf594e2430257092663ec8ff5ed18c08c..80af1bd473e1137caafe10f22a6eb3b3992b48f2 100644 (file)
@@ -1666,8 +1666,6 @@ void ap_queue_message(struct ap_device *ap_dev, struct ap_message *ap_msg)
                rc = -ENODEV;
        }
        spin_unlock_bh(&ap_dev->lock);
-       if (rc == -ENODEV)
-               device_unregister(&ap_dev->device);
 }
 EXPORT_SYMBOL(ap_queue_message);