phy: marvell: Cannot test unsigned field to be negative
authorAndrew Goodbody <andrew.goodbody@linaro.org>
Wed, 6 Aug 2025 16:43:25 +0000 (17:43 +0100)
committerJerome Forissier <jerome.forissier@linaro.org>
Mon, 18 Aug 2025 12:08:57 +0000 (14:08 +0200)
In comphy_cp110_init_serdes_map in comphy_cp110.c there are two fields
in cfg, comphy_lanes_count and comphy_mux_bitcount, which are fetched
from the FDT blob with fdtdec_get_int which returns an int. These two
fields are then tested for being negative. However the fields are
declared as unsigned so those tests must always fail. Change the
declaration of those fields to be int instead of u32 and the code will
work as expected.

This issue was found by Smatch.

Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
Reviewed-by: Stefan Roese <stefan.roese@mailbox.org>
drivers/phy/marvell/comphy_core.h

index f3d0493..086a4d8 100644 (file)
@@ -47,8 +47,8 @@ struct chip_serdes_phy_config {
        int (*rx_training)(struct chip_serdes_phy_config *, u32);
        void __iomem *comphy_base_addr;
        void __iomem *hpipe3_base_addr;
-       u32 comphy_lanes_count;
-       u32 comphy_mux_bitcount;
+       int comphy_lanes_count;
+       int comphy_mux_bitcount;
        const fdt32_t *comphy_mux_lane_order;
        u32 cp_index;
        struct comphy_map comphy_map_data[MAX_LANE_OPTIONS];