diff mbox series

[v1,1/6] seq_buf: Mark binary printing functions with __printf() attribute

Message ID 20250320180926.4002817-2-andriy.shevchenko@linux.intel.com (mailing list archive)
State Superseded
Headers show
Series vsprintf: Add __printf attribute to where it's required | expand

Commit Message

Andy Shevchenko March 20, 2025, 6:04 p.m. UTC
Binary printing functions are using printf() type of format, and compiler
is not happy about them as is:

lib/seq_buf.c:162:17: error: function ‘seq_buf_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]

Fix the compilation errors by adding __printf() attribute.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 include/linux/seq_buf.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Steven Rostedt March 24, 2025, 4:04 p.m. UTC | #1
On Thu, 20 Mar 2025 20:04:22 +0200
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> Binary printing functions are using printf() type of format, and compiler
> is not happy about them as is:
> 
> lib/seq_buf.c:162:17: error: function ‘seq_buf_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> 
> Fix the compilation errors by adding __printf() attribute.
> 

Should also note the removal of "extern"

-- Steve

> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>  include/linux/seq_buf.h | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/seq_buf.h b/include/linux/seq_buf.h
> index fe41da005970..52791e070506 100644
> --- a/include/linux/seq_buf.h
> +++ b/include/linux/seq_buf.h
> @@ -167,8 +167,8 @@ extern int seq_buf_hex_dump(struct seq_buf *s, const char *prefix_str,
>  			    const void *buf, size_t len, bool ascii);
>  
>  #ifdef CONFIG_BINARY_PRINTF
> -extern int
> -seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary);
> +__printf(2, 0)
> +int seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary);
>  #endif
>  
>  void seq_buf_do_printk(struct seq_buf *s, const char *lvl);
Andy Shevchenko March 24, 2025, 4:08 p.m. UTC | #2
On Mon, Mar 24, 2025 at 6:03 PM Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Thu, 20 Mar 2025 20:04:22 +0200
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>
> > Binary printing functions are using printf() type of format, and compiler
> > is not happy about them as is:
> >
> > lib/seq_buf.c:162:17: error: function ‘seq_buf_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> >
> > Fix the compilation errors by adding __printf() attribute.
>
> Should also note the removal of "extern"

If it is worth it, why not? The idea is to make it slightly more
consistent with code around (file seems to have both approaches).
Andy Shevchenko March 24, 2025, 4:17 p.m. UTC | #3
On Mon, Mar 24, 2025 at 12:04:30PM -0400, Steven Rostedt wrote:
> On Thu, 20 Mar 2025 20:04:22 +0200
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> 
> > Binary printing functions are using printf() type of format, and compiler
> > is not happy about them as is:
> > 
> > lib/seq_buf.c:162:17: error: function ‘seq_buf_bprintf’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> > 
> > Fix the compilation errors by adding __printf() attribute.
> > 
> 
> Should also note the removal of "extern"

Ah, just noticed that you are looking at v1, there is also v2 available:
20250321144822.324050-1-andriy.shevchenko@linux.intel.com

Thank you for the review, nevertheless!
diff mbox series

Patch

diff --git a/include/linux/seq_buf.h b/include/linux/seq_buf.h
index fe41da005970..52791e070506 100644
--- a/include/linux/seq_buf.h
+++ b/include/linux/seq_buf.h
@@ -167,8 +167,8 @@  extern int seq_buf_hex_dump(struct seq_buf *s, const char *prefix_str,
 			    const void *buf, size_t len, bool ascii);
 
 #ifdef CONFIG_BINARY_PRINTF
-extern int
-seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary);
+__printf(2, 0)
+int seq_buf_bprintf(struct seq_buf *s, const char *fmt, const u32 *binary);
 #endif
 
 void seq_buf_do_printk(struct seq_buf *s, const char *lvl);