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: <6bc49b72-5698-ef93-9be1-a40e34be8803@intel.com>
Date:   Mon, 27 Jul 2020 14:18:19 -0700
From:   Jacob Keller <jacob.e.keller@...el.com>
To:     Andrew Lunn <andrew@...n.ch>, Michal Kubecek <mkubecek@...e.cz>
Cc:     Jamie Gloudon <jamie.gloudon@....fr>, netdev@...r.kernel.org
Subject: Re: Broken link partner advertised reporting in ethtool



On 7/27/2020 2:01 PM, Andrew Lunn wrote:
> Here are the netlink messages.
> 
> sending genetlink packet (32 bytes):
>     msg length 32 genl-ctrl
>     CTRL_CMD_GETFAMILY
>         CTRL_ATTR_FAMILY_NAME = "ethtool"
> ...
> ...
> sending genetlink packet (36 bytes):
>     msg length 36 ethool ETHTOOL_MSG_LINKMODES_GET
>     ETHTOOL_MSG_LINKMODES_GET
>         ETHTOOL_A_LINKMODES_HEADER
>             ETHTOOL_A_HEADER_DEV_NAME = "green"
> received genetlink packet (572 bytes):
>     msg length 572 ethool ETHTOOL_MSG_LINKMODES_GET_REPLY
>     ETHTOOL_MSG_LINKMODES_GET_REPLY
>         ETHTOOL_A_LINKMODES_HEADER
>             ETHTOOL_A_HEADER_DEV_INDEX = 8
>             ETHTOOL_A_HEADER_DEV_NAME = "green"
>         ETHTOOL_A_LINKMODES_AUTONEG = on
>         ETHTOOL_A_LINKMODES_OURS
>             ETHTOOL_A_BITSET_SIZE = 90
>             ETHTOOL_A_BITSET_BITS
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 0
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Half"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 1
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 2
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Half"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 3
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 5
>                     ETHTOOL_A_BITSET_BIT_NAME = "1000baseT/Full"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 6
>                     ETHTOOL_A_BITSET_BIT_NAME = "Autoneg"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 7
>                     ETHTOOL_A_BITSET_BIT_NAME = "TP"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 9
>                     ETHTOOL_A_BITSET_BIT_NAME = "MII"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 13
>                     ETHTOOL_A_BITSET_BIT_NAME = "Pause"
>                     ETHTOOL_A_BITSET_BIT_VALUE = true
>         ETHTOOL_A_LINKMODES_PEER
>             ETHTOOL_A_BITSET_NOMASK = true
>             ETHTOOL_A_BITSET_SIZE = 90
>             ETHTOOL_A_BITSET_BITS
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 0
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Half"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 1
>                     ETHTOOL_A_BITSET_BIT_NAME = "10baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 2
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Half"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 3
>                     ETHTOOL_A_BITSET_BIT_NAME = "100baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 5
>                     ETHTOOL_A_BITSET_BIT_NAME = "1000baseT/Full"
>                 ETHTOOL_A_BITSET_BITS_BIT
>                     ETHTOOL_A_BITSET_BIT_INDEX = 6
>                     ETHTOOL_A_BITSET_BIT_NAME = "Autoneg"
>         ETHTOOL_A_LINKMODES_SPEED = 1000
>         ETHTOOL_A_LINKMODES_DUPLEX = 1

Based on the netlink contents here it looks like a bug at
netlink/settings.c:357, where we check for ETHTOOL_A_BITSET_BIT_VALUE,
but these aren't sent when you send the bitset using a individual
BIT_INDEX/BIT_NAME like this. I think that's a bug.

I'm working up a simple to verify this and if my suspicion is confirmed
I can write up a patch.

Thanks,
Jake

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ