net: atlantic: Avoid out-of-bounds indexing
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Fri, 8 Apr 2022 02:22:04 +0000 (10:22 +0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 9 Apr 2022 03:34:31 +0000 (20:34 -0700)
commit8d3a6c37d50d5a0504c126c932cc749e6dd9c78f
tree578c87f63caa560a8c502890d40a90443a271ec9
parente6934e4048c91502efcb21da92b7ae37cd8fa741
net: atlantic: Avoid out-of-bounds indexing

UBSAN warnings are observed on atlantic driver:
[ 294.432996] UBSAN: array-index-out-of-bounds in /build/linux-Qow4fL/linux-5.15.0/drivers/net/ethernet/aquantia/atlantic/aq_nic.c:484:48
[ 294.433695] index 8 is out of range for type 'aq_vec_s *[8]'

The ring is dereferenced right before breaking out the loop, to prevent
that from happening, only use the index in the loop to fix the issue.

BugLink: https://bugs.launchpad.net/bugs/1958770
Tested-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Reviewed-by: Igor Russkikh <irusskikh@marvell.com>
Link: https://lore.kernel.org/r/20220408022204.16815-1-kai.heng.feng@canonical.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/aquantia/atlantic/aq_nic.c
drivers/net/ethernet/aquantia/atlantic/aq_vec.c