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: <20220314220200.0b53e7a9@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
Date:   Mon, 14 Mar 2022 22:02:00 -0700
From:   Jakub Kicinski <kuba@...nel.org>
To:     Roi Dayan <roid@...dia.com>
Cc:     <netdev@...r.kernel.org>, Maor Dickman <maord@...dia.com>,
        "David S. Miller" <davem@...emloft.net>,
        "Jamal Hadi Salim" <jhs@...atatu.com>, Jiri Pirko <jiri@...dia.com>
Subject: Re: [PATCH net-next 1/3] net/sched: add vlan push_eth and pop_eth
 action to the hardware IR

Sorry for the late review.

On Wed, 9 Mar 2022 15:02:54 +0200 Roi Dayan wrote:
> @@ -211,6 +213,8 @@ struct flow_action_entry {
>  			__be16		proto;
>  			u8		prio;
>  		} vlan;
> +		unsigned char vlan_push_eth_dst[ETH_ALEN];
> +		unsigned char vlan_push_eth_src[ETH_ALEN];

Let's wrap these two in a struct, like all other members here, 
and add the customary comment indicating which action its for.

>  		struct {				/* FLOW_ACTION_MANGLE */
>  							/* FLOW_ACTION_ADD */
>  			enum flow_action_mangle_base htype;
> diff --git a/include/net/tc_act/tc_vlan.h b/include/net/tc_act/tc_vlan.h
> index f94b8bc26f9e..8a3422c70f9f 100644
> --- a/include/net/tc_act/tc_vlan.h
> +++ b/include/net/tc_act/tc_vlan.h
> @@ -78,4 +78,18 @@ static inline u8 tcf_vlan_push_prio(const struct tc_action *a)
>  
>  	return tcfv_push_prio;
>  }
> +
> +static inline void tcf_vlan_push_dst(unsigned char *dest, const struct tc_action *a)
> +{
> +	rcu_read_lock();
> +	memcpy(dest, rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_dst, ETH_ALEN);
> +	rcu_read_unlock();
> +}
> +
> +static inline void tcf_vlan_push_src(unsigned char *dest, const struct tc_action *a)
> +{
> +	rcu_read_lock();
> +	memcpy(dest, rcu_dereference(to_vlan(a)->vlan_p)->tcfv_push_src, ETH_ALEN);
> +	rcu_read_unlock();
> +}

The use of these two helpers separately makes no sense, we can't push
half a header. It should be one helper populating both src and dst, IMO.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ