diff mbox series

[v2] led-class-flash: fix -Wrestrict warning

Message ID 20210927131557.1587062-1-arnd@kernel.org
State New
Headers show
Series [v2] led-class-flash: fix -Wrestrict warning | expand

Commit Message

Arnd Bergmann Sept. 27, 2021, 1:15 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>


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>

---
 drivers/leds/led-class-flash.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.29.2

Comments

Pavel Machek Sept. 27, 2021, 2:09 p.m. UTC | #1
Hi!

> 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.


Thanks, applied.
								Pavel
-- 
http://www.livejournal.com/~pavelmachek
diff mbox series

Patch

diff --git a/drivers/leds/led-class-flash.c b/drivers/leds/led-class-flash.c
index 185e17055317..6fe9d700dfef 100644
--- a/drivers/leds/led-class-flash.c
+++ b/drivers/leds/led-class-flash.c
@@ -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);