Message ID | 20190301061941.2555233-1-yhs@fb.com |
---|---|
State | Accepted |
Delegated to: | BPF Maintainers |
Headers | show |
Series | [bpf-next] samples/bpf: silence compiler warning for xdpsock_user.c | expand |
On 28 Feb 2019, at 22:19, Yonghong Song wrote: > Compiling xdpsock_user.c with 4.8.5, I hit the following > compilation warning: > HOSTCC samples/bpf/xdpsock_user.o > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c: In > function ‘main’: > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:449:6: > warning: ‘idx_cq’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_cq, idx_fq; > ^ > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:606:7: > warning: ‘idx_rx’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_rx, idx_tx = 0; > ^ > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:506:6: > warning: ‘idx_rx’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_rx, idx_fq = 0; > > As an example, the code pattern looks like: > u32 idx_cq; > ... > ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); > if (ret) { > ... > } > ... idx_fq ... > The compiler warns since it does not know whether &idx_fq is assigned > or not inside the library function xsk_ring_prod__reserve(). > > Let us assign an initial value 0 to such auto variables to silence > compiler warning. > > Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for > AF_XDP access") > Signed-off-by: Yonghong Song <yhs@fb.com> > --- > samples/bpf/xdpsock_user.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c > index 9c76d6d43deb..d08ee1ab7bb4 100644 > --- a/samples/bpf/xdpsock_user.c > +++ b/samples/bpf/xdpsock_user.c > @@ -446,7 +446,7 @@ static void kick_tx(struct xsk_socket_info *xsk) > > static inline void complete_tx_l2fwd(struct xsk_socket_info *xsk) > { > - u32 idx_cq, idx_fq; > + u32 idx_cq = 0, idx_fq = 0; > unsigned int rcvd; > size_t ndescs; > > @@ -503,7 +503,7 @@ static inline void complete_tx_only(struct > xsk_socket_info *xsk) > static void rx_drop(struct xsk_socket_info *xsk) > { > unsigned int rcvd, i; > - u32 idx_rx, idx_fq = 0; > + u32 idx_rx = 0, idx_fq = 0; > int ret; > > rcvd = xsk_ring_cons__peek(&xsk->rx, BATCH_SIZE, &idx_rx); > @@ -603,7 +603,7 @@ static void l2fwd(struct xsk_socket_info *xsk) > { > for (;;) { > unsigned int rcvd, i; > - u32 idx_rx, idx_tx = 0; > + u32 idx_rx = 0, idx_tx = 0; > int ret; > > for (;;) { > -- > 2.17.1 Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com>
On Fri, Mar 1, 2019 at 11:10 AM Jonathan Lemon <jlemon@flugsvamp.com> wrote: > > On 28 Feb 2019, at 22:19, Yonghong Song wrote: > > > Compiling xdpsock_user.c with 4.8.5, I hit the following > > compilation warning: > > HOSTCC samples/bpf/xdpsock_user.o > > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c: In > > function ‘main’: > > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:449:6: > > warning: ‘idx_cq’ may be used unini > > tialized in this function [-Wmaybe-uninitialized] > > u32 idx_cq, idx_fq; > > ^ > > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:606:7: > > warning: ‘idx_rx’ may be used unini > > tialized in this function [-Wmaybe-uninitialized] > > u32 idx_rx, idx_tx = 0; > > ^ > > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:506:6: > > warning: ‘idx_rx’ may be used unini > > tialized in this function [-Wmaybe-uninitialized] > > u32 idx_rx, idx_fq = 0; > > > > As an example, the code pattern looks like: > > u32 idx_cq; > > ... > > ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); > > if (ret) { > > ... > > } > > ... idx_fq ... > > The compiler warns since it does not know whether &idx_fq is assigned > > or not inside the library function xsk_ring_prod__reserve(). > > > > Let us assign an initial value 0 to such auto variables to silence > > compiler warning. > > > > Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for > > AF_XDP access") > > Signed-off-by: Yonghong Song <yhs@fb.com> > > --- > > samples/bpf/xdpsock_user.c | 6 +++--- > > 1 file changed, 3 insertions(+), 3 deletions(-) > > > > diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c > > index 9c76d6d43deb..d08ee1ab7bb4 100644 > > --- a/samples/bpf/xdpsock_user.c > > +++ b/samples/bpf/xdpsock_user.c > > @@ -446,7 +446,7 @@ static void kick_tx(struct xsk_socket_info *xsk) > > > > static inline void complete_tx_l2fwd(struct xsk_socket_info *xsk) > > { > > - u32 idx_cq, idx_fq; > > + u32 idx_cq = 0, idx_fq = 0; > > unsigned int rcvd; > > size_t ndescs; > > > > @@ -503,7 +503,7 @@ static inline void complete_tx_only(struct > > xsk_socket_info *xsk) > > static void rx_drop(struct xsk_socket_info *xsk) > > { > > unsigned int rcvd, i; > > - u32 idx_rx, idx_fq = 0; > > + u32 idx_rx = 0, idx_fq = 0; > > int ret; > > > > rcvd = xsk_ring_cons__peek(&xsk->rx, BATCH_SIZE, &idx_rx); > > @@ -603,7 +603,7 @@ static void l2fwd(struct xsk_socket_info *xsk) > > { > > for (;;) { > > unsigned int rcvd, i; > > - u32 idx_rx, idx_tx = 0; > > + u32 idx_rx = 0, idx_tx = 0; > > int ret; > > > > for (;;) { > > -- > > 2.17.1 > > Acked-by: Jonathan Lemon <jonathan.lemon@gmail.com> Acked-by: Song Liu <songliubraving@fb.com>
On 03/01/2019 07:19 AM, Yonghong Song wrote: > Compiling xdpsock_user.c with 4.8.5, I hit the following > compilation warning: > HOSTCC samples/bpf/xdpsock_user.o > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c: In function ‘main’: > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:449:6: warning: ‘idx_cq’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_cq, idx_fq; > ^ > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:606:7: warning: ‘idx_rx’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_rx, idx_tx = 0; > ^ > /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:506:6: warning: ‘idx_rx’ may be used unini > tialized in this function [-Wmaybe-uninitialized] > u32 idx_rx, idx_fq = 0; > > As an example, the code pattern looks like: > u32 idx_cq; > ... > ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); > if (ret) { > ... > } > ... idx_fq ... > The compiler warns since it does not know whether &idx_fq is assigned > or not inside the library function xsk_ring_prod__reserve(). > > Let us assign an initial value 0 to such auto variables to silence > compiler warning. > > Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access") > Signed-off-by: Yonghong Song <yhs@fb.com> Applied, thanks!
diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c index 9c76d6d43deb..d08ee1ab7bb4 100644 --- a/samples/bpf/xdpsock_user.c +++ b/samples/bpf/xdpsock_user.c @@ -446,7 +446,7 @@ static void kick_tx(struct xsk_socket_info *xsk) static inline void complete_tx_l2fwd(struct xsk_socket_info *xsk) { - u32 idx_cq, idx_fq; + u32 idx_cq = 0, idx_fq = 0; unsigned int rcvd; size_t ndescs; @@ -503,7 +503,7 @@ static inline void complete_tx_only(struct xsk_socket_info *xsk) static void rx_drop(struct xsk_socket_info *xsk) { unsigned int rcvd, i; - u32 idx_rx, idx_fq = 0; + u32 idx_rx = 0, idx_fq = 0; int ret; rcvd = xsk_ring_cons__peek(&xsk->rx, BATCH_SIZE, &idx_rx); @@ -603,7 +603,7 @@ static void l2fwd(struct xsk_socket_info *xsk) { for (;;) { unsigned int rcvd, i; - u32 idx_rx, idx_tx = 0; + u32 idx_rx = 0, idx_tx = 0; int ret; for (;;) {
Compiling xdpsock_user.c with 4.8.5, I hit the following compilation warning: HOSTCC samples/bpf/xdpsock_user.o /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c: In function ‘main’: /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:449:6: warning: ‘idx_cq’ may be used unini tialized in this function [-Wmaybe-uninitialized] u32 idx_cq, idx_fq; ^ /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:606:7: warning: ‘idx_rx’ may be used unini tialized in this function [-Wmaybe-uninitialized] u32 idx_rx, idx_tx = 0; ^ /data/users/yhs/work/net-next/samples/bpf/xdpsock_user.c:506:6: warning: ‘idx_rx’ may be used unini tialized in this function [-Wmaybe-uninitialized] u32 idx_rx, idx_fq = 0; As an example, the code pattern looks like: u32 idx_cq; ... ret = xsk_ring_prod__reserve(&xsk->umem->fq, rcvd, &idx_fq); if (ret) { ... } ... idx_fq ... The compiler warns since it does not know whether &idx_fq is assigned or not inside the library function xsk_ring_prod__reserve(). Let us assign an initial value 0 to such auto variables to silence compiler warning. Fixes: 248c7f9c0e21 ("samples/bpf: convert xdpsock to use libbpf for AF_XDP access") Signed-off-by: Yonghong Song <yhs@fb.com> --- samples/bpf/xdpsock_user.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)