linux/drivers/net/dsa
Vladimir Oltean 59f0c7bec3 net: dsa: felix: fix taprio guard band overflow at 10Mbps with jumbo frames
[ Upstream commit 6ac7a27a8b ]

The DEV_MAC_MAXLEN_CFG register contains a 16-bit value - up to 65535.
Plus 2 * VLAN_HLEN (4), that is up to 65543.

The picos_per_byte variable is the largest when "speed" is lowest -
SPEED_10 = 10. In that case it is (1000000L * 8) / 10 = 800000.

Their product - 52434400000 - exceeds 32 bits, which is a problem,
because apparently, a multiplication between two 32-bit factors is
evaluated as 32-bit before being assigned to a 64-bit variable.
In fact it's a problem for any MTU value larger than 5368.

Cast one of the factors of the multiplication to u64 to force the
multiplication to take place on 64 bits.

Issue found by Coverity.

Fixes: 55a515b1f5 ("net: dsa: felix: drop oversized frames with tc-taprio instead of hanging the port")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Simon Horman <simon.horman@corigine.com>
Link: https://lore.kernel.org/r/20230613170907.2413559-1-vladimir.oltean@nxp.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
History 2023-06-21 16:01:01 +02:00
..
b53 net: dsa: b53: mmap: add phy ops 2023-04-26 14:28:36 +02:00
hirschmann net: dsa: hellcreek: Offload per-tc max SDU from tc-taprio 2022-09-29 18:52:06 -07:00
microchip net: dsa: microchip: ksz8: fix MDB configuration with non-zero VID 2023-04-06 12:10:45 +02:00
mv88e6xxx net: dsa: mv88e6xxx: Increase wait after reset deactivation 2023-06-09 10:34:05 +02:00
ocelot net: dsa: felix: fix taprio guard band overflow at 10Mbps with jumbo frames 2023-06-21 16:01:01 +02:00
qca net: dsa: qca8k: remove assignment of an_enabled in pcs_get_state() 2023-05-11 23:03:18 +09:00
realtek net: dsa: realtek: fix out-of-bounds access 2023-04-06 12:10:44 +02:00
sja1105 net: dsa: sja1105: avoid out of bounds access in sja1105_init_l2_policing() 2022-12-08 09:38:31 -08:00
xrs700x * 'remove' callback converted to return void. Big change with trivial 2022-10-04 18:54:33 -07:00
bcm_sf2.c net: dsa: bcm_sf2: remove unnecessary platform_set_drvdata() 2022-09-22 19:30:35 -07:00
bcm_sf2.h net: dsa: bcm_sf2: refactor LED regs access 2021-12-30 17:28:32 -08:00
bcm_sf2_cfp.c net: dsa: introduce dsa_port_get_master() 2022-09-20 10:32:35 +02:00
bcm_sf2_regs.h net: dsa: bcm_sf2: refactor LED regs access 2021-12-30 17:28:32 -08:00
dsa_loop.c net: dsa: Fix possible memory leaks in dsa_loop_init() 2022-10-28 10:32:59 +01:00
dsa_loop.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
dsa_loop_bdinfo.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
Kconfig net: dsa: LAN9303: Add basic support for LAN9354 2022-09-07 11:06:04 +01:00
lan9303-core.c net: dsa: lan9303: allow vid != 0 in port_fdb_{add|del} methods 2023-06-14 11:15:16 +02:00
lan9303.h net: dsa: be compatible with masters which unregister on shutdown 2021-09-19 12:08:37 +01:00
lan9303_i2c.c * 'remove' callback converted to return void. Big change with trivial 2022-10-04 18:54:33 -07:00
lan9303_mdio.c net: dsa: lan9303: remove unnecessary dev_set_drvdata() 2022-09-22 19:30:36 -07:00
lantiq_gswip.c net: dsa: lantiq_gswip: remove unnecessary platform_set_drvdata() 2022-09-22 19:30:36 -07:00
lantiq_pce.h net: dsa: Use the correct style for SPDX License Identifier 2019-09-22 15:25:08 -07:00
Makefile net: dsa: qca8k: move driver to qca dir 2022-07-15 11:57:13 +01:00
mt7530.c net: dsa: mt7530: fix network connectivity with multiple CPU ports 2023-05-17 11:53:38 +02:00
mt7530.h net: dsa: mt7530: add support for in-band link status 2022-09-23 11:58:37 +01:00
mv88e6060.c net: dsa: mv88e6060: remove unnecessary dev_set_drvdata() 2022-09-22 19:30:37 -07:00
mv88e6060.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152 2019-05-30 11:26:32 -07:00
rzn1_a5psw.c net: dsa: rzn1-a5psw: disable learning for standalone ports 2023-05-24 17:32:44 +01:00
rzn1_a5psw.h net: dsa: rzn1-a5psw: fix STP states handling 2023-05-24 17:32:44 +01:00
vitesse-vsc73xx-core.c net: dsa: vsc73xxx: Get rid of duplicate of_node assignment 2021-12-03 14:13:02 +00:00
vitesse-vsc73xx-platform.c net: dsa: vitesse-vsc73xx: remove unnecessary set_drvdata() 2022-09-22 19:30:39 -07:00
vitesse-vsc73xx-spi.c net: dsa: vitesse-vsc73xx: remove unnecessary set_drvdata() 2022-09-22 19:30:39 -07:00
vitesse-vsc73xx.h net: dsa: vsc73xxx: Make vsc73xx_remove() return void 2021-11-15 13:15:07 +00:00