diff options
author | David S. Miller <davem@nuts.ninka.net> | 2003-07-10 11:09:47 -0700 |
---|---|---|
committer | David S. Miller <davem@nuts.ninka.net> | 2003-07-10 11:09:47 -0700 |
commit | 531066f2b238b5aef235be9027fa3464f6b2d125 (patch) | |
tree | 76192a8253626fb503a38fd3d129976cbc278da1 | |
parent | 6e4153afdfe36d5cb1469a73ba022b088fe5409d (diff) | |
download | history-531066f2b238b5aef235be9027fa3464f6b2d125.tar.gz |
[NET,COMPAT]: Delete bogus icmpv6 filter translation code.
A long time ago in a land far far away the icmpv6 filter
code bogusly used the "unsigned long" based bitops and
thus we had all kinds of endianness problems wrt. 32-bit
apps running on 64-bit machines. These days the icmpv6
code explicitly uses u32 fixed types and thus no translations
are necessary.
-rw-r--r-- | net/compat.c | 31 |
1 files changed, 0 insertions, 31 deletions
diff --git a/net/compat.c b/net/compat.c index 625a95c9e6bf3..459307c2038eb 100644 --- a/net/compat.c +++ b/net/compat.c @@ -405,34 +405,6 @@ static int do_set_attach_filter(int fd, int level, int optname, sizeof(struct sock_fprog)); } -static int do_set_icmpv6_filter(int fd, int level, int optname, - char *optval, int optlen) -{ - struct icmp6_filter kfilter; - mm_segment_t old_fs; - int ret, i; - - if (optlen < sizeof(kfilter)) - return -EINVAL; - if (copy_from_user(&kfilter, optval, sizeof(kfilter))) - return -EFAULT; - - for (i = 0; i < 8; i += 2) { - u32 tmp = kfilter.data[i]; - - kfilter.data[i] = kfilter.data[i + 1]; - kfilter.data[i + 1] = tmp; - } - - old_fs = get_fs(); - set_fs(KERNEL_DS); - ret = sys_setsockopt(fd, level, optname, - (char *) &kfilter, sizeof(kfilter)); - set_fs(old_fs); - - return ret; -} - static int do_set_sock_timeout(int fd, int level, int optname, char *optval, int optlen) { struct compat_timeval *up = (struct compat_timeval *) optval; @@ -465,9 +437,6 @@ asmlinkage long compat_sys_setsockopt(int fd, int level, int optname, optval, optlen); if (optname == SO_RCVTIMEO || optname == SO_SNDTIMEO) return do_set_sock_timeout(fd, level, optname, optval, optlen); - if (level == SOL_ICMPV6 && optname == ICMPV6_FILTER) - return do_set_icmpv6_filter(fd, level, optname, - optval, optlen); return sys_setsockopt(fd, level, optname, optval, optlen); } |