From 531066f2b238b5aef235be9027fa3464f6b2d125 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 10 Jul 2003 11:09:47 -0700 Subject: [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. --- net/compat.c | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/net/compat.c b/net/compat.c index 625a95c9e6bf3a..459307c2038ebe 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); } -- cgit 1.2.3-korg