From: David Miller <davem@davemloft.net>
To: shaddy_baddah@hotmail.com
Cc: linux-wireless@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: zd1211rw (2.6.22 sparc64): unaligned access (do_rx)
Date: Tue, 20 Nov 2007 04:34:23 -0800 (PST) [thread overview]
Message-ID: <20071120.043423.42170421.davem@davemloft.net> (raw)
In-Reply-To: <20071119.002755.77617097.davem@davemloft.net>
From: David Miller <davem@davemloft.net>
Date: Mon, 19 Nov 2007 00:27:55 -0800 (PST)
> From: Shaddy Baddah <shaddy_baddah@hotmail.com>
> Date: Mon, 19 Nov 2007 11:56:39 +1100
>
> > If I try to scan for APs using iwlist, I get one AP listed, before a bus
> > error occurs. This of course, does not suggest that the problem is with
> > the driver, but I mention it for the record.
>
> This is an unaligned data access in the userland tools.
> Try to catch it with GDB and give us ths backtrace.
I think I've figured out what's happening here.
The kernel makes no effort whatsoever to translate iwe streams in
compat environments. And userspace then tries to "correct" this and
does so miserably. Likely this is what causes the bus error.
The fix is that we need to add some handling code
fs/compat_ioctl.c:do_wireless_ioctl() for the case where we are
returning an iwe stream (SIOCGIWSCAN).
It should not be very difficult to do this, since the compat format
will be the same size or smaller, it should be easy to recode the
thing in-place in the user buffer.
So you make a pass over the user buffer fixing things up and then you
adjust the iw_data length for the new size.
Alternatively, you can allocate a kernel buffer for this, use a 'fs =
get_fs(); set_fs(KERNEL_DS); ioctl(); set_fs(fs);' sequence, fixup the
iwe stream, then copy the everything back out to userspace.
Then we can delete all of this incredibly stupid code in the wireless
tools that attempts to fix this up in userspace.
Can someone implement this and test it or send Shaddy a patch to test?
Thanks.
next parent reply other threads:[~2007-11-20 12:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <4740DF47.4040206@hotmail.com>
[not found] ` <20071119.002755.77617097.davem@davemloft.net>
2007-11-20 12:34 ` David Miller [this message]
2007-11-20 13:15 ` zd1211rw (2.6.22 sparc64): unaligned access (do_rx) Johannes Berg
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=20071120.043423.42170421.davem@davemloft.net \
--to=davem@davemloft.net \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=shaddy_baddah@hotmail.com \
/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