diff options
author | David S. Miller <davem@davemloft.net> | 2009-09-30 19:12:20 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-30 19:12:20 -0400 |
commit | b7058842c940ad2c08dd829b21e5c92ebe3b8758 (patch) | |
tree | 5fe78d599fc345ca0bcd4b083b79095a54b2921b /include/net/inet_connection_sock.h | |
parent | eb1cf0f8f7a9e5a6d573d5bd72c015686a042db0 (diff) |
net: Make setsockopt() optlen be unsigned.
This provides safety against negative optlen at the type
level instead of depending upon (sometimes non-trivial)
checks against this sprinkled all over the the place, in
each and every implementation.
Based upon work done by Arjan van de Ven and feedback
from Linus Torvalds.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/inet_connection_sock.h')
-rw-r--r-- | include/net/inet_connection_sock.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/net/inet_connection_sock.h b/include/net/inet_connection_sock.h index 03cffd9f64e3..696d6e4ce68a 100644 --- a/include/net/inet_connection_sock.h +++ b/include/net/inet_connection_sock.h | |||
@@ -48,13 +48,13 @@ struct inet_connection_sock_af_ops { | |||
48 | u16 net_header_len; | 48 | u16 net_header_len; |
49 | u16 sockaddr_len; | 49 | u16 sockaddr_len; |
50 | int (*setsockopt)(struct sock *sk, int level, int optname, | 50 | int (*setsockopt)(struct sock *sk, int level, int optname, |
51 | char __user *optval, int optlen); | 51 | char __user *optval, unsigned int optlen); |
52 | int (*getsockopt)(struct sock *sk, int level, int optname, | 52 | int (*getsockopt)(struct sock *sk, int level, int optname, |
53 | char __user *optval, int __user *optlen); | 53 | char __user *optval, int __user *optlen); |
54 | #ifdef CONFIG_COMPAT | 54 | #ifdef CONFIG_COMPAT |
55 | int (*compat_setsockopt)(struct sock *sk, | 55 | int (*compat_setsockopt)(struct sock *sk, |
56 | int level, int optname, | 56 | int level, int optname, |
57 | char __user *optval, int optlen); | 57 | char __user *optval, unsigned int optlen); |
58 | int (*compat_getsockopt)(struct sock *sk, | 58 | int (*compat_getsockopt)(struct sock *sk, |
59 | int level, int optname, | 59 | int level, int optname, |
60 | char __user *optval, int __user *optlen); | 60 | char __user *optval, int __user *optlen); |
@@ -332,5 +332,5 @@ extern void inet_csk_addr2sockaddr(struct sock *sk, struct sockaddr *uaddr); | |||
332 | extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname, | 332 | extern int inet_csk_compat_getsockopt(struct sock *sk, int level, int optname, |
333 | char __user *optval, int __user *optlen); | 333 | char __user *optval, int __user *optlen); |
334 | extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname, | 334 | extern int inet_csk_compat_setsockopt(struct sock *sk, int level, int optname, |
335 | char __user *optval, int optlen); | 335 | char __user *optval, unsigned int optlen); |
336 | #endif /* _INET_CONNECTION_SOCK_H */ | 336 | #endif /* _INET_CONNECTION_SOCK_H */ |