Re: [PATCH net-next v3 4/5] ip_tunnel: constify input argument of ip_tunnel_info_opts( )

From: Gavin Li
Date: Mon Feb 20 2023 - 05:42:37 EST



On 2/20/2023 4:46 AM, Simon Horman wrote:
External email: Use caution opening links or attachments


On Sun, Feb 19, 2023 at 09:29:21PM +0100, Simon Horman wrote:
On Fri, Feb 17, 2023 at 05:39:24AM +0200, Gavin Li wrote:
Constify input argument(i.e. struct ip_tunnel_info *info) of
ip_tunnel_info_opts( ) so that it wouldn't be needed to W/A it each time
in each driver.

Signed-off-by: Gavin Li <gavinl@xxxxxxxxxx>
---
include/net/ip_tunnels.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
index fca357679816..32c77f149c6e 100644
--- a/include/net/ip_tunnels.h
+++ b/include/net/ip_tunnels.h
@@ -485,9 +485,9 @@ static inline void iptunnel_xmit_stats(struct net_device *dev, int pkt_len)
}
}

-static inline void *ip_tunnel_info_opts(struct ip_tunnel_info *info)
+static inline void *ip_tunnel_info_opts(const struct ip_tunnel_info *info)
{
- return info + 1;
+ return (void *)(info + 1);
I'm unclear on what problem this is trying to solve,
but info being const, and then returning (info +1)
as non-const feels like it is masking rather than fixing a problem.
I now see that an example of the problem is added by path 5/5.

...
CC [M] drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.o
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c: In function 'mlx5e_gen_ip_tunnel_header_vxlan':
drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c:103:43: error: passing argument 1 of 'ip_tunnel_info_opts' discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
103 | md = ip_tunnel_info_opts(e->tun_info);
| ~^~~~~~~~~~
In file included from drivers/net/ethernet/mellanox/mlx5/core/en/tc_tun_vxlan.c:4:
./include/net/ip_tunnels.h:488:64: note: expected 'struct ip_tunnel_info *' but argument is of type 'const struct ip_tunnel_info *'
488 | static inline void *ip_tunnel_info_opts(struct ip_tunnel_info *info)
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~
...

But I really do wonder if this patch masks rather than fixes the problem.
Hi Olek, any comment?

}

static inline void ip_tunnel_info_opts_get(void *to,
--
2.31.1