eeprom: ee1004: Add helper ee1004_cleanup
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 24 May 2021 20:18:23 +0000 (22:18 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 May 2021 12:49:40 +0000 (14:49 +0200)
Factor out the cleanup code to a new helper ee1004_cleanup().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/9738cbc7-458d-276f-4012-66551f105d90@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/eeprom/ee1004.c

index 5173d040c7ae6050356112efbcd7d823c9bafca8..00f61a83d7dd0fb0653cc968e09cdafd8363bf3c 100644 (file)
@@ -159,6 +159,15 @@ static struct bin_attribute *ee1004_attrs[] = {
 
 BIN_ATTRIBUTE_GROUPS(ee1004);
 
+static void ee1004_cleanup(int idx)
+{
+       if (--ee1004_dev_count == 0)
+               while (--idx >= 0) {
+                       i2c_unregister_device(ee1004_set_page[idx]);
+                       ee1004_set_page[idx] = NULL;
+               }
+}
+
 static int ee1004_probe(struct i2c_client *client)
 {
        int err, cnr = 0;
@@ -205,12 +214,7 @@ static int ee1004_probe(struct i2c_client *client)
        return 0;
 
  err_clients:
-       if (--ee1004_dev_count == 0) {
-               for (cnr--; cnr >= 0; cnr--) {
-                       i2c_unregister_device(ee1004_set_page[cnr]);
-                       ee1004_set_page[cnr] = NULL;
-               }
-       }
+       ee1004_cleanup(cnr);
        mutex_unlock(&ee1004_bus_lock);
 
        return err;
@@ -218,16 +222,9 @@ static int ee1004_probe(struct i2c_client *client)
 
 static int ee1004_remove(struct i2c_client *client)
 {
-       int i;
-
        /* Remove page select clients if this is the last device */
        mutex_lock(&ee1004_bus_lock);
-       if (--ee1004_dev_count == 0) {
-               for (i = 0; i < EE1004_NUM_PAGES; i++) {
-                       i2c_unregister_device(ee1004_set_page[i]);
-                       ee1004_set_page[i] = NULL;
-               }
-       }
+       ee1004_cleanup(EE1004_NUM_PAGES);
        mutex_unlock(&ee1004_bus_lock);
 
        return 0;