From 2e6ba8a92e855f189fb47688aab8818e72a51ccc Mon Sep 17 00:00:00 2001 From: Gerald Schaefer Date: Mon, 5 Nov 2007 11:10:09 +0100 Subject: [PATCH] --- yaml --- r: 73132 b: refs/heads/master c: 931bb68ba6355b7111966c90822ed862c102a9cd h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/s390/block/dcssblk.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 1b0d5541eaa2..77458e215388 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 0fc3ddd67a6781238b038165d9dd8c1f9ba81111 +refs/heads/master: 931bb68ba6355b7111966c90822ed862c102a9cd diff --git a/trunk/drivers/s390/block/dcssblk.c b/trunk/drivers/s390/block/dcssblk.c index 859f870552e3..5e083d1f57e7 100644 --- a/trunk/drivers/s390/block/dcssblk.c +++ b/trunk/drivers/s390/block/dcssblk.c @@ -193,6 +193,12 @@ dcssblk_segment_warn(int rc, char* seg_name) } } +static void dcssblk_unregister_callback(struct device *dev) +{ + device_unregister(dev); + put_device(dev); +} + /* * device attribute for switching shared/nonshared (exclusive) * operation (show + store) @@ -276,8 +282,7 @@ dcssblk_shared_store(struct device *dev, struct device_attribute *attr, const ch blk_cleanup_queue(dev_info->dcssblk_queue); dev_info->gd->queue = NULL; put_disk(dev_info->gd); - device_unregister(dev); - put_device(dev); + rc = device_schedule_callback(dev, dcssblk_unregister_callback); out: up_write(&dcssblk_devices_sem); return rc;