2014-06-11 11:09:20

by Dmitry Popov

[permalink] [raw]
Subject: [PATCH] ip_vti: fix sparse warnings for VTI_ISVTI

This patch fixes the following sparse warnings:

net/ipv4/ip_tunnel.c:245:53: warning: restricted __be16 degrades to integer
net/ipv4/ip_vti.c:321:19: warning: incorrect type in assignment (different base types)
net/ipv4/ip_vti.c:321:19: expected restricted __be16 [addressable] [assigned] [usertype] i_flags
net/ipv4/ip_vti.c:321:19: got int
net/ipv4/ip_vti.c:447:24: warning: incorrect type in assignment (different base types)
net/ipv4/ip_vti.c:447:24: expected restricted __be16 [usertype] i_flags
net/ipv4/ip_vti.c:447:24: got int

Since VTI_ISVTI is always used with ip_tunnel_parm->i_flags (which is __be16),
we can __force cast VTI_ISVTI to __be16 in header file.

Signed-off-by: Dmitry Popov <[email protected]>
---
include/uapi/linux/if_tunnel.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index aee73d0..3bce9e9 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -100,7 +100,7 @@ enum {
#define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)

/* VTI-mode i_flags */
-#define VTI_ISVTI 0x0001
+#define VTI_ISVTI ((__force __be16)0x0001)

enum {
IFLA_VTI_UNSPEC,


2014-06-11 12:02:21

by Dmitry Popov

[permalink] [raw]
Subject: Re: [PATCH] ip_vti: fix sparse warnings for VTI_ISVTI

On Wed, 11 Jun 2014 15:09:14 +0400
Dmitry Popov <[email protected]> wrote:

>
> Since VTI_ISVTI is always used with ip_tunnel_parm->i_flags (which is __be16),
> we can __force cast VTI_ISVTI to __be16 in header file.
>

If this patch is okay I will submit it to iproute2 too. if_tunnel.h has to be
synced.

2014-06-11 15:40:41

by Stephen Hemminger

[permalink] [raw]
Subject: Re: [PATCH] ip_vti: fix sparse warnings for VTI_ISVTI

On Wed, 11 Jun 2014 16:02:15 +0400
Dmitry Popov <[email protected]> wrote:

> On Wed, 11 Jun 2014 15:09:14 +0400
> Dmitry Popov <[email protected]> wrote:
>
> >
> > Since VTI_ISVTI is always used with ip_tunnel_parm->i_flags (which is __be16),
> > we can __force cast VTI_ISVTI to __be16 in header file.
> >
>
> If this patch is okay I will submit it to iproute2 too. if_tunnel.h has to be
> synced.

don't bother with iproute2 patch. I periodically resync sanitized headers from
kernel to iproute2.

2014-06-11 22:41:05

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] ip_vti: fix sparse warnings for VTI_ISVTI

From: Dmitry Popov <[email protected]>
Date: Wed, 11 Jun 2014 15:09:14 +0400

> This patch fixes the following sparse warnings:
>
> net/ipv4/ip_tunnel.c:245:53: warning: restricted __be16 degrades to integer
> net/ipv4/ip_vti.c:321:19: warning: incorrect type in assignment (different base types)
> net/ipv4/ip_vti.c:321:19: expected restricted __be16 [addressable] [assigned] [usertype] i_flags
> net/ipv4/ip_vti.c:321:19: got int
> net/ipv4/ip_vti.c:447:24: warning: incorrect type in assignment (different base types)
> net/ipv4/ip_vti.c:447:24: expected restricted __be16 [usertype] i_flags
> net/ipv4/ip_vti.c:447:24: got int
>
> Since VTI_ISVTI is always used with ip_tunnel_parm->i_flags (which is __be16),
> we can __force cast VTI_ISVTI to __be16 in header file.
>
> Signed-off-by: Dmitry Popov <[email protected]>

Applied.