Merge tag 'i2c-for-6.9-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa...
[sfrench/cifs-2.6.git] / drivers / i2c / busses / i2c-i801.c
index 291c609d1b9d705eb956928c475c57e7c814e983..a6861660cb8ca771f38415c08561f0cbb232588b 100644 (file)
@@ -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;
 
        /*
         * 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;
        }
 }
 
@@ -1752,9 +1754,9 @@ static int i801_probe(struct pci_dev *dev, const struct pci_device_id *id)
 
        i801_enable_host_notify(&priv->adapter);
 
-       i801_probe_optional_slaves(priv);
        /* We ignore errors - multiplexing is optional */
        i801_add_mux(priv);
+       i801_probe_optional_slaves(priv);
 
        pci_set_drvdata(dev, priv);