diff options
author | Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> | 2008-12-14 23:18:00 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-12-14 23:18:00 -0800 |
commit | 037322abe6141e32e1b1dea86a9405d52c99be5d (patch) | |
tree | f223a6e44f8243cef4d937ad4091af55e21424b7 /net/bluetooth | |
parent | 0eae1b98cf3022715b5a6ea5f1ac6b0bd7ac4edd (diff) |
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.c | 13 |
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) |