eeprom: at24: Tidy at24_read()
authorJean Delvare <jdelvare@suse.de>
Tue, 25 Aug 2020 07:20:37 +0000 (09:20 +0200)
committerBartosz Golaszewski <bgolaszewski@baylibre.com>
Tue, 25 Aug 2020 15:50:15 +0000 (17:50 +0200)
The elegant code in at24_read() has the drawback that we now need
to make a copy of all parameters to pass them to the post-processing
callback function if there is one. Rewrite the loop in such a way that
the parameters are not modified, so saving them is no longer needed.

Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Bartosz Golaszewski <bgolaszewski@baylibre.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
drivers/misc/eeprom/at24.c

index fb0b837..8f5de5f 100644 (file)
@@ -422,10 +422,7 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
        struct at24_data *at24;
        struct device *dev;
        char *buf = val;
-       int ret;
-       unsigned int orig_off = off;
-       char *orig_buf = buf;
-       size_t orig_count = count;
+       int i, ret;
 
        at24 = priv;
        dev = at24_base_client_dev(at24);
@@ -448,16 +445,13 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
         */
        mutex_lock(&at24->lock);
 
-       while (count) {
-               ret = at24_regmap_read(at24, buf, off, count);
+       for (i = 0; count; i += ret, count -= ret) {
+               ret = at24_regmap_read(at24, buf + i, off + i, count);
                if (ret < 0) {
                        mutex_unlock(&at24->lock);
                        pm_runtime_put(dev);
                        return ret;
                }
-               buf += ret;
-               off += ret;
-               count -= ret;
        }
 
        mutex_unlock(&at24->lock);
@@ -465,7 +459,7 @@ static int at24_read(void *priv, unsigned int off, void *val, size_t count)
        pm_runtime_put(dev);
 
        if (unlikely(at24->read_post))
-               at24->read_post(orig_off, orig_buf, orig_count);
+               at24->read_post(off, buf, i);
 
        return 0;
 }