bt/rfcomm/tty: join error paths
authorIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
Mon, 15 Dec 2008 07:18:00 +0000 (23:18 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Dec 2008 07:18:00 +0000 (23:18 -0800)
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/bluetooth/rfcomm/tty.c

index 111c6c8582473cb9c9c8ec5a3b0e9040ab284ef7..d030c69cb5a306ee2cf8c89584e286fc4cf1afb9 100644 (file)
@@ -298,18 +298,15 @@ static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)
 out:
        write_unlock_bh(&rfcomm_dev_lock);
 
-       if (err < 0) {
-               kfree(dev);
-               return err;
-       }
+       if (err < 0)
+               goto free;
 
        dev->tty_dev = tty_register_device(rfcomm_tty_driver, dev->id, NULL);
 
        if (IS_ERR(dev->tty_dev)) {
                err = PTR_ERR(dev->tty_dev);
                list_del(&dev->list);
-               kfree(dev);
-               return err;
+               goto free;
        }
 
        dev_set_drvdata(dev->tty_dev, dev);
@@ -321,6 +318,10 @@ out:
                BT_ERR("Failed to create channel attribute");
 
        return dev->id;
+
+free:
+       kfree(dev);
+       return err;
 }
 
 static void rfcomm_dev_del(struct rfcomm_dev *dev)