On 05.03.2024 00:04, Andi Shyti wrote: > Hi Heiner, > > On Mon, Mar 04, 2024 at 09:31:06PM +0100, Heiner Kallweit wrote: >> If registering the platform device fails, the lookup table is >> removed in the error path. On module removal we would try to >> remove the lookup table again. Fix this by setting priv->lookup >> only if registering the platform device was successful. >> In addition free the memory allocated for the lookup table in >> the error path. >> >> Fixes: d308dfbf62ef ("i2c: mux/i801: Switch to use descriptor passing") >> Cc: stable@xxxxxxxxxxxxxxx >> Reviewed-by: Andi Shyti <andi.shyti@xxxxxxxxxx> >> Signed-off-by: Heiner Kallweit <hkallweit1@xxxxxxxxx> >> --- >> v2: >> - cc stable >> - free memory allocated for the lookup table >> v3: >> - cc'ed Linus > > this patch is a resend... > Right, it's effectively a resend. >> --- >> drivers/i2c/busses/i2c-i801.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/i2c/busses/i2c-i801.c b/drivers/i2c/busses/i2c-i801.c >> index 291c609d1..9c624f31c 100644 >> --- a/drivers/i2c/busses/i2c-i801.c >> +++ b/drivers/i2c/busses/i2c-i801.c >> @@ -1428,7 +1428,6 @@ static void i801_add_mux(struct i801_priv *priv) >> lookup->table[i] = GPIO_LOOKUP(mux_config->gpio_chip, >> mux_config->gpios[i], "mux", 0); >> gpiod_add_lookup_table(lookup); >> - priv->lookup = lookup; > > if I miss something obvious in my reviews, please let me know... > I spend most of my time reviewing patches and it happens quite > often :-) > > Andi > >> /* >> * Register the mux device, we use PLATFORM_DEVID_NONE here >> @@ -1442,7 +1441,10 @@ static void i801_add_mux(struct i801_priv *priv) >> sizeof(struct i2c_mux_gpio_platform_data)); >> if (IS_ERR(priv->mux_pdev)) { >> gpiod_remove_lookup_table(lookup); >> + devm_kfree(dev, lookup); >> dev_err(dev, "Failed to register i2c-mux-gpio device\n"); >> + } else { >> + priv->lookup = lookup; >> } >> } >> >> -- >> 2.44.0 >>