diff options
| author | Robert Richter <robert.richter@amd.com> | 2010-10-01 10:54:17 +0400 |
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2010-10-01 10:54:17 +0400 |
| commit | ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66 (patch) | |
| tree | b801ba4d7ebb1155df68d530df49444ffa6252cc /net/wireless/wext-core.c | |
| parent | 4cbe75be5c6ae86bdc7daec864eeb2dfd66f48bb (diff) | |
| parent | 98d943b02f6f1b57787ff1aa6f34d019a407e3ee (diff) | |
| download | linux-ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66.tar.xz | |
Merge branch 'oprofile/urgent' into oprofile/core
Conflicts:
arch/arm/oprofile/common.c
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'net/wireless/wext-core.c')
| -rw-r--r-- | net/wireless/wext-core.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/net/wireless/wext-core.c b/net/wireless/wext-core.c index 0ef17bc42bac..8f5116f5af19 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; |
