net: dsa: mv88e6xxx: Correct check for empty list
authorSimon Horman <horms@kernel.org>
Tue, 30 Apr 2024 17:46:45 +0000 (18:46 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 3 May 2024 01:53:19 +0000 (18:53 -0700)
Since commit a3c53be55c95 ("net: dsa: mv88e6xxx: Support multiple MDIO
busses") mv88e6xxx_default_mdio_bus() has checked that the
return value of list_first_entry() is non-NULL.

This appears to be intended to guard against the list chip->mdios being
empty.  However, it is not the correct check as the implementation of
list_first_entry is not designed to return NULL for empty lists.

Instead, use list_first_entry_or_null() which does return NULL if the
list is empty.

Flagged by Smatch.
Compile tested only.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Simon Horman <horms@kernel.org>
Link: https://lore.kernel.org/r/20240430-mv88e6xx-list_empty-v3-1-c35c69d88d2e@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/dsa/mv88e6xxx/chip.c

index 0fae2b96b21fee45814549cc56fb37d204dba226..964c7b847fd31bf93cf9f412eeb49cb694170267 100644 (file)
@@ -131,8 +131,8 @@ struct mii_bus *mv88e6xxx_default_mdio_bus(struct mv88e6xxx_chip *chip)
 {
        struct mv88e6xxx_mdio_bus *mdio_bus;
 
-       mdio_bus = list_first_entry(&chip->mdios, struct mv88e6xxx_mdio_bus,
-                                   list);
+       mdio_bus = list_first_entry_or_null(&chip->mdios,
+                                           struct mv88e6xxx_mdio_bus, list);
        if (!mdio_bus)
                return NULL;