public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] bluetooth: fix unaligned access to l2cap conf data
@ 2010-10-16 22:29 Mike Frysinger
  2010-10-18 11:51 ` Marcel Holtmann
  2010-10-18 18:17 ` Harvey Harrison
  0 siblings, 2 replies; 8+ messages in thread
From: Mike Frysinger @ 2010-10-16 22:29 UTC (permalink / raw)
  To: linux-bluetooth, Marcel Holtmann
  Cc: uclinux-dist-devel, linux-kernel, Andrew Morton, steven miao

From: steven miao <realmz6@gmail.com>

In function l2cap_get_conf_opt() and l2cap_add_conf_opt() the address of
opt->val sometimes is not at the edge of 2-bytes/4-bytes, so 2-bytes/4 bytes
access will cause data misalignment exeception.  Use get_unaligned_le16/32
and put_unaligned_le16/32 function to avoid data misalignment execption.

Signed-off-by: steven miao <realmz6@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
---
was posted a month ago with no feedback ...

 net/bluetooth/l2cap.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 0b54b7d..65bcdc1 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -2401,11 +2401,11 @@ static inline int l2cap_get_conf_opt(void **ptr, int *type, int *olen, unsigned
 		break;
 
 	case 2:
-		*val = __le16_to_cpu(*((__le16 *) opt->val));
+		*val = get_unaligned_le16(opt->val);
 		break;
 
 	case 4:
-		*val = __le32_to_cpu(*((__le32 *) opt->val));
+		*val = get_unaligned_le32(opt->val);
 		break;
 
 	default:
@@ -2432,11 +2432,11 @@ static void l2cap_add_conf_opt(void **ptr, u8 type, u8 len, unsigned long val)
 		break;
 
 	case 2:
-		*((__le16 *) opt->val) = cpu_to_le16(val);
+		put_unaligned_le16(cpu_to_le16(val), opt->val);
 		break;
 
 	case 4:
-		*((__le32 *) opt->val) = cpu_to_le32(val);
+		put_unaligned_le32(cpu_to_le32(val), opt->val);
 		break;
 
 	default:
-- 
1.7.3.1


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-16 22:29 [PATCH] bluetooth: fix unaligned access to l2cap conf data Mike Frysinger
@ 2010-10-18 11:51 ` Marcel Holtmann
  2010-10-18 15:59   ` Gustavo F. Padovan
  2010-10-18 18:17 ` Harvey Harrison
  1 sibling, 1 reply; 8+ messages in thread
From: Marcel Holtmann @ 2010-10-18 11:51 UTC (permalink / raw)
  To: Mike Frysinger
  Cc: linux-bluetooth, uclinux-dist-devel, linux-kernel, Andrew Morton,
	steven miao

Hi Mike,

> In function l2cap_get_conf_opt() and l2cap_add_conf_opt() the address of
> opt->val sometimes is not at the edge of 2-bytes/4-bytes, so 2-bytes/4 bytes
> access will cause data misalignment exeception.  Use get_unaligned_le16/32
> and put_unaligned_le16/32 function to avoid data misalignment execption.
> 
> Signed-off-by: steven miao <realmz6@gmail.com>
> Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> ---
> was posted a month ago with no feedback ...

must have slipped through. However I don't remember it being on
linux-bluetooth at all. Maybe it was on the other mailing lists :(

Acked-by: Marcel Holtmann <marcel@holtmann.org>

Regards

Marcel



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-18 11:51 ` Marcel Holtmann
@ 2010-10-18 15:59   ` Gustavo F. Padovan
  0 siblings, 0 replies; 8+ messages in thread
From: Gustavo F. Padovan @ 2010-10-18 15:59 UTC (permalink / raw)
  To: Marcel Holtmann
  Cc: Mike Frysinger, linux-bluetooth, uclinux-dist-devel, linux-kernel,
	Andrew Morton, steven miao

Hi Mike,

* Marcel Holtmann <marcel@holtmann.org> [2010-10-18 13:51:46 +0200]:

> Hi Mike,
> 
> > In function l2cap_get_conf_opt() and l2cap_add_conf_opt() the address of
> > opt->val sometimes is not at the edge of 2-bytes/4-bytes, so 2-bytes/4 bytes
> > access will cause data misalignment exeception.  Use get_unaligned_le16/32
> > and put_unaligned_le16/32 function to avoid data misalignment execption.
> > 
> > Signed-off-by: steven miao <realmz6@gmail.com>
> > Signed-off-by: Mike Frysinger <vapier@gentoo.org>
> > ---
> > was posted a month ago with no feedback ...
> 
> must have slipped through. However I don't remember it being on
> linux-bluetooth at all. Maybe it was on the other mailing lists :(

Actually I remember it, but it got lost by some way. :(

> 
> Acked-by: Marcel Holtmann <marcel@holtmann.org>

Applied, thanks.

-- 
Gustavo F. Padovan
ProFUSION embedded systems - http://profusion.mobi

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-18 18:17 ` Harvey Harrison
@ 2010-10-18 16:32   ` Gustavo F. Padovan
  2010-10-18 19:10     ` Mike Frysinger
  0 siblings, 1 reply; 8+ messages in thread
From: Gustavo F. Padovan @ 2010-10-18 16:32 UTC (permalink / raw)
  To: Harvey Harrison
  Cc: Mike Frysinger, linux-bluetooth, Marcel Holtmann,
	uclinux-dist-devel, linux-kernel, Andrew Morton, steven miao

Hi Harvey,

* Harvey Harrison <harvey.harrison@gmail.com> [2010-10-18 11:17:28 -0700]:

> On Sat, Oct 16, 2010 at 3:29 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> > From: steven miao <realmz6@gmail.com>
> >
> >
> >        case 2:
> > -               *((__le16 *) opt->val) = cpu_to_le16(val);
> > +               put_unaligned_le16(cpu_to_le16(val), opt->val);
> >                break;
> >
> 
> I think you wanted:
> put_unaligned_le16(val, opt->val);

I fixed that in the tree. Thanks for the report. 

-- 
Gustavo F. Padovan
ProFUSION embedded systems - http://profusion.mobi

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-16 22:29 [PATCH] bluetooth: fix unaligned access to l2cap conf data Mike Frysinger
  2010-10-18 11:51 ` Marcel Holtmann
@ 2010-10-18 18:17 ` Harvey Harrison
  2010-10-18 16:32   ` Gustavo F. Padovan
  1 sibling, 1 reply; 8+ messages in thread
From: Harvey Harrison @ 2010-10-18 18:17 UTC (permalink / raw)
  To: Mike Frysinger
  Cc: linux-bluetooth, Marcel Holtmann, uclinux-dist-devel,
	linux-kernel, Andrew Morton, steven miao

On Sat, Oct 16, 2010 at 3:29 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> From: steven miao <realmz6@gmail.com>
>
>
>        case 2:
> -               *((__le16 *) opt->val) = cpu_to_le16(val);
> +               put_unaligned_le16(cpu_to_le16(val), opt->val);
>                break;
>

I think you wanted:
put_unaligned_le16(val, opt->val);

Cheers,

Harvey

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-18 16:32   ` Gustavo F. Padovan
@ 2010-10-18 19:10     ` Mike Frysinger
  2010-10-18 19:12       ` Gustavo F. Padovan
  0 siblings, 1 reply; 8+ messages in thread
From: Mike Frysinger @ 2010-10-18 19:10 UTC (permalink / raw)
  To: Gustavo F. Padovan
  Cc: Harvey Harrison, linux-bluetooth, Marcel Holtmann,
	uclinux-dist-devel, linux-kernel, Andrew Morton, steven miao

On Mon, Oct 18, 2010 at 12:32, Gustavo F. Padovan wrote:
> * Harvey Harrison <harvey.harrison@gmail.com> [2010-10-18 11:17:28 -0700]:
>> On Sat, Oct 16, 2010 at 3:29 PM, Mike Frysinger <vapier@gentoo.org> wrote:
>> > From: steven miao <realmz6@gmail.com>
>> >
>> >        case 2:
>> > -               *((__le16 *) opt->val) = cpu_to_le16(val);
>> > +               put_unaligned_le16(cpu_to_le16(val), opt->val);
>> >                break;
>>
>> I think you wanted:
>> put_unaligned_le16(val, opt->val);
>
> I fixed that in the tree. Thanks for the report.

i guess you fixed the 32bit one too ?
  put_unaligned_le32(cpu_to_le32(val), opt->val);
-mike

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-18 19:10     ` Mike Frysinger
@ 2010-10-18 19:12       ` Gustavo F. Padovan
  2010-10-18 19:39         ` Mike Frysinger
  0 siblings, 1 reply; 8+ messages in thread
From: Gustavo F. Padovan @ 2010-10-18 19:12 UTC (permalink / raw)
  To: Mike Frysinger
  Cc: Harvey Harrison, linux-bluetooth, Marcel Holtmann,
	uclinux-dist-devel, linux-kernel, Andrew Morton, steven miao

* Mike Frysinger <vapier@gentoo.org> [2010-10-18 15:10:36 -0400]:

> On Mon, Oct 18, 2010 at 12:32, Gustavo F. Padovan wrote:
> > * Harvey Harrison <harvey.harrison@gmail.com> [2010-10-18 11:17:28 -0700]:
> >> On Sat, Oct 16, 2010 at 3:29 PM, Mike Frysinger <vapier@gentoo.org> wrote:
> >> > From: steven miao <realmz6@gmail.com>
> >> >
> >> >        case 2:
> >> > -               *((__le16 *) opt->val) = cpu_to_le16(val);
> >> > +               put_unaligned_le16(cpu_to_le16(val), opt->val);
> >> >                break;
> >>
> >> I think you wanted:
> >> put_unaligned_le16(val, opt->val);
> >
> > I fixed that in the tree. Thanks for the report.
> 
> i guess you fixed the 32bit one too ?
>   put_unaligned_le32(cpu_to_le32(val), opt->val);

Yes, I did.

-- 
Gustavo F. Padovan
ProFUSION embedded systems - http://profusion.mobi

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH] bluetooth: fix unaligned access to l2cap conf data
  2010-10-18 19:12       ` Gustavo F. Padovan
@ 2010-10-18 19:39         ` Mike Frysinger
  0 siblings, 0 replies; 8+ messages in thread
From: Mike Frysinger @ 2010-10-18 19:39 UTC (permalink / raw)
  To: Gustavo F. Padovan
  Cc: Harvey Harrison, linux-bluetooth, Marcel Holtmann,
	uclinux-dist-devel, linux-kernel, Andrew Morton, steven miao

On Mon, Oct 18, 2010 at 15:12, Gustavo F. Padovan wrote:
> * Mike Frysinger <vapier@gentoo.org> [2010-10-18 15:10:36 -0400]:
>> On Mon, Oct 18, 2010 at 12:32, Gustavo F. Padovan wrote:
>> > * Harvey Harrison <harvey.harrison@gmail.com> [2010-10-18 11:17:28 -0700]:
>> >> On Sat, Oct 16, 2010 at 3:29 PM, Mike Frysinger <vapier@gentoo.org> wrote:
>> >> > From: steven miao <realmz6@gmail.com>
>> >> >
>> >> >        case 2:
>> >> > -               *((__le16 *) opt->val) = cpu_to_le16(val);
>> >> > +               put_unaligned_le16(cpu_to_le16(val), opt->val);
>> >> >                break;
>> >>
>> >> I think you wanted:
>> >> put_unaligned_le16(val, opt->val);
>> >
>> > I fixed that in the tree. Thanks for the report.
>>
>> i guess you fixed the 32bit one too ?
>>   put_unaligned_le32(cpu_to_le32(val), opt->val);
>
> Yes, I did.

cool.  thanks guys !
-mike

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-10-18 19:39 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-16 22:29 [PATCH] bluetooth: fix unaligned access to l2cap conf data Mike Frysinger
2010-10-18 11:51 ` Marcel Holtmann
2010-10-18 15:59   ` Gustavo F. Padovan
2010-10-18 18:17 ` Harvey Harrison
2010-10-18 16:32   ` Gustavo F. Padovan
2010-10-18 19:10     ` Mike Frysinger
2010-10-18 19:12       ` Gustavo F. Padovan
2010-10-18 19:39         ` Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox