led-class-flash: fix -Wrestrict warning
authorArnd Bergmann <arnd@arndb.de>
Mon, 27 Sep 2021 13:15:47 +0000 (15:15 +0200)
committerPavel Machek <pavel@ucw.cz>
Mon, 27 Sep 2021 14:09:42 +0000 (16:09 +0200)
gcc-11 warns when building with W=1:

drivers/leds/led-class-flash.c: In function 'flash_fault_show':
drivers/leds/led-class-flash.c:210:16: error: 'sprintf' argument 3 overlaps destination object 'buf' [-Werror=restrict]
  210 |         return sprintf(buf, "%s\n", buf);
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/leds/led-class-flash.c:187:54: note: destination object referenced by 'restrict'-qualified argument 1 was declared here
  187 |                 struct device_attribute *attr, char *buf)
      |                                                ~~~~~~^~~

There is no need for the sprintf() here when a strcat() does
the same thing without invoking undefined behavior.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Pavel Machek <pavel@ucw.cz>
drivers/leds/led-class-flash.c

index 185e170..6fe9d70 100644 (file)
@@ -207,7 +207,7 @@ static ssize_t flash_fault_show(struct device *dev,
                mask <<= 1;
        }
 
-       return sprintf(buf, "%s\n", buf);
+       return strlen(strcat(buf, "\n"));
 }
 static DEVICE_ATTR_RO(flash_fault);