IPv6: Fix the return value of ipv6_getsockopt
Subsystems (3)
PATCH 1/1 IPv6: Fix the return value of ipv6_getsockopt
If CONFIG_NETFILTER if not selected when compile the kernel source code, ipv6_getsockopt will returen an EINVAL error if optname is not supported by the kernel. But if CONFIG_NETFILTER is selected, ENOPROTOOPT error will be return.
This patch fix to always return ENOPROTOOPT error if optname argument of ipv6_getsockopt is not supported by the kernel.
net/ipv6/ipv6_sockglue.c +0 -0
@@ -1046,7 +1046,7 @@ static int do_ipv6_getsockopt(struct soc
break; default: - return -EINVAL; + return -ENOPROTOOPT; } len = min_t(unsigned int, sizeof(int), len); if(put_user(len, optlen))
@@ -1069,9 +1069,8 @@ int ipv6_getsockopt(struct sock *sk, int
err = do_ipv6_getsockopt(sk, level, optname, optval, optlen);
#ifdef CONFIG_NETFILTER
- /* we need to exclude all possible EINVALs except default case */
- if (err == -EINVAL && optname != IPV6_ADDRFORM &&
- optname != MCAST_MSFILTER) {
+ /* we need to exclude all possible ENOPROTOOPTs except default case */
+ if (err == -ENOPROTOOPT && optname != IPV6_2292PKTOPTIONS) {
int len;
if (get_user(len, optlen))@@ -1108,9 +1107,8 @@ int compat_ipv6_getsockopt(struct sock *
err = do_ipv6_getsockopt(sk, level, optname, optval, optlen);
#ifdef CONFIG_NETFILTER
- /* we need to exclude all possible EINVALs except default case */
- if (err == -EINVAL && optname != IPV6_ADDRFORM &&
- optname != MCAST_MSFILTER) {
+ /* we need to exclude all possible ENOPROTOOPTs except default case */
+ if (err == -ENOPROTOOPT && optname != IPV6_2292PKTOPTIONS) {
int len;
if (get_user(len, optlen))David Miller
maintainerFrom: Wei Yongjun <[email protected]>
Date: Thu, 13 Dec 2007 14:44:00 +0900
Quoted 8 lines
If
CONFIG_NETFILTERif not selected when compile the kernel source code,ipv6_getsockoptwill returen an EINVAL error if optname is not supported by the kernel. But ifCONFIG_NETFILTERis selected, ENOPROTOOPT error will be return.
This patch fix to always return ENOPROTOOPT error if optname argument ofipv6_getsockoptis not supported by the kernel.Signed-off-by Wei Yongjun <[email protected]>
Patch applied to net-2.6, thanks for this bug fix.