diff options
author | Christoph Hellwig <hch@lst.de> | 2020-07-28 19:38:36 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-07-28 23:43:40 +0300 |
commit | a31edb2059ed4e498f9aa8230c734b59d0ad797a (patch) | |
tree | 050f16554295c22db098bb4e81021e21d2718c5f /net/ipv4 | |
parent | d3c48151512922dd35f1f393b30b9138e4441d14 (diff) | |
download | linux-a31edb2059ed4e498f9aa8230c734b59d0ad797a.tar.xz |
net: improve the user pointer check in init_user_sockptr
Make sure not just the pointer itself but the whole range lies in
the user address space. For that pass the length and then use
the access_ok helper to do the check.
Fixes: 6d04fe15f78a ("net: optimize the sockptr_t for unified kernel/user address spaces")
Reported-by: David Laight <David.Laight@ACULAB.COM>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4')
-rw-r--r-- | net/ipv4/bpfilter/sockopt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/bpfilter/sockopt.c b/net/ipv4/bpfilter/sockopt.c index 94f18d2352d0..545b2640f019 100644 --- a/net/ipv4/bpfilter/sockopt.c +++ b/net/ipv4/bpfilter/sockopt.c @@ -65,7 +65,7 @@ int bpfilter_ip_get_sockopt(struct sock *sk, int optname, if (get_user(len, optlen)) return -EFAULT; - err = init_user_sockptr(&optval, user_optval); + err = init_user_sockptr(&optval, user_optval, len); if (err) return err; return bpfilter_mbox_request(sk, optname, optval, len, false); |