提交 98c13c28 编写于 作者: C Cornelia Huck 提交者: 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: NCornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册