On Tue, Jun 02, 2026 at 05:07:05PM +0200, Arnd Bergmann wrote: > > A number of tracing headers turn off -Wsuggest-attribute=format for > gcc, but they don't turn it off for clang, so the same warning still > happens on new versions of clang that support the format attribute. > > To avoid duplicating the same thing in each tracing header, as well > as changing all of them to also turn it off for clang, add a new > __vsnprintf() helper that is not annotated this way in linux/sprintf.h > but is defined to work the same way as the regular vsprintf.
vsprintf() > Aside from tracing, the same thing can be used in va_format(), > which is part of lib/vsprintf.c itself. ... > --- a/include/linux/sprintf.h > +++ b/include/linux/sprintf.h > @@ -12,6 +12,7 @@ __printf(2, 3) int sprintf(char *buf, const char * fmt, > ...); > __printf(2, 0) int vsprintf(char *buf, const char *, va_list); > __printf(3, 4) int snprintf(char *buf, size_t size, const char *fmt, ...); > __printf(3, 0) int vsnprintf(char *buf, size_t size, const char *fmt, > va_list args); > +int __vsnprintf(char *buf, size_t size, const char *fmt, va_list args); Why the __printf() annotation is in the C file and not here? Is this all about headers as the second paragraph in the commit message explains? I would add a comment to explain it here, otherwise we might see false patches to "make things consistent" in a wrong way. > __printf(3, 4) int scnprintf(char *buf, size_t size, const char *fmt, ...); > __printf(3, 0) int vscnprintf(char *buf, size_t size, const char *fmt, > va_list args); > __printf(2, 3) __malloc char *kasprintf(gfp_t gfp, const char *fmt, ...); -- With Best Regards, Andy Shevchenko
