lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <13c4d51e-7209-48c6-883b-661395798a9a@gmail.com>
Date: Wed, 9 Oct 2024 17:20:09 +0100
From: "Colin King (gmail)" <colin.i.king@...il.com>
To: Andrew Lunn <andrew@...n.ch>
Cc: Florian Fainelli <f.fainelli@...il.com>,
 "David S. Miller" <davem@...emloft.net>,
 "netdev@...r.kernel.org" <netdev@...r.kernel.org>,
 "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: re: net: dsa: mv88e6xxx: Add devlink regions

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@...n.ch>
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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ