summaryrefslogtreecommitdiffstats
path: root/net/wireless/wext-core.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-09-24 15:52:34 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-09-24 15:52:34 -0400
commit29ad2facd47f8e37eab8b156e2c384fa181c8b4a (patch)
tree25d4df186cd631810ff15a8e7d37cb6cdd806cdb /net/wireless/wext-core.c
parent6e5c2b4e8addfaab8ef54dedaf7b607e1585c35b (diff)
parentcd87a2d3a33d75a646f1aa1aa2ee5bf712d6f963 (diff)
downloadop-kernel-dev-29ad2facd47f8e37eab8b156e2c384fa181c8b4a.zip
op-kernel-dev-29ad2facd47f8e37eab8b156e2c384fa181c8b4a.tar.gz
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6
Conflicts: drivers/net/wireless/ath/ath5k/base.c net/mac80211/main.c
Diffstat (limited to 'net/wireless/wext-core.c')
-rw-r--r--net/wireless/wext-core.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c
index 4038593..dc675a3 100644
--- a/net/wireless/wext-core.c
+++ b/net/wireless/wext-core.c
@@ -782,6 +782,22 @@ static int ioctl_standard_iw_point(struct iw_point *iwp, unsigned int cmd,
}
}
+ if (IW_IS_GET(cmd) && !(descr->flags & IW_DESCR_FLAG_NOMAX)) {
+ /*
+ * If this is a GET, but not NOMAX, it means that the extra
+ * data is not bounded by userspace, but by max_tokens. Thus
+ * set the length to max_tokens. This matches the extra data
+ * allocation.
+ * The driver should fill it with the number of tokens it
+ * provided, and it may check iwp->length rather than having
+ * knowledge of max_tokens. If the driver doesn't change the
+ * iwp->length, this ioctl just copies back max_token tokens
+ * filled with zeroes. Hopefully the driver isn't claiming
+ * them to be valid data.
+ */
+ iwp->length = descr->max_tokens;
+ }
+
err = handler(dev, info, (union iwreq_data *) iwp, extra);
iwp->length += essid_compat;
OpenPOWER on IntegriCloud