From: Simon Horman <simon.horman@corigine.com>
To: Eric Dumazet <edumazet@google.com>
Cc: Gavin Li <gavinl@nvidia.com>,
davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com,
roopa@nvidia.com, eng.alaamohamedsoliman.am@gmail.com,
bigeasy@linutronix.de, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, gavi@nvidia.com, roid@nvidia.com,
maord@nvidia.com, saeedm@nvidia.com
Subject: Re: [PATCH net-next v6 4/5] ip_tunnel: Preserve pointer const in ip_tunnel_info_opts
Date: Fri, 10 Mar 2023 12:53:46 +0100 [thread overview]
Message-ID: <ZAsaSnbnR8aDdEBc@corigine.com> (raw)
In-Reply-To: <CANn89iKcDNZBerR_2nEp_ryM3BVXuvr64s6tnAvizCwr=SuACg@mail.gmail.com>
On Thu, Mar 09, 2023 at 04:05:13PM +0100, Eric Dumazet wrote:
> On Thu, Mar 9, 2023 at 3:59 PM Eric Dumazet <edumazet@google.com> wrote:
> >
> > On Thu, Mar 9, 2023 at 2:48 PM Gavin Li <gavinl@nvidia.com> wrote:
> > >
> > > Change ip_tunnel_info_opts( ) from static function to macro to cast return
> > > value and preserve the const-ness of the pointer.
> > >
> > > Signed-off-by: Gavin Li <gavinl@nvidia.com>
> > > ---
> > > include/net/ip_tunnels.h | 11 ++++++-----
> > > 1 file changed, 6 insertions(+), 5 deletions(-)
> > >
> > > diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
> > > index fca357679816..3e5c102b841f 100644
> > > --- a/include/net/ip_tunnels.h
> > > +++ b/include/net/ip_tunnels.h
> > > @@ -67,6 +67,12 @@ struct ip_tunnel_key {
> > > GENMASK((sizeof_field(struct ip_tunnel_info, \
> > > options_len) * BITS_PER_BYTE) - 1, 0)
> > >
> > > +#define ip_tunnel_info_opts(info) \
> > > + _Generic(info, \
> > > + const typeof(*(info)) * : ((const void *)((info) + 1)),\
> > > + default : ((void *)((info) + 1)) \
> > > + )
> > > +
> >
> > Hmm...
> >
> > This looks quite dangerous, we lost type safety with the 'default'
> > case, with all these casts.
Thanks Eric,
FWIIW, the feedback I gave earlier, which partly brought about this change,
was based around avoiding casts...
> >
> > What about using something cleaner instead ?
> >
> > (Not sure why we do not have an available generic helper for this kind
> > of repetitive things)
> >
>
> Or more exactly :
... So, yes, this looks better to me.
> diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h
> index fca3576798166416982ee6a9100b003810c49830..17fc6c8f7e0b9e5303c1fb9e5dad77c5310e01a9
> 100644
> --- a/include/net/ip_tunnels.h
> +++ b/include/net/ip_tunnels.h
> @@ -485,10 +485,11 @@ 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)
> -{
> - return info + 1;
> -}
> +#define ip_tunnel_info_opts(info) \
> + (_Generic(info, \
> + const struct ip_tunnel_info * : (const void *)((info)
> + 1), \
> + struct ip_tunnel_info * : (void *)((info) + 1)) \
> + )
>
> static inline void ip_tunnel_info_opts_get(void *to,
> const struct ip_tunnel_info *info)
>
next prev parent reply other threads:[~2023-03-10 11:54 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-03-09 13:47 [PATCH net-next v6 0/5] net/mlx5e: Add GBP VxLAN HW offload support Gavin Li
2023-03-09 13:47 ` [PATCH net-next v6 1/5] vxlan: Remove unused argument from vxlan_build_gbp_hdr( ) and vxlan_build_gpe_hdr( ) Gavin Li
2023-03-09 13:47 ` [PATCH net-next v6 2/5] vxlan: Expose helper vxlan_build_gbp_hdr Gavin Li
2023-03-09 13:47 ` [PATCH net-next v6 3/5] net/mlx5e: Add helper for encap_info_equal for tunnels with options Gavin Li
2023-03-09 13:47 ` [PATCH net-next v6 4/5] ip_tunnel: Preserve pointer const in ip_tunnel_info_opts Gavin Li
2023-03-09 14:59 ` Eric Dumazet
2023-03-09 15:05 ` Eric Dumazet
2023-03-10 11:53 ` Simon Horman [this message]
2023-03-13 7:17 ` Gavin Li
2023-03-09 13:47 ` [PATCH net-next v6 5/5] net/mlx5e: TC, Add support for VxLAN GBP encap/decap flows offload Gavin Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZAsaSnbnR8aDdEBc@corigine.com \
--to=simon.horman@corigine.com \
--cc=bigeasy@linutronix.de \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=eng.alaamohamedsoliman.am@gmail.com \
--cc=gavi@nvidia.com \
--cc=gavinl@nvidia.com \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maord@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=roid@nvidia.com \
--cc=roopa@nvidia.com \
--cc=saeedm@nvidia.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.