diff mbox series

[v1,1/1] audit: Mark audit_log_vformat() with __printf() attribute

Message ID 20250312200216.104986-1-andriy.shevchenko@linux.intel.com (mailing list archive)
State Changes Requested
Delegated to: Paul Moore
Headers show
Series [v1,1/1] audit: Mark audit_log_vformat() with __printf() attribute | expand

Commit Message

Andy Shevchenko March 12, 2025, 8:02 p.m. UTC
audit_log_vformat() is using printf() type of format, and compiler
is not happy about this:

kernel/audit.c:1978:9: error: function ‘audit_log_vformat’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
kernel/audit.c:1987:17: error: function ‘audit_log_vformat’ 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>
---
 kernel/audit.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Paul Moore March 12, 2025, 8:16 p.m. UTC | #1
On Wed, Mar 12, 2025 at 4:02 PM Andy Shevchenko
<andriy.shevchenko@linux.intel.com> wrote:
>
> audit_log_vformat() is using printf() type of format, and compiler
> is not happy about this:
>
> kernel/audit.c:1978:9: error: function ‘audit_log_vformat’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> kernel/audit.c:1987:17: error: function ‘audit_log_vformat’ 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>
> ---
>  kernel/audit.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

It would be good to list the compiler version/flags that triggers this
error in the patch description as I've compiled the audit code quite a
bit and haven't seen these errors :)

> diff --git a/kernel/audit.c b/kernel/audit.c
> index 5f5bf85bcc90..f365e1bbeac6 100644
> --- a/kernel/audit.c
> +++ b/kernel/audit.c
> @@ -1956,8 +1956,8 @@ static inline int audit_expand(struct audit_buffer *ab, int extra)
>   * will be called a second time.  Currently, we assume that a printk
>   * can't format message larger than 1024 bytes, so we don't either.
>   */
> -static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
> -                             va_list args)
> +static __printf(2, 0)
> +void audit_log_vformat(struct audit_buffer *ab, const char *fmt, va_list args)
>  {
>         int len, avail;
>         struct sk_buff *skb;
> --
> 2.47.2
Andy Shevchenko March 13, 2025, 8:50 a.m. UTC | #2
On Wed, Mar 12, 2025 at 04:16:36PM -0400, Paul Moore wrote:
> On Wed, Mar 12, 2025 at 4:02 PM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> >
> > audit_log_vformat() is using printf() type of format, and compiler
> > is not happy about this:
> >
> > kernel/audit.c:1978:9: error: function ‘audit_log_vformat’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> > kernel/audit.c:1987:17: error: function ‘audit_log_vformat’ might be a candidate for ‘gnu_printf’ format attribute [-Werror=suggest-attribute=format]
> >
> > Fix the compilation errors by adding __printf() attribute.

> It would be good to list the compiler version/flags that triggers this
> error in the patch description

CONFIG_WERROR=y (this is default), gcc (Debian 14.2.0-17) 14.2.0, `make W=1`.

> as I've compiled the audit code quite a bit and haven't seen these errors :)

Good for you, I have 100% reproducibility of this :-)

I'll do a v2 today.
diff mbox series

Patch

diff --git a/kernel/audit.c b/kernel/audit.c
index 5f5bf85bcc90..f365e1bbeac6 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -1956,8 +1956,8 @@  static inline int audit_expand(struct audit_buffer *ab, int extra)
  * will be called a second time.  Currently, we assume that a printk
  * can't format message larger than 1024 bytes, so we don't either.
  */
-static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,
-			      va_list args)
+static __printf(2, 0)
+void audit_log_vformat(struct audit_buffer *ab, const char *fmt, va_list args)
 {
 	int len, avail;
 	struct sk_buff *skb;