diff mbox series

[bpf-next] samples/bpf: silence compiler warning for xdpsock_user.c

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

Commit Message

Yonghong Song March 1, 2019, 6:19 a.m. UTC
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(-)

Comments

Jonathan Lemon March 1, 2019, 5:17 p.m. UTC | #1
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>
Song Liu March 1, 2019, 11:10 p.m. UTC | #2
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>
Daniel Borkmann March 2, 2019, 12:11 a.m. UTC | #3
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 mbox series

Patch

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 (;;) {