]> git.proxmox.com Git - mirror_ubuntu-focal-kernel.git/commit
net: dsa: fix a crash if ->get_sset_count() fails
authorDan Carpenter <dan.carpenter@oracle.com>
Sat, 8 May 2021 13:30:35 +0000 (16:30 +0300)
committerStefan Bader <stefan.bader@canonical.com>
Fri, 18 Jun 2021 13:02:47 +0000 (15:02 +0200)
commite5b25cff5938a542367ed7b26cbaf0d78b705b32
tree493560f3192fba31bf597407f2d7c1232119ff66
parenta808977bdf9362c1c5f5dcd308f8aef111b63d70
net: dsa: fix a crash if ->get_sset_count() fails

BugLink: https://bugs.launchpad.net/bugs/1931166
commit a269333fa5c0c8e53c92b5a28a6076a28cde3e83 upstream.

If ds->ops->get_sset_count() fails then it "count" is a negative error
code such as -EOPNOTSUPP.  Because "i" is an unsigned int, the negative
error code is type promoted to a very high value and the loop will
corrupt memory until the system crashes.

Fix this by checking for error codes and changing the type of "i" to
just int.

Fixes: badf3ada60ab ("net: dsa: Provide CPU port statistics to master netdev")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
net/dsa/master.c