]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
net: fsl-mc: NULL check dflt_dpbp before dereference
authorAndrew Goodbody <andrew.goodbody@linaro.org>
Mon, 4 Aug 2025 16:56:57 +0000 (17:56 +0100)
committerPeng Fan <peng.fan@nxp.com>
Wed, 27 Aug 2025 07:42:08 +0000 (15:42 +0800)
In dpbp_exit there is a NULL check for dflt_dpbp after it is
dereferenced a number of times. Instead move the NULL check to early in
the function. Also assign NULL to dflt_dpbp after free in both dpbp_init
and dpbp_exit.

This issue was found by Smatch.

Signed-off-by: Andrew Goodbody <andrew.goodbody@linaro.org>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/net/fsl-mc/mc.c

index 999a9912e2f7488eefc13580bec4fa04b635cff6..8c882c7fcf54d394d2381db2d8754f845abacabb 100644 (file)
@@ -1438,6 +1438,7 @@ err_close:
 err_open:
 err_create:
        free(dflt_dpbp);
+       dflt_dpbp = NULL;
 err_calloc:
        return err;
 }
@@ -1446,6 +1447,9 @@ static int dpbp_exit(void)
 {
        int err;
 
+       if (!dflt_dpbp)
+               return -ENODEV;
+
        err = dpbp_destroy(dflt_mc_io, dflt_dprc_handle, MC_CMD_NO_FLAGS,
                           dflt_dpbp->dpbp_id);
        if (err < 0) {
@@ -1457,8 +1461,8 @@ static int dpbp_exit(void)
        printf("Exit: DPBP.%d\n", dflt_dpbp->dpbp_attr.id);
 #endif
 
-       if (dflt_dpbp)
-               free(dflt_dpbp);
+       free(dflt_dpbp);
+       dflt_dpbp = NULL;
        return 0;
 
 err: