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]
Date:   Wed, 24 Mar 2021 16:20:35 +0000
From:   Claudiu Manoil <claudiu.manoil@....com>
To:     Vladimir Oltean <olteanv@...il.com>,
        Jakub Kicinski <kuba@...nel.org>,
        "David S. Miller" <davem@...emloft.net>
CC:     "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
        Vladimir Oltean <vladimir.oltean@....com>
Subject: RE: [PATCH net-next 1/2] net: enetc: don't depend on system
 endianness in enetc_set_vlan_ht_filter

>-----Original Message-----
>From: Vladimir Oltean <olteanv@...il.com>
>Sent: Wednesday, March 24, 2021 5:45 PM
>To: Jakub Kicinski <kuba@...nel.org>; David S. Miller
><davem@...emloft.net>
>Cc: netdev@...r.kernel.org; Claudiu Manoil <claudiu.manoil@....com>;
>Vladimir Oltean <vladimir.oltean@....com>
>Subject: [PATCH net-next 1/2] net: enetc: don't depend on system
>endianness in enetc_set_vlan_ht_filter
>
>From: Vladimir Oltean <vladimir.oltean@....com>
>
>ENETC has a 64-entry hash table for VLAN RX filtering per Station
>Interface, which is accessed through two 32-bit registers: VHFR0 holding
>the low portion, and VHFR1 holding the high portion.
>
>The enetc_set_vlan_ht_filter function looks at the pf->vlan_ht_filter
>bitmap, which is fundamentally an unsigned long variable, and casts it
>to a u32 array of two elements. It puts the first u32 element into VHFR0
>and the second u32 element into VHFR1.
>
>It is easy to imagine that this will not work on big endian systems
>(although, yes, we have bigger problems, because currently enetc assumes
>that the CPU endianness is equal to the controller endianness, aka
>little endian - but let's assume that we could add a cpu_to_le32 in
>enetc_wd_reg and a le32_to_cpu in enetc_rd_reg).
>
>Let's use lower_32_bits and upper_32_bits which are designed to work
>regardless of endianness.
>
>Tested that both the old and the new method produce the same results:
>
>$ ethtool -K eth1 rx-vlan-filter on
>$ ip link add link eth1 name eth1.100 type vlan id 100
>enetc_set_vlan_ht_filter: method 1: si_idx 0 VHFR0 0x0 VHFR1 0x20
>enetc_set_vlan_ht_filter: method 2: si_idx 0 VHFR0 0x0 VHFR1 0x20
>$ ip link add link eth1 name eth1.101 type vlan id 101
>enetc_set_vlan_ht_filter: method 1: si_idx 0 VHFR0 0x0 VHFR1 0x30
>enetc_set_vlan_ht_filter: method 2: si_idx 0 VHFR0 0x0 VHFR1 0x30
>$ ip link add link eth1 name eth1.34 type vlan id 34
>enetc_set_vlan_ht_filter: method 1: si_idx 0 VHFR0 0x0 VHFR1 0x34
>enetc_set_vlan_ht_filter: method 2: si_idx 0 VHFR0 0x0 VHFR1 0x34
>$ ip link add link eth1 name eth1.1024 type vlan id 1024
>enetc_set_vlan_ht_filter: method 1: si_idx 0 VHFR0 0x1 VHFR1 0x34
>enetc_set_vlan_ht_filter: method 2: si_idx 0 VHFR0 0x1 VHFR1 0x34
>
>Signed-off-by: Vladimir Oltean <vladimir.oltean@....com>

Reviewed-by: Claudiu Manoil <claudiu.manoil@....com>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ