diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-12-08 09:53:57 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-12-08 09:53:57 -0500 |
commit | c16375329c2ab4667df873394c4be7a61d163c62 (patch) | |
tree | 9ee9505e4587ce5f472db3fd09935611b0062f83 /drivers/s390/cio/qdio.c | |
parent | e45ccc0562e3f391dcba8b2e8a02551e8e42d8db (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.c | 8 |
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 | ||
2047 | static void | 2047 | static void |
2048 | qdio_call_shutdown(void *data) | 2048 | qdio_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; |