|
@@ -393,22 +393,24 @@ static struct irq_chip ucb1x00_irqchip = {
|
|
|
static int ucb1x00_add_dev(struct ucb1x00 *ucb, struct ucb1x00_driver *drv)
|
|
|
{
|
|
|
struct ucb1x00_dev *dev;
|
|
|
- int ret = -ENOMEM;
|
|
|
+ int ret;
|
|
|
|
|
|
dev = kmalloc(sizeof(struct ucb1x00_dev), GFP_KERNEL);
|
|
|
- if (dev) {
|
|
|
- dev->ucb = ucb;
|
|
|
- dev->drv = drv;
|
|
|
-
|
|
|
- ret = drv->add(dev);
|
|
|
-
|
|
|
- if (ret == 0) {
|
|
|
- list_add_tail(&dev->dev_node, &ucb->devs);
|
|
|
- list_add_tail(&dev->drv_node, &drv->devs);
|
|
|
- } else {
|
|
|
- kfree(dev);
|
|
|
- }
|
|
|
+ if (!dev)
|
|
|
+ return -ENOMEM;
|
|
|
+
|
|
|
+ dev->ucb = ucb;
|
|
|
+ dev->drv = drv;
|
|
|
+
|
|
|
+ ret = drv->add(dev);
|
|
|
+ if (ret) {
|
|
|
+ kfree(dev);
|
|
|
+ return ret;
|
|
|
}
|
|
|
+
|
|
|
+ list_add_tail(&dev->dev_node, &ucb->devs);
|
|
|
+ list_add_tail(&dev->drv_node, &drv->devs);
|
|
|
+
|
|
|
return ret;
|
|
|
}
|
|
|
|