linux-stable/net/dsa
Vladimir Oltean 3b985e4dce net: dsa: fix error code getting shifted with 4 in dsa_slave_get_sset_count
[ Upstream commit b94cbc909f ]

DSA implements a bunch of 'standardized' ethtool statistics counters,
namely tx_packets, tx_bytes, rx_packets, rx_bytes. So whatever the
hardware driver returns in .get_sset_count(), we need to add 4 to that.

That is ok, except that .get_sset_count() can return a negative error
code, for example:

b53_get_sset_count
-> phy_ethtool_get_sset_count
   -> return -EIO

-EIO is -5, and with 4 added to it, it becomes -1, aka -EPERM. One can
imagine that certain error codes may even become positive, although
based on code inspection I did not see instances of that.

Check the error code first, if it is negative return it as-is.

Based on a similar patch for dsa_master_get_strings from Dan Carpenter:
https://patchwork.kernel.org/project/netdevbpf/patch/YJaSe3RPgn7gKxZv@mwanda/

Fixes: 91da11f870 ("net: Distributed Switch Architecture protocol support")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-06-03 08:38:11 +02:00
..
dsa.c net: dsa: add GRO support via gro_cells 2021-03-11 14:05:00 +01:00
dsa2.c net: dsa: read mac address from DT for slave device 2020-11-10 12:36:02 +01:00
dsa_priv.h net: dsa: add GRO support via gro_cells 2021-03-11 14:05:00 +01:00
Kconfig net: dsa: add GRO support via gro_cells 2021-03-11 14:05:00 +01:00
legacy.c net: dsa: Fix dsa_is_user_port() test inversion 2018-03-12 21:04:55 -04:00
Makefile net: dsa: Allow compiling out legacy support 2017-12-07 14:14:54 -05:00
master.c net: dsa: fix a crash if ->get_sset_count() fails 2021-06-03 08:38:08 +02:00
port.c net: dsa: fix unintended change of bridge interface STP state 2020-01-27 14:50:26 +01:00
slave.c net: dsa: fix error code getting shifted with 4 in dsa_slave_get_sset_count 2021-06-03 08:38:11 +02:00
switch.c net: dsa: Check existence of .port_mdb_add callback before calling it 2019-08-25 10:48:03 +02:00
tag_brcm.c net: dsa: Fix duplicate frames flooded by learning 2020-04-02 15:28:11 +02:00
tag_dsa.c net: dsa: {e}dsa: set offload_fwd_mark on received packets 2017-11-11 19:33:11 +09:00
tag_edsa.c dsa: Allow forwarding of redirected IGMP traffic 2020-09-23 12:10:56 +02:00
tag_ksz.c
tag_lan9303.c net: dsa: lan9303: calculate offload_fwd_mark from tag 2017-11-14 21:47:48 +09:00
tag_mtk.c net: dsa: tag_mtk: fix 802.1ad VLAN egress 2021-03-20 10:38:35 +01:00
tag_qca.c net: dsa: tag_qca: Make sure there is headroom for tag 2020-02-24 08:34:34 +01:00
tag_trailer.c net: dsa: add error handling for pskb_trim_rcsum 2018-06-11 14:19:38 -07:00