summaryrefslogtreecommitdiffstats
path: root/net/bluetooth
diff options
context:
space:
mode:
authorIlpo Järvinen2008-12-15 08:18:00 +0100
committerDavid S. Miller2008-12-15 08:18:00 +0100
commit037322abe6141e32e1b1dea86a9405d52c99be5d (patch)
treef223a6e44f8243cef4d937ad4091af55e21424b7 /net/bluetooth
parentax25: join the return paths that free skb (diff)
downloadkernel-qcow2-linux-037322abe6141e32e1b1dea86a9405d52c99be5d.tar.gz
kernel-qcow2-linux-037322abe6141e32e1b1dea86a9405d52c99be5d.tar.xz
kernel-qcow2-linux-037322abe6141e32e1b1dea86a9405d52c99be5d.zip
bt/rfcomm/tty: join error paths
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/bluetooth')
-rw-r--r--net/bluetooth/rfcomm/tty.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
index 111c6c858247..d030c69cb5a3 100644
--- a/net/bluetooth/rfcomm/tty.c
+++ b/net/bluetooth/rfcomm/tty.c
@@ -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)