]> git.baikalelectronics.ru Git - kernel.git/commit
virtio_ccw: fix hang in set offline processing
authorHeinz Graalfs <graalfs@linux.vnet.ibm.com>
Wed, 5 Mar 2014 14:23:54 +0000 (15:23 +0100)
committerCornelia Huck <cornelia.huck@de.ibm.com>
Thu, 6 Mar 2014 09:22:40 +0000 (10:22 +0100)
commitb3bb5c127f9642bd9802a1d2f4aae896a01d3aba
treec9a706ec6d539aad6f1aacd4201577ddcc2a8d24
parent67ee45157d77d1a36a6b63ccd5a9d1d728dfd9a5
virtio_ccw: fix hang in set offline processing

During set offline processing virtio_grab_drvdata() incorrectly
calls dev_set_drvdata() to remove the virtio_ccw_device from the
parent ccw_device's driver data. This is wrong and ends up in a
hang during virtio_ccw_reset(), as the interrupt handler still
has need of the virtio_ccw_device.

A new field 'going_away' is introduced in struct virtio_ccw_device
to control the usage of the ccw_device's driver data pointer in
virtio_grab_drvdata().

Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
drivers/s390/kvm/virtio_ccw.c