From 669b4553c654291e6de65ded5ea23eac7039e537 Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Sat, 26 Jan 2008 14:10:40 +0100 Subject: [PATCH] --- yaml --- r: 77175 b: refs/heads/master c: 98c13c283a4e8b7f844f1f470abd7c756248fcc4 h: refs/heads/master i: 77173: 95e50511616c286efb7138e785727b83e24177d1 77171: 42421fb911d01004e7e87c261e5b632f205e8d98 77167: 3a7abd0bdf7ea1edb23d47bb617265767723289e v: v3 --- [refs] | 2 +- trunk/drivers/s390/cio/css.c | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/[refs] b/[refs] index 22948e4c56a5..1a98fd2178fc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 602b20f2bf335d0d5fce11cb2ade22aa74e7ba25 +refs/heads/master: 98c13c283a4e8b7f844f1f470abd7c756248fcc4 diff --git a/trunk/drivers/s390/cio/css.c b/trunk/drivers/s390/cio/css.c index 614cc694184e..f558686a66dd 100644 --- a/trunk/drivers/s390/cio/css.c +++ b/trunk/drivers/s390/cio/css.c @@ -796,32 +796,36 @@ css_bus_match (struct device *dev, struct device_driver *drv) return 0; } -static int -css_probe (struct device *dev) +static int css_probe(struct device *dev) { struct subchannel *sch; + int ret; sch = to_subchannel(dev); sch->driver = to_cssdriver(dev->driver); - return (sch->driver->probe ? sch->driver->probe(sch) : 0); + ret = sch->driver->probe ? sch->driver->probe(sch) : 0; + if (ret) + sch->driver = NULL; + return ret; } -static int -css_remove (struct device *dev) +static int css_remove(struct device *dev) { struct subchannel *sch; + int ret; sch = to_subchannel(dev); - return (sch->driver->remove ? sch->driver->remove(sch) : 0); + ret = sch->driver->remove ? sch->driver->remove(sch) : 0; + sch->driver = NULL; + return ret; } -static void -css_shutdown (struct device *dev) +static void css_shutdown(struct device *dev) { struct subchannel *sch; sch = to_subchannel(dev); - if (sch->driver->shutdown) + if (sch->driver && sch->driver->shutdown) sch->driver->shutdown(sch); }