lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6d317ad7-84f4-4cfe-b7d5-22eafada0f17@intel.com>
Date: Wed, 4 Dec 2024 13:59:25 +0100
From: Mateusz Polchlopek <mateusz.polchlopek@...el.com>
To: Petr Machata <petrm@...dia.com>, "David S. Miller" <davem@...emloft.net>,
	Eric Dumazet <edumazet@...gle.com>, Jakub Kicinski <kuba@...nel.org>, "Paolo
 Abeni" <pabeni@...hat.com>, <netdev@...r.kernel.org>
CC: Simon Horman <horms@...nel.org>, Ido Schimmel <idosch@...dia.com>,
	<mlxsw@...dia.com>, Andrew Lunn <andrew+netdev@...n.ch>, Menglong Dong
	<menglong8.dong@...il.com>, Guillaume Nault <gnault@...hat.com>, "Alexander
 Lobakin" <aleksander.lobakin@...el.com>, Breno Leitao <leitao@...ian.org>
Subject: Re: [PATCH net-next v1 04/11] vxlan: vxlan_rcv(): Extract
 vxlan_hdr(skb) to a named variable



On 12/3/2024 3:30 PM, Petr Machata wrote:
> Having a named reference to the VXLAN header is more handy than having to
> conjure it anew through vxlan_hdr() on every use. Add a new variable and
> convert several open-coded sites.
> 
> Additionally, convert one "unparsed" use to the new variable as well. Thus
> the only "unparsed" uses that remain are the flag-clearing and the header
> validity check at the end.
> 
> Signed-off-by: Petr Machata <petrm@...dia.com>
> Reviewed-by: Ido Schimmel <idosch@...dia.com>
> ---
> 
> Notes:
> CC: Andrew Lunn <andrew+netdev@...n.ch>
> CC: Menglong Dong <menglong8.dong@...il.com>
> CC: Guillaume Nault <gnault@...hat.com>
> CC: Alexander Lobakin <aleksander.lobakin@...el.com>
> CC: Breno Leitao <leitao@...ian.org>
> 
>   drivers/net/vxlan/vxlan_core.c | 11 ++++++-----
>   1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c
> index 4905ed1c5e20..257411d1ccca 100644
> --- a/drivers/net/vxlan/vxlan_core.c
> +++ b/drivers/net/vxlan/vxlan_core.c
> @@ -1667,6 +1667,7 @@ static bool vxlan_ecn_decapsulate(struct vxlan_sock *vs, void *oiph,
>   static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
>   {
>   	struct vxlan_vni_node *vninode = NULL;
> +	const struct vxlanhdr *vh;
>   	struct vxlan_dev *vxlan;
>   	struct vxlan_sock *vs;
>   	struct vxlanhdr unparsed;
> @@ -1685,11 +1686,11 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
>   		goto drop;
>   
>   	unparsed = *vxlan_hdr(skb);
> +	vh = vxlan_hdr(skb);
>   	/* VNI flag always required to be set */
> -	if (!(unparsed.vx_flags & VXLAN_HF_VNI)) {
> +	if (!(vh->vx_flags & VXLAN_HF_VNI)) {
>   		netdev_dbg(skb->dev, "invalid vxlan flags=%#x vni=%#x\n",
> -			   ntohl(vxlan_hdr(skb)->vx_flags),
> -			   ntohl(vxlan_hdr(skb)->vx_vni));
> +			   ntohl(vh->vx_flags), ntohl(vh->vx_vni));
>   		reason = SKB_DROP_REASON_VXLAN_INVALID_HDR;
>   		/* Return non vxlan pkt */
>   		goto drop;
> @@ -1701,7 +1702,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
>   	if (!vs)
>   		goto drop;
>   
> -	vni = vxlan_vni(vxlan_hdr(skb)->vx_vni);
> +	vni = vxlan_vni(vh->vx_vni);
>   
>   	vxlan = vxlan_vs_find_vni(vs, skb->dev->ifindex, vni, &vninode);
>   	if (!vxlan) {
> @@ -1713,7 +1714,7 @@ static int vxlan_rcv(struct sock *sk, struct sk_buff *skb)
>   	 * used by VXLAN extensions if explicitly requested.
>   	 */
>   	if (vxlan->cfg.flags & VXLAN_F_GPE) {
> -		if (!vxlan_parse_gpe_proto(vxlan_hdr(skb), &protocol))
> +		if (!vxlan_parse_gpe_proto(vh, &protocol))
>   			goto drop;
>   		unparsed.vx_flags &= ~VXLAN_GPE_USED_BITS;
>   		raw_proto = true;

Overall that's cool refactor but I wonder - couldn't it be somehow
merged with patch03? You touch vxlan_rcv function and the same
pieces of code in both patches, so maybe you can do that there?
Squash those two patches into one? It seems that in this patch you
change something you already changed in prev patch - maybe
it should be done in patch03? Or do I miss something?


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ