diff options
author | Sebastian Ott <sebott@linux.vnet.ibm.com> | 2008-07-14 11:59:20 +0400 |
---|---|---|
committer | Heiko Carstens <heiko.carstens@de.ibm.com> | 2008-07-14 12:02:17 +0400 |
commit | ef60cd13ecee0ccf2439d63013cbfc798aea2bb9 (patch) | |
tree | 1d0dff750b0c031a1476d14a4fc2dd5071a08aaf | |
parent | e0bc24958e1305efe176adc9d5f23a09e84c0058 (diff) | |
download | linux-ef60cd13ecee0ccf2439d63013cbfc798aea2bb9.tar.xz |
[S390] cio: fix double unregistering of subchannels
In some cases where the channel subsystem decides to drop a subchannel
device device_unregister may be called twice, which results in an oops.
The patch prevents this by only unregistering registered devices.
Signed-off-by: Sebastian Ott <sebott@linux.vnet.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | drivers/s390/cio/css.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/s390/cio/css.c b/drivers/s390/cio/css.c index 4e2f2bbf4ba5..46c021d880dc 100644 --- a/drivers/s390/cio/css.c +++ b/drivers/s390/cio/css.c @@ -164,7 +164,8 @@ static int css_sch_device_register(struct subchannel *sch) void css_sch_device_unregister(struct subchannel *sch) { mutex_lock(&sch->reg_mutex); - device_unregister(&sch->dev); + if (device_is_registered(&sch->dev)) + device_unregister(&sch->dev); mutex_unlock(&sch->reg_mutex); } EXPORT_SYMBOL_GPL(css_sch_device_unregister); |