Commit 98c13c28 authored by Cornelia Huck's avatar Cornelia Huck Committed by Martin Schwidefsky

[S390] cio: Reset sch->driver.

sch->driver needs to be reset to NULL on failed probe and after
remove. We also need to check for sch->driver on shutdown.
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 602b20f2
......@@ -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);
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment