re: net: dsa: mv88e6xxx: Add devlink regions
From: Colin King (gmail)
Date: Wed Oct 09 2024 - 12:28:24 EST
Hi Andrew,
Static analysis on linux-next has detected a potential issue with an
function returning an uninitialized value from function
mv88e6xxx_region_atu_snapshot in drivers/net/dsa/mv88e6xxx/devlink.c
The commit in question is:
commit bfb255428966e2ab2c406cf6c71d95e9e63241e4
Author: Andrew Lunn <andrew@xxxxxxx>
Date: Fri Sep 18 21:11:07 2020 +0200
net: dsa: mv88e6xxx: Add devlink regions
Variable err is not being initialized at the start of the function. In
the following while-loop err is not being assigned if id ==
MV88E6XXX_N_FID because of the early break out of the loop. This can end
up with the function returning an uninitialized value in err.
I'm not sure of this is ever going to happen, or if in this case this is
an error condition or not, so I'm unsure if err should be initialized to
zero or some other value.
while (1) {
fid = find_next_bit(chip->fid_bitmap, MV88E6XXX_N_FID,
fid + 1);
if (fid == MV88E6XXX_N_FID)
break;
err = mv88e6xxx_region_atu_snapshot_fid(chip, fid, table,
&count);
if (err) {
kfree(table);
goto out;
}
}
*data = (u8 *)table;
out:
mv88e6xxx_reg_unlock(chip);
return err;
Regards,
Colin