[Bluetooth] Fix reference count when connection lookup fails
authorMarcel Holtmann <marcel@holtmann.org>
Sun, 15 Oct 2006 15:31:05 +0000 (17:31 +0200)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 16 Oct 2006 06:14:32 +0000 (23:14 -0700)
When the connection lookup for the device structure fails, the reference
count for the HCI device needs to be decremented.

Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
net/bluetooth/bnep/core.c
net/bluetooth/hidp/core.c
net/bluetooth/rfcomm/tty.c

index 2312d050eeedfb66ed382108f0703f6d2dfc5b9d..4d3424c2421c07b4d925559a1e02e4a6f59b7b19 100644 (file)
@@ -528,12 +528,10 @@ static struct device *bnep_get_device(struct bnep_session *session)
                return NULL;
 
        conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst);
-       if (!conn)
-               return NULL;
 
        hci_dev_put(hdev);
 
-       return &conn->dev;
+       return conn ? &conn->dev : NULL;
 }
 
 int bnep_add_connection(struct bnep_connadd_req *req, struct socket *sock)
index b2d6da67d885f3a40503bbdf69195b3ddb945657..9a562cf7406bc89ba0ea125eec4979a2783744ce 100644 (file)
@@ -541,12 +541,10 @@ static struct device *hidp_get_device(struct hidp_session *session)
                return NULL;
 
        conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, dst);
-       if (!conn)
-               return NULL;
 
        hci_dev_put(hdev);
 
-       return &conn->dev;
+       return conn ? &conn->dev : NULL;
 }
 
 static inline void hidp_setup_input(struct hidp_session *session, struct hidp_connadd_req *req)
index 1958ad1b8541e57be7f32bb70b2b19a242884dce..5833b87c51cfef50eb8f6d5638246e3cf2646782 100644 (file)
@@ -172,12 +172,10 @@ static struct device *rfcomm_get_device(struct rfcomm_dev *dev)
                return NULL;
 
        conn = hci_conn_hash_lookup_ba(hdev, ACL_LINK, &dev->dst);
-       if (!conn)
-               return NULL;
 
        hci_dev_put(hdev);
 
-       return &conn->dev;
+       return conn ? &conn->dev : NULL;
 }
 
 static int rfcomm_dev_add(struct rfcomm_dev_req *req, struct rfcomm_dlc *dlc)