From: Maciej Żenczykowski Date: Wed, 19 Aug 2020 01:07:09 +0000 (-0700) Subject: net-tun: Add type safety to tun_xdp_to_ptr() and tun_ptr_to_xdp() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=b558b6c24068d87ffcd95dad3bf0d9bd2ac290e9;p=linux.git net-tun: Add type safety to tun_xdp_to_ptr() and tun_ptr_to_xdp() This reduces likelihood of incorrect use. Test: builds Signed-off-by: Maciej Żenczykowski Signed-off-by: Alexei Starovoitov Link: https://lore.kernel.org/bpf/20200819010710.3959310-1-zenczykowski@gmail.com --- diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 3c11a77f5709f..5dd7f353eeef5 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -225,13 +225,13 @@ bool tun_is_xdp_frame(void *ptr) } EXPORT_SYMBOL(tun_is_xdp_frame); -void *tun_xdp_to_ptr(void *ptr) +void *tun_xdp_to_ptr(struct xdp_frame *xdp) { - return (void *)((unsigned long)ptr | TUN_XDP_FLAG); + return (void *)((unsigned long)xdp | TUN_XDP_FLAG); } EXPORT_SYMBOL(tun_xdp_to_ptr); -void *tun_ptr_to_xdp(void *ptr) +struct xdp_frame *tun_ptr_to_xdp(void *ptr) { return (void *)((unsigned long)ptr & ~TUN_XDP_FLAG); } diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h index 5bda8cf457b62..6c37e1dbc5df1 100644 --- a/include/linux/if_tun.h +++ b/include/linux/if_tun.h @@ -28,8 +28,8 @@ struct tun_xdp_hdr { struct socket *tun_get_socket(struct file *); struct ptr_ring *tun_get_tx_ring(struct file *file); bool tun_is_xdp_frame(void *ptr); -void *tun_xdp_to_ptr(void *ptr); -void *tun_ptr_to_xdp(void *ptr); +void *tun_xdp_to_ptr(struct xdp_frame *xdp); +struct xdp_frame *tun_ptr_to_xdp(void *ptr); void tun_ptr_free(void *ptr); #else #include @@ -48,11 +48,11 @@ static inline bool tun_is_xdp_frame(void *ptr) { return false; } -static inline void *tun_xdp_to_ptr(void *ptr) +static inline void *tun_xdp_to_ptr(struct xdp_frame *xdp) { return NULL; } -static inline void *tun_ptr_to_xdp(void *ptr) +static inline struct xdp_frame *tun_ptr_to_xdp(void *ptr) { return NULL; }