pinctrl: th1520: Fix potential null pointer dereference on func
authorColin Ian King <colin.i.king@gmail.com>
Wed, 16 Oct 2024 15:56:55 +0000 (16:56 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 Oct 2024 19:30:18 +0000 (21:30 +0200)
The initialization of muxtype deferences pointer func before func
is sanity checked with a null pointer check, hence we have a null
pointer deference issue. Fix this by only deferencing func with
the assignment to muxtype after func has been null pointer checked.

Fixes: 1fc30cd92770 ("pinctrl: th1520: Factor out casts")
Signed-off-by: Colin Ian King <colin.i.king@gmail.com>
Reported-by: Kees Bakker <kees@ijzerbout.nl>
Acked-by: Drew Fustini <dfustini@tenstorrent.com>
Link: https://lore.kernel.org/20241016155655.334518-1-colin.i.king@gmail.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/pinctrl/pinctrl-th1520.c

index 7474d8d..e641bad 100644 (file)
@@ -803,11 +803,12 @@ static int th1520_pinmux_set_mux(struct pinctrl_dev *pctldev,
 {
        struct th1520_pinctrl *thp = pinctrl_dev_get_drvdata(pctldev);
        const struct function_desc *func = pinmux_generic_get_function(pctldev, fsel);
-       enum th1520_muxtype muxtype = (uintptr_t)func->data;
+       enum th1520_muxtype muxtype;
 
        if (!func)
                return -EINVAL;
 
+       muxtype = (uintptr_t)func->data;
        return th1520_pinmux_set(thp, thp->desc.pins[gsel].number,
                                 th1520_pad_muxdata(thp->desc.pins[gsel].drv_data),
                                 muxtype);