Skip to content

Commit

Permalink
Bluetooth: AMP: Get amp_mgr reference in HS hci_conn
Browse files Browse the repository at this point in the history
When assigning amp_mgr in hci_conn (type AMP_LINK) get also reference.
In hci_conn_del those references would be put for both conn types
AMP_LINK and ACL_LINK associated with amp_mgr.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com>
Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
  • Loading branch information
Andrei Emeltchenko authored and Gustavo Padovan committed Oct 18, 2012
1 parent 56f6098 commit f706adf
Show file tree
Hide file tree
Showing 3 changed files with 5 additions and 3 deletions.
2 changes: 1 addition & 1 deletion include/net/bluetooth/a2mp.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ struct a2mp_physlink_rsp {
extern struct list_head amp_mgr_list;
extern struct mutex amp_mgr_list_lock;

void amp_mgr_get(struct amp_mgr *mgr);
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr);
int amp_mgr_put(struct amp_mgr *mgr);
u8 __next_ident(struct amp_mgr *mgr);
struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn,
Expand Down
4 changes: 3 additions & 1 deletion net/bluetooth/a2mp.c
Original file line number Diff line number Diff line change
Expand Up @@ -751,11 +751,13 @@ static struct l2cap_chan *a2mp_chan_open(struct l2cap_conn *conn, bool locked)
}

/* AMP Manager functions */
void amp_mgr_get(struct amp_mgr *mgr)
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr)
{
BT_DBG("mgr %p orig refcnt %d", mgr, atomic_read(&mgr->kref.refcount));

kref_get(&mgr->kref);

return mgr;
}

static void amp_mgr_destroy(struct kref *kref)
Expand Down
2 changes: 1 addition & 1 deletion net/bluetooth/amp.c
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ struct hci_conn *phylink_add(struct hci_dev *hdev, struct amp_mgr *mgr,
hcon->attempt++;
hcon->handle = __next_handle(mgr);
hcon->remote_id = remote_id;
hcon->amp_mgr = mgr;
hcon->amp_mgr = amp_mgr_get(mgr);
hcon->out = out;

return hcon;
Expand Down

0 comments on commit f706adf

Please sign in to comment.