]> git.baikalelectronics.ru Git - kernel.git/commit
dev_ioctl: copy only the smaller struct iwreq for wext
authorJohannes Berg <johannes.berg@intel.com>
Wed, 14 Jun 2017 07:28:11 +0000 (09:28 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 14 Jun 2017 11:52:44 +0000 (13:52 +0200)
commitbb9f44756681856e431dc3690c8f75a32394acb9
treefc5f16101d532733fd8e4d34ea064313580fa163
parente7f69d1d1f5433f9c854a5598a2611ac8a334dee
dev_ioctl: copy only the smaller struct iwreq for wext

Unfortunately, struct iwreq isn't a proper subset of struct ifreq,
but is still handled by the same code path. Robert reported that
then applications may (randomly) fault if the struct iwreq they
pass happens to land within 8 bytes of the end of a mapping (the
struct is only 32 bytes, vs. struct ifreq's 40 bytes).

To fix this, pull out the code handling wireless extension ioctls
and copy only the smaller structure in this case.

This bug goes back a long time, I tracked that it was introduced
into mainline in 2.1.15, over 20 years ago!

This fixes https://bugzilla.kernel.org/show_bug.cgi?id=195869

Reported-by: Robert O'Callahan <robert@ocallahan.org>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
include/net/wext.h
net/core/dev_ioctl.c
net/wireless/wext-core.c