| From cb71209404a567d463df76162764356ca03ca73e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 4 Feb 2026 14:26:23 +0100 |
| Subject: vsnprintf: drop __printf() attributes on binary printing functions |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| [ Upstream commit b07829d546c83134629591f02c5348d57cea0c1e ] |
| |
| The printf() format attributes are applied inconsistently for the binary |
| printf helpers, which causes warnings for the bpf_trace code using |
| them from functions that pass down format strings: |
| |
| kernel/trace/bpf_trace.c: In function '____bpf_trace_printk': |
| kernel/trace/bpf_trace.c:377:9: error: function '____bpf_trace_printk' might be a candidate for 'gnu_printf' format attribute [-Werror=suggest-attribute=format] |
| 377 | ret = bstr_printf(data.buf, MAX_BPRINTF_BUF, fmt, data.bin_args); |
| | ^~~ |
| |
| This can be addressed either by annotating all five callers in bpf code, |
| or by removing the annotations on the callees that were added by Andy |
| Shevchenko last year. |
| |
| As Alexei Starovoitov points out, there are no callers in C code that |
| would benefit from the __printf attributes, the only users are in BPF |
| code or in the do_trace_printk() helper that already checks the arguments. |
| |
| Drop all three of these annotations, reverting the earlierl commits that |
| added these, in order to get a clean build with -Wsuggest-attribute=format. |
| |
| Fixes: 6b2c1e30ad68 ("seq_file: Mark binary printing functions with __printf() attribute") |
| Fixes: 7bf819aa992f ("vsnprintf: Mark binary printing functions with __printf() attribute") |
| Link: https://lore.kernel.org/all/CAADnVQK3eZp3yp35OUx8j1UBsQFhgsn5-4VReqAJ=68PaaKYmg@mail.gmail.com/ |
| Reported-by: kernel test robot <lkp@intel.com> |
| Closes: https://lore.kernel.org/oe-kbuild-all/202512061640.9hKTnB8p-lkp@intel.com/ |
| Suggested-by: Alexei Starovoitov <alexei.starovoitov@gmail.com> |
| Acked-by: Alexei Starovoitov <alexei.starovoitov@gmail.com> |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Acked-by: Petr Mladek <pmladek@suse.com> |
| Acked-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
| Link: https://patch.msgid.link/20260204132643.1302967-1-arnd@kernel.org |
| Signed-off-by: Petr Mladek <pmladek@suse.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| include/linux/seq_file.h | 1 - |
| include/linux/string.h | 4 ++-- |
| 2 files changed, 2 insertions(+), 3 deletions(-) |
| |
| diff --git a/include/linux/seq_file.h b/include/linux/seq_file.h |
| index d6ebf0596510c..2fb266ea69fa4 100644 |
| --- a/include/linux/seq_file.h |
| +++ b/include/linux/seq_file.h |
| @@ -181,7 +181,6 @@ int seq_open_private(struct file *, const struct seq_operations *, int); |
| int seq_release_private(struct inode *, struct file *); |
| |
| #ifdef CONFIG_BINARY_PRINTF |
| -__printf(2, 0) |
| void seq_bprintf(struct seq_file *m, const char *f, const u32 *binary); |
| #endif |
| |
| diff --git a/include/linux/string.h b/include/linux/string.h |
| index 1b564c36d721b..b850bd91b3d88 100644 |
| --- a/include/linux/string.h |
| +++ b/include/linux/string.h |
| @@ -336,8 +336,8 @@ int __sysfs_match_string(const char * const *array, size_t n, const char *s); |
| #define sysfs_match_string(_a, _s) __sysfs_match_string(_a, ARRAY_SIZE(_a), _s) |
| |
| #ifdef CONFIG_BINARY_PRINTF |
| -__printf(3, 0) int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args); |
| -__printf(3, 0) int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf); |
| +int vbin_printf(u32 *bin_buf, size_t size, const char *fmt, va_list args); |
| +int bstr_printf(char *buf, size_t size, const char *fmt, const u32 *bin_buf); |
| #endif |
| |
| extern ssize_t memory_read_from_buffer(void *to, size_t count, loff_t *ppos, |
| -- |
| 2.51.0 |
| |