Linux bluetooth development
 help / color / mirror / Atom feed
From: Mat Martineau <mathewm@codeaurora.org>
To: Marcel Holtmann <marcel@holtmann.org>
Cc: linux-bluetooth@vger.kernel.org, padovan@profusion.mobi,
	pkrystad@codeaurora.org, andrei.emeltchenko@intel.com
Subject: Re: [PATCHv2 5/9] Bluetooth: Add signal handlers for channel creation
Date: Wed, 19 Oct 2011 13:53:49 -0700 (PDT)	[thread overview]
Message-ID: <alpine.DEB.2.02.1110191340400.1976@mathewm-linux> (raw)
In-Reply-To: <1319050958.15441.165.camel@aeonflux>


On Wed, 19 Oct 2011, Marcel Holtmann wrote:

> Hi Mat,
>
>> Handle both "create channel request" and "create channel response".
>>
>> Signed-off-by: Mat Martineau <mathewm@codeaurora.org>
>> ---
>>  net/bluetooth/l2cap_core.c |   45 ++++++++++++++++++++++++++++++++++++++++++++
>>  1 files changed, 45 insertions(+), 0 deletions(-)
>>
>> diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
>> index bda6da7..67f0ab6 100644
>> --- a/net/bluetooth/l2cap_core.c
>> +++ b/net/bluetooth/l2cap_core.c
>> @@ -3044,6 +3044,43 @@ static inline int l2cap_information_rsp(struct l2cap_conn *conn, struct l2cap_cm
>>  	return 0;
>>  }
>>
>> +static inline int l2cap_create_channel_req(struct l2cap_conn *conn,
>> +					struct l2cap_cmd_hdr *cmd, u8 *data)
>
> so I just question myself why we keep doing u8 *data here and not just
> fix everything to be a void *data.
>
>> +{
>> +	struct l2cap_create_chan_req *req =
>> +		(struct l2cap_create_chan_req *) data;
>
> Then these casting stuff would go away. And I bet it is just some
> leftover from the original L2CAP code.
>
> Or does anybody else have an idea why we keep on insisting on u8 *data?

I assume it traces back to "u8 *data = skb->data;" in 
l2cap_sig_channel(), but I see no reason to hang on to that type 
information either if it's just going to be cast away.

I'll change it for these new signal handlers.  The others can be in a 
separate cleanup patch.

>> +	struct l2cap_create_chan_rsp rsp;
>> +	u16 psm, scid;
>
> I think we might need to have a length check here first to ensure that
> the header packet is really full present.

Will add a length check.

>> +
>> +	psm = le16_to_cpu(req->psm);
>> +	scid = le16_to_cpu(req->scid);
>
> Otherwise this just accesses some random memory.
>
>> +
>> +	BT_DBG("psm %d, scid %d, amp_id %d", (int) psm, (int) scid,
>> +		(int) req->amp_id);
>
> Why are we casting to (int) here?

I'll remove them.

>> +
>> +	if (!enable_hs)
>> +		return -EINVAL;
>> +
>> +	/* Placeholder: Always reject */
>> +	rsp.dcid = 0;
>> +	rsp.scid = cpu_to_le16(scid);
>> +	rsp.result = L2CAP_CR_NO_MEM;
>> +	rsp.status = L2CAP_CS_NO_INFO;
>> +
>> +	l2cap_send_cmd(conn, cmd->ident, L2CAP_CREATE_CHAN_RSP,
>> +		       sizeof(rsp), &rsp);
>> +
>> +	return 0;
>> +}
>> +
>> +static inline int l2cap_create_channel_rsp(struct l2cap_conn *conn,
>> +					struct l2cap_cmd_hdr *cmd, u8 *data)
>> +{
>> +	BT_DBG("conn %p", conn);
>> +
>> +	return l2cap_connect_rsp(conn, cmd, data);
>> +}
>> +
>>  static inline int l2cap_check_conn_param(u16 min, u16 max, u16 latency,
>>  							u16 to_multiplier)
>>  {
>> @@ -3156,6 +3193,14 @@ static inline int l2cap_bredr_sig_cmd(struct l2cap_conn *conn,
>>  		err = l2cap_information_rsp(conn, cmd, data);
>>  		break;
>>
>> +	case L2CAP_CREATE_CHAN_REQ:
>> +		err = l2cap_create_channel_req(conn, cmd, data);
>> +		break;
>> +
>> +	case L2CAP_CREATE_CHAN_RSP:
>> +		err = l2cap_create_channel_rsp(conn, cmd, data);
>> +		break;
>> +
>>  	default:
>>  		BT_ERR("Unknown BR/EDR signaling command 0x%2.2x", cmd->code);
>>  		err = -EINVAL;


--
Mat Martineau
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum


  reply	other threads:[~2011-10-19 20:53 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-10-19 17:43 [PATCHv2 0/9] AMP interface and signal framework Mat Martineau
2011-10-19 17:43 ` [PATCHv2 1/9] Bluetooth: Add BT_CHANNEL_POLICY socket option Mat Martineau
2011-10-19 18:55   ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 2/9] Bluetooth: Change scope of the enable_hs module parameter Mat Martineau
2011-10-19 19:18   ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 3/9] Bluetooth: Add channel policy to getsockopt/setsockopt Mat Martineau
2011-10-19 18:54   ` Marcel Holtmann
2011-10-19 20:39     ` Mat Martineau
2011-10-19 17:44 ` [PATCHv2 4/9] Bluetooth: Add AMP-related data and structures for channel signals Mat Martineau
2011-10-19 18:58   ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 5/9] Bluetooth: Add signal handlers for channel creation Mat Martineau
2011-10-19 19:02   ` Marcel Holtmann
2011-10-19 20:53     ` Mat Martineau [this message]
2011-10-19 17:44 ` [PATCHv2 6/9] Bluetooth: Add definitions for L2CAP fixed channels Mat Martineau
2011-10-19 19:03   ` Marcel Holtmann
2011-10-19 21:25     ` Mat Martineau
2011-10-19 22:02       ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 7/9] Bluetooth: Use symbolic values for the fixed channel map Mat Martineau
2011-10-19 19:09   ` Marcel Holtmann
2011-10-19 21:44     ` Mat Martineau
2011-10-19 22:05       ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 8/9] Bluetooth: Add signal handlers for channel moves Mat Martineau
2011-10-19 19:11   ` Marcel Holtmann
2011-10-19 17:44 ` [PATCHv2 9/9] Bluetooth: Guarantee BR-EDR device will be registered as hci0 Mat Martineau
2011-10-19 19:17   ` Marcel Holtmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.DEB.2.02.1110191340400.1976@mathewm-linux \
    --to=mathewm@codeaurora.org \
    --cc=andrei.emeltchenko@intel.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=marcel@holtmann.org \
    --cc=padovan@profusion.mobi \
    --cc=pkrystad@codeaurora.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox