lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CABVgOS=3F07Qdu2oc9UWgqqVEYeEFW5dHv+g6_FKafpxAnZjjA@mail.gmail.com>
Date:   Wed, 19 Jul 2023 14:15:15 +0800
From:   David Gow <davidgow@...gle.com>
To:     Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
Cc:     Shuah Khan <skhan@...uxfoundation.org>,
        Daniel Latypov <dlatypov@...gle.com>,
        "Steven Rostedt (Google)" <rostedt@...dmis.org>,
        Bjorn Helgaas <bhelgaas@...gle.com>,
        linux-kernel@...r.kernel.org, linux-kselftest@...r.kernel.org,
        kunit-dev@...glegroups.com, linux-arm-kernel@...ts.infradead.org,
        linux-pci@...r.kernel.org, linux-trace-kernel@...r.kernel.org,
        Thomas Gleixner <tglx@...utronix.de>,
        Ingo Molnar <mingo@...hat.com>, Borislav Petkov <bp@...en8.de>,
        Dave Hansen <dave.hansen@...ux.intel.com>, x86@...nel.org,
        "H. Peter Anvin" <hpa@...or.com>,
        Brendan Higgins <brendan.higgins@...ux.dev>,
        Mark Rutland <mark.rutland@....com>,
        Lorenzo Pieralisi <lpieralisi@...nel.org>,
        Sudeep Holla <sudeep.holla@....com>,
        Masami Hiramatsu <mhiramat@...nel.org>,
        Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: [PATCH v4 1/4] kernel.h: Split out COUNT_ARGS() and CONCATENATE()
 to args.h

On Wed, 19 Jul 2023 at 05:11, Andy Shevchenko
<andriy.shevchenko@...ux.intel.com> wrote:
>
> kernel.h is being used as a dump for all kinds of stuff for a long time.
> The COUNT_ARGS() and CONCATENATE() macros may be used in some places
> without need of the full kernel.h dependency train with it.
>
> Here is the attempt on cleaning it up by splitting out these macros().
>
> While at it, include new header where it's being used.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@...ux.intel.com>
> Acked-by: Steven Rostedt (Google) <rostedt@...dmis.org>
> ---

Works fine here.

Acked-by: David Gow <davidgow@...gle.com> # KUnit

Cheers,
-- David

>  include/kunit/test.h      |  1 +
>  include/linux/args.h      | 28 ++++++++++++++++++++++++++++
>  include/linux/kernel.h    |  7 -------
>  include/linux/pci.h       |  2 +-
>  include/trace/bpf_probe.h |  2 ++
>  5 files changed, 32 insertions(+), 8 deletions(-)
>  create mode 100644 include/linux/args.h
>
> diff --git a/include/kunit/test.h b/include/kunit/test.h
> index 23120d50499e..107c81431634 100644
> --- a/include/kunit/test.h
> +++ b/include/kunit/test.h
> @@ -12,6 +12,7 @@
>  #include <kunit/assert.h>
>  #include <kunit/try-catch.h>
>
> +#include <linux/args.h>
>  #include <linux/compiler.h>
>  #include <linux/container_of.h>
>  #include <linux/err.h>
> diff --git a/include/linux/args.h b/include/linux/args.h
> new file mode 100644
> index 000000000000..8ff60a54eb7d
> --- /dev/null
> +++ b/include/linux/args.h
> @@ -0,0 +1,28 @@
> +/* SPDX-License-Identifier: GPL-2.0 */
> +
> +#ifndef _LINUX_ARGS_H
> +#define _LINUX_ARGS_H
> +
> +/*
> + * How do these macros work?
> + *
> + * In __COUNT_ARGS() _0 to _12 are just placeholders from the start
> + * in order to make sure _n is positioned over the correct number
> + * from 12 to 0 (depending on X, which is a variadic argument list).
> + * They serve no purpose other than occupying a position. Since each
> + * macro parameter must have a distinct identifier, those identifiers
> + * are as good as any.
> + *
> + * In COUNT_ARGS() we use actual integers, so __COUNT_ARGS() returns
> + * that as _n.
> + */
> +
> +/* This counts to 12. Any more, it will return 13th argument. */
> +#define __COUNT_ARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _n, X...) _n
> +#define COUNT_ARGS(X...) __COUNT_ARGS(, ##X, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
> +
> +/* Concatenate two parameters, but allow them to be expanded beforehand. */
> +#define __CONCAT(a, b) a ## b
> +#define CONCATENATE(a, b) __CONCAT(a, b)
> +
> +#endif /* _LINUX_ARGS_H */
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 0b00e1aef33d..15d9496db169 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -419,13 +419,6 @@ ftrace_vprintk(const char *fmt, va_list ap)
>  static inline void ftrace_dump(enum ftrace_dump_mode oops_dump_mode) { }
>  #endif /* CONFIG_TRACING */
>
> -/* This counts to 12. Any more, it will return 13th argument. */
> -#define __COUNT_ARGS(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _n, X...) _n
> -#define COUNT_ARGS(X...) __COUNT_ARGS(, ##X, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
> -
> -#define __CONCAT(a, b) a ## b
> -#define CONCATENATE(a, b) __CONCAT(a, b)
> -
>  /* Rebuild everything on CONFIG_FTRACE_MCOUNT_RECORD */
>  #ifdef CONFIG_FTRACE_MCOUNT_RECORD
>  # define REBUILD_DUE_TO_FTRACE_MCOUNT_RECORD
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 0ff7500772e6..eeb2e6f6130f 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -23,7 +23,7 @@
>  #ifndef LINUX_PCI_H
>  #define LINUX_PCI_H
>
> -
> +#include <linux/args.h>
>  #include <linux/mod_devicetable.h>
>
>  #include <linux/types.h>
> diff --git a/include/trace/bpf_probe.h b/include/trace/bpf_probe.h
> index 1f7fc1fc590c..e609cd7da47e 100644
> --- a/include/trace/bpf_probe.h
> +++ b/include/trace/bpf_probe.h
> @@ -12,6 +12,8 @@
>  #undef __perf_task
>  #define __perf_task(t) (t)
>
> +#include <linux/args.h>
> +
>  /* cast any integer, pointer, or small struct to u64 */
>  #define UINTTYPE(size) \
>         __typeof__(__builtin_choose_expr(size == 1,  (u8)1, \
> --
> 2.40.0.1.gaa8946217a0b
>

Download attachment "smime.p7s" of type "application/pkcs7-signature" (4003 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ