lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 18 Mar 2019 09:32:08 -0700 From: Stanislav Fomichev <sdf@...ichev.me> To: Sergey Senozhatsky <sergey.senozhatsky@...il.com> Cc: Sergey Senozhatsky <sergey.senozhatsky.work@...il.com>, Eric Dumazet <edumazet@...gle.com>, netdev <netdev@...r.kernel.org>, LKML <linux-kernel@...r.kernel.org> Subject: Re: [PATCH] tcp: don't use __constant_cpu_to_be32 On 03/16, Sergey Senozhatsky wrote: > On (03/16/19 14:19), Sergey Senozhatsky wrote: > > # define __bpf_ntohs(x) __builtin_bswap16(x) > > # define __bpf_htons(x) __builtin_bswap16(x) > > > > So I sort of suspect that what should have been done was that > > __HAVE_BUILTIN_BSWAP16__ ifdef, just like what include/uapi/linux/swab.h > > does. > > E.g. use uapi __swab16/__swab32 in selftests/bpf/bpf_endian.h? > > -=-=-=-=-=- > > tools/testing/selftests/bpf/bpf_endian.h | 32 ++++++++------------------------ > 1 file changed, 8 insertions(+), 24 deletions(-) > > diff --git a/tools/testing/selftests/bpf/bpf_endian.h b/tools/testing/selftests/bpf/bpf_endian.h > index b25595ea4a78..68789b4c7ef0 100644 > --- a/tools/testing/selftests/bpf/bpf_endian.h > +++ b/tools/testing/selftests/bpf/bpf_endian.h > @@ -20,38 +20,22 @@ > * use different targets. > */ > #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ > -# define __bpf_ntohs(x) __builtin_bswap16(x) > -# define __bpf_htons(x) __builtin_bswap16(x) > -# define __bpf_constant_ntohs(x) ___constant_swab16(x) > -# define __bpf_constant_htons(x) ___constant_swab16(x) > -# define __bpf_ntohl(x) __builtin_bswap32(x) > -# define __bpf_htonl(x) __builtin_bswap32(x) > -# define __bpf_constant_ntohl(x) ___constant_swab32(x) > -# define __bpf_constant_htonl(x) ___constant_swab32(x) > +# define __bpf_ntohs(x) __swab16(x) > +# define __bpf_htons(x) __swab16(x) > +# define __bpf_ntohl(x) __swab32(x) > +# define __bpf_htonl(x) __swab32(x) > #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ > # define __bpf_ntohs(x) (x) > # define __bpf_htons(x) (x) > -# define __bpf_constant_ntohs(x) (x) > -# define __bpf_constant_htons(x) (x) > # define __bpf_ntohl(x) (x) > # define __bpf_htonl(x) (x) > -# define __bpf_constant_ntohl(x) (x) > -# define __bpf_constant_htonl(x) (x) > #else > # error "Fix your compiler's __BYTE_ORDER__?!" > #endif > > -#define bpf_htons(x) \ > - (__builtin_constant_p(x) ? \ > - __bpf_constant_htons(x) : __bpf_htons(x)) > -#define bpf_ntohs(x) \ > - (__builtin_constant_p(x) ? \ > - __bpf_constant_ntohs(x) : __bpf_ntohs(x)) > -#define bpf_htonl(x) \ > - (__builtin_constant_p(x) ? \ > - __bpf_constant_htonl(x) : __bpf_htonl(x)) > -#define bpf_ntohl(x) \ > - (__builtin_constant_p(x) ? \ > - __bpf_constant_ntohl(x) : __bpf_ntohl(x)) > +#define bpf_htons(x) __bpf_htons((x)) > +#define bpf_ntohs(x) __bpf_ntohs((x)) > +#define bpf_htonl(x) __bpf_htonl((x)) > +#define bpf_ntohl(x) __bpf_ntohl((x)) At this point we can probably drop __bpf_xxx as well? Care to resend with proper description when bpf-next opens? > > #endif /* __BPF_ENDIAN__ */
Powered by blists - more mailing lists