aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/cio/qdio.c
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2006-12-08 09:53:57 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2006-12-08 09:53:57 -0500
commitc16375329c2ab4667df873394c4be7a61d163c62 (patch)
tree9ee9505e4587ce5f472db3fd09935611b0062f83 /drivers/s390/cio/qdio.c
parente45ccc0562e3f391dcba8b2e8a02551e8e42d8db (diff)
[S390] more workqueue fixes.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers/s390/cio/qdio.c')
-rw-r--r--drivers/s390/cio/qdio.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index 8d5fa1b4d11f..d066dbf2c65d 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -2045,11 +2045,13 @@ omit_handler_call:
2045} 2045}
2046 2046
2047static void 2047static void
2048qdio_call_shutdown(void *data) 2048qdio_call_shutdown(struct work_struct *work)
2049{ 2049{
2050 struct ccw_device_private *priv;
2050 struct ccw_device *cdev; 2051 struct ccw_device *cdev;
2051 2052
2052 cdev = (struct ccw_device *)data; 2053 priv = container_of(work, struct ccw_device_private, kick_work);
2054 cdev = priv->cdev;
2053 qdio_shutdown(cdev, QDIO_FLAG_CLEANUP_USING_CLEAR); 2055 qdio_shutdown(cdev, QDIO_FLAG_CLEANUP_USING_CLEAR);
2054 put_device(&cdev->dev); 2056 put_device(&cdev->dev);
2055} 2057}
@@ -2091,7 +2093,7 @@ qdio_timeout_handler(struct ccw_device *cdev)
2091 if (get_device(&cdev->dev)) { 2093 if (get_device(&cdev->dev)) {
2092 /* Can't call shutdown from interrupt context. */ 2094 /* Can't call shutdown from interrupt context. */
2093 PREPARE_WORK(&cdev->private->kick_work, 2095 PREPARE_WORK(&cdev->private->kick_work,
2094 qdio_call_shutdown, (void *)cdev); 2096 qdio_call_shutdown);
2095 queue_work(ccw_device_work, &cdev->private->kick_work); 2097 queue_work(ccw_device_work, &cdev->private->kick_work);
2096 } 2098 }
2097 break; 2099 break;