s390/cio: fix ccw_device_start_timeout API
authorSebastian Ott <sebott@linux.vnet.ibm.com>
Tue, 6 Feb 2018 13:59:43 +0000 (14:59 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:01 +0000 (07:52 +0200)
commit5df337455c5a7a4adb1dc71a577608d63221fd1e
treebcdf6576fd4f0a8fa5ce3a6573ef177ef9384a50
parentaa6eeca7bcd714cc1e41227aa9d9599570117742
s390/cio: fix ccw_device_start_timeout API

[ Upstream commit f97a6b6c47d2f329a24f92cc0ca3c6df5727ba73 ]

There are cases a device driver can't start IO because the device is
currently in use by cio. In this case the device driver is notified
when the device is usable again.

Using ccw_device_start_timeout we would set the timeout (and change
an existing timeout) before we test for internal usage. Worst case
this could lead to an unexpected timer deletion.

Fix this by setting the timeout after we test for internal usage.

Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/s390/cio/device_ops.c