lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Wed, 04 Jun 2008 19:09:06 +0900
From:	Masakazu Mokuno <mokuno@...sony.co.jp>
To:	David Miller <davem@...emloft.net>
Cc:	linux-wireless@...r.kernel.org, linville@...driver.com,
	netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 0/12]: Proper compat WEXT support.


Thanks for updating the patch set!!

On Tue, 03 Jun 2008 13:27:55 -0700 (PDT)
David Miller <davem@...emloft.net> wrote:


> This is a refresh of my previous WEXT compat patch set.
> 
> I've actually tested these exact patches on sparc64 with a RNDIS based
> USB wireless device from Linksys.  I was able to perform iwconfig
> commands, check iwlist, bring up the interface and use it properly.
> All with 32-bit tools.  I've also done an allmodconfig sanity
> build check on sparc64.
> 
> The one thing I was not able to test yet is wpa_supplicant use, and
> that likely doesn't work properly yet, but we can fix that on top and
> these patches do not break native non-compat binaries.  They do make a
> lot of compat stuff work which wasn't the case before.  So applying
> this stuff makes sense, and we can get wpa_supplicant working if it
> isn't working using follow-on patches.
> 
> The patch set starts by cleaning up the code so that we can avoid
> having multiple copies of the WEXT main dispatch routines, one for
> compat and one for the non-compat case.
> 
> Next, basic compat level handling of the WEXT ioctl is added, and the
> equivalent code in the compat_ioctl.c file is removed.
> 
> Finally, compat IWE stream munging is added for the wireless layer.
> When we get a compat WEXT ioctl request, we set a bit in the request
> info blob, and the stream building helpers tip off this to format the
> stream entries properly.


I'm testing these patches on my PS3.  I've found a problem.

With 32-bit wireless-tools v28, the bitrates from the scan result were
wrong (with gelic/rt2x00 driver):

[root@...alhost wireless_tools.28]# ./iwlist wlan3 scanning
Warning: Driver for device wlan3 has been compiled with version 22
of Wireless Extension, while this program supports up to version 20.
Some things may be broken...

wlan3     Scan completed :
          Cell 01 - Address: 00:06:25:C6:B9:A7
                    ESSID:"planexuser"
                    Mode:Master
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=51/100  Signal level=-50 dBm  
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : CCMP 
                        Pairwise Ciphers (1) : CCMP 
                        Authentication Suites (1) : PSK  
                    Bit Rates:0 kb/s; 0 kb/s; 0 kb/s; 0 kb/s; 0 kb/s
                              0 kb/s; 0 kb/s; 0 kb/s; 0 kb/s; 0 kb/s
                              0 kb/s; 0 kb/s
                    Extra:tsf=000000013f454d92

With 32-bit wireless-tools v30 (i.e. the SOIGIWSCAN workaround
included):

[root@...alhost wireless_tools.30]# ./iwlist wlan3 scanning
wlan3     Scan completed :
          Cell 01 - Address: 00:06:25:C6:B9:A7
                    ESSID:"planexuser"
                    Mode:Master
                    Channel:1
                    Frequency:2.412 GHz (Channel 1)
                    Quality=48/100  Signal level=-68 dBm  
                    Encryption key:on
                    IE: WPA Version 1
                        Group Cipher : CCMP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : PSK
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
                              24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
                              12 Mb/s; 48 Mb/s
                    Extra:tsf=000000014e16ea91

I think the callers of iwe_stream_add_value() need to do some
preparations before the call if iocompat is needed, like the following.

---
 drivers/net/ps3_gelic_wireless.c |    7 +++++++
 net/mac80211/mlme.c              |   11 ++++++++++-
 2 files changed, 17 insertions(+), 1 deletion(-)

--- a/drivers/net/ps3_gelic_wireless.c
+++ b/drivers/net/ps3_gelic_wireless.c
@@ -605,7 +605,14 @@ static char *gelic_wl_translate_scan(str
 	iwe.cmd = SIOCGIWRATE;
 	iwe.u.bitrate.fixed = iwe.u.bitrate.disabled = 0;
 	/* to stuff multiple values in one event */
+#ifdef CONFIG_COMPAT
+	if (info->flags & IW_REQUEST_FLAG_COMPAT)
+		tmp = ev + IW_EV_COMPAT_LCP_LEN;
+	else
+		tmp = ev + IW_EV_LCP_LEN;
+#else
 	tmp = ev + IW_EV_LCP_LEN;
+#endif
 	/* put them in ascendant order (older is first) */
 	i = 0;
 	j = 0;
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -4147,9 +4147,18 @@ ieee80211_sta_scan_result(struct net_dev
 
 	if (bss && bss->supp_rates_len > 0) {
 		/* display all supported rates in readable format */
-		char *p = current_ev + IW_EV_LCP_LEN;
+		char *p;
 		int i;
 
+#ifdef CONFIG_COMPAT
+		if (info->flags & IW_REQUEST_FLAG_COMPAT)
+			p = current_ev + IW_EV_COMPAT_LCP_LEN;
+		else
+			p = current_ev + IW_EV_LCP_LEN;
+#else
+		p = current_ev + IW_EV_LCP_LEN;
+#endif
+
 		memset(&iwe, 0, sizeof(iwe));
 		iwe.cmd = SIOCGIWRATE;
 		/* Those two flags are ignored... */

-- 
Masakazu Mokuno

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Powered by blists - more mailing lists