Skip to content

Commit

Permalink
Bluetooth: Delay session allocation in hidp
Browse files Browse the repository at this point in the history
It gets allocated only when it is really needed.

Signed-off-by: Gustavo F. Padovan <padovan@profusion.mobi>
  • Loading branch information
Gustavo F. Padovan committed Oct 7, 2011
1 parent 1785dbf commit 81b25cd
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions net/bluetooth/hidp/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -979,18 +979,20 @@ int hidp_add_connection(struct hidp_connadd_req *req, struct socket *ctrl_sock,
bacmp(&bt_sk(ctrl_sock->sk)->dst, &bt_sk(intr_sock->sk)->dst))
return -ENOTUNIQ;

session = kzalloc(sizeof(struct hidp_session), GFP_KERNEL);
if (!session)
return -ENOMEM;

BT_DBG("rd_data %p rd_size %d", req->rd_data, req->rd_size);

down_write(&hidp_session_sem);

s = __hidp_get_session(&bt_sk(ctrl_sock->sk)->dst);
if (s && s->state == BT_CONNECTED) {
err = -EEXIST;
goto failed;
up_write(&hidp_session_sem);
return -EEXIST;
}

session = kzalloc(sizeof(struct hidp_session), GFP_KERNEL);
if (!session) {
up_write(&hidp_session_sem);
return -ENOMEM;
}

session->conn = hidp_find_connection(session);
Expand Down

0 comments on commit 81b25cd

Please sign in to comment.