diff mbox series

[1/2] workqueue: Have 'alloc_workqueue()' like macros accept a format specifier

Message ID ae88f6c2c613d17bc1a56692cfa4f960dbc723d2.1618780558.git.christophe.jaillet@wanadoo.fr (mailing list archive)
State Not Applicable
Delegated to: Netdev Maintainers
Headers show
Series workqueue: Have 'alloc_workqueue()' like macros accept a format specifier | expand

Checks

Context Check Description
netdev/cover_letter success Link
netdev/fixes_present success Link
netdev/patch_count success Link
netdev/tree_selection success Guessed tree name to be net-next
netdev/subject_prefix success Link
netdev/cc_maintainers success CCed 2 of 2 maintainers
netdev/source_inline success Was 0 now: 0
netdev/verify_signedoff success Link
netdev/module_param success Was 0 now: 0
netdev/build_32bit success Errors and warnings before: 23211 this patch: 23211
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/verify_fixes success Link
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 20 lines checked
netdev/build_allmodconfig_warn success Errors and warnings before: 22821 this patch: 22821
netdev/header_inline success Link

Commit Message

Christophe JAILLET April 18, 2021, 9:26 p.m. UTC
Improve 'create_workqueue', 'create_freezable_workqueue' and
'create_singlethread_workqueue' so that they accept a format
specifier and a variable number of arguments.

This will put these macros more in line with 'alloc_ordered_workqueue' and
the underlying 'alloc_workqueue()' function.

This will also allow further code simplification.

Suggested-by: Bart Van Assche <bvanassche@acm.org>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 include/linux/workqueue.h | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

Comments

Bart Van Assche April 18, 2021, 11:03 p.m. UTC | #1
On 4/18/21 2:26 PM, Christophe JAILLET wrote:
> Improve 'create_workqueue', 'create_freezable_workqueue' and
> 'create_singlethread_workqueue' so that they accept a format
> specifier and a variable number of arguments.
> 
> This will put these macros more in line with 'alloc_ordered_workqueue' and
> the underlying 'alloc_workqueue()' function.
> 
> This will also allow further code simplification.

Please Cc Tejun for workqueue changes since he maintains the workqueue code.

> diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
> index d15a7730ee18..145e756ff315 100644
> --- a/include/linux/workqueue.h
> +++ b/include/linux/workqueue.h
> @@ -425,13 +425,13 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
>  	alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED |		\
>  			__WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
>  
> -#define create_workqueue(name)						\
> -	alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
> -#define create_freezable_workqueue(name)				\
> -	alloc_workqueue("%s", __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND |	\
> -			WQ_MEM_RECLAIM, 1, (name))
> -#define create_singlethread_workqueue(name)				\
> -	alloc_ordered_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, name)
> +#define create_workqueue(fmt, args...)					\
> +	alloc_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, 1, ##args)
> +#define create_freezable_workqueue(fmt, args...)			\
> +	alloc_workqueue(fmt, __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND |	\
> +			WQ_MEM_RECLAIM, 1, ##args)
> +#define create_singlethread_workqueue(fmt, args...)			\
> +	alloc_ordered_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, ##args)
>  
>  extern void destroy_workqueue(struct workqueue_struct *wq);
>  
>
Christophe JAILLET April 19, 2021, 6:36 a.m. UTC | #2
> Message du 19/04/21 01:03
> De : "Bart Van Assche" 
> A : "Christophe JAILLET" , tj@kernel.org, jiangshanlai@gmail.com, saeedm@nvidia.com, leon@kernel.org, davem@davemloft.net, kuba@kernel.org, "Tejun Heo" 
> Copie à : netdev@vger.kernel.org, linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org
> Objet : Re: [PATCH 1/2] workqueue: Have 'alloc_workqueue()' like macros accept a format specifier
> 
> On 4/18/21 2:26 PM, Christophe JAILLET wrote:
> > Improve 'create_workqueue', 'create_freezable_workqueue' and
> > 'create_singlethread_workqueue' so that they accept a format
> > specifier and a variable number of arguments.
> > 
> > This will put these macros more in line with 'alloc_ordered_workqueue' and
> > the underlying 'alloc_workqueue()' function.
> > 
> > This will also allow further code simplification.
> 
> Please Cc Tejun for workqueue changes since he maintains the workqueue code.
>
 
Hi,

The list in To: is the one given by get_maintainer.pl. Usualy, I only put the ML in Cc:
I've run the script on the 2 patches of the serie and merged the 2 lists. Everyone is in the To: of the cover letter and of the 2 patches.

If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in the To: line.

CJ


> > diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
> > index d15a7730ee18..145e756ff315 100644
> > --- a/include/linux/workqueue.h
> > +++ b/include/linux/workqueue.h
> > @@ -425,13 +425,13 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
> > alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | \
> > __WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
> > 
> > -#define create_workqueue(name) \
> > - alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
> > -#define create_freezable_workqueue(name) \
> > - alloc_workqueue("%s", __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND | \
> > - WQ_MEM_RECLAIM, 1, (name))
> > -#define create_singlethread_workqueue(name) \
> > - alloc_ordered_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, name)
> > +#define create_workqueue(fmt, args...) \
> > + alloc_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, 1, ##args)
> > +#define create_freezable_workqueue(fmt, args...) \
> > + alloc_workqueue(fmt, __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND | \
> > + WQ_MEM_RECLAIM, 1, ##args)
> > +#define create_singlethread_workqueue(fmt, args...) \
> > + alloc_ordered_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, ##args)
> > 
> > extern void destroy_workqueue(struct workqueue_struct *wq);
> > 
> > 
> 
>
Rasmus Villemoes April 19, 2021, 6:56 a.m. UTC | #3
On 18/04/2021 23.26, Christophe JAILLET wrote:
> Improve 'create_workqueue', 'create_freezable_workqueue' and
> 'create_singlethread_workqueue' so that they accept a format
> specifier and a variable number of arguments.
> 
> This will put these macros more in line with 'alloc_ordered_workqueue' and
> the underlying 'alloc_workqueue()' function.
> 
> This will also allow further code simplification.
> 
> Suggested-by: Bart Van Assche <bvanassche@acm.org>
> Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
> ---
>  include/linux/workqueue.h | 14 +++++++-------
>  1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
> index d15a7730ee18..145e756ff315 100644
> --- a/include/linux/workqueue.h
> +++ b/include/linux/workqueue.h
> @@ -425,13 +425,13 @@ struct workqueue_struct *alloc_workqueue(const char *fmt,
>  	alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED |		\
>  			__WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
>  
> -#define create_workqueue(name)						\
> -	alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
> +#define create_workqueue(fmt, args...)					\
> +	alloc_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, 1, ##args)

The changes make sense, but are you sure that no current users of those
macros have some % character in the string they pass? If all users pass
string literals the compiler/0day bot should catch those, but as the
very example you give in 2/2 shows, not everybody passes string literals.

Maybe git grep would quickly tell that there's only 8 callers and they
are all audited quickly or something like that; in that case please
include a note to that effect in the commit log.

Rasmus
Bart Van Assche April 19, 2021, 8:02 p.m. UTC | #4
On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
> The list in To: is the one given by get_maintainer.pl. Usualy, I only
> put the ML in Cc: I've run the script on the 2 patches of the serie
> and merged the 2 lists. Everyone is in the To: of the cover letter
> and of the 2 patches.
> 
> If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
> the To: line.
Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
from a maintainer and that modify another subsystem than the subsystem
maintained by that maintainer.

Thanks,

Bart.
Jason Gunthorpe April 22, 2021, 12:24 p.m. UTC | #5
On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
> On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
> > The list in To: is the one given by get_maintainer.pl. Usualy, I only
> > put the ML in Cc: I've run the script on the 2 patches of the serie
> > and merged the 2 lists. Everyone is in the To: of the cover letter
> > and of the 2 patches.
> > 
> > If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
> > the To: line.
> Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
> from a maintainer and that modify another subsystem than the subsystem
> maintained by that maintainer.

Really? Do you remember a lore link for this?

Generally I've been junking the CC lines (vs Andrew at the other
extreme that often has 10's of CC lines)

Jason
Bart Van Assche April 22, 2021, 5:12 p.m. UTC | #6
On 4/22/21 5:24 AM, Jason Gunthorpe wrote:
> On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
>> On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
>>> The list in To: is the one given by get_maintainer.pl. Usualy, I only
>>> put the ML in Cc: I've run the script on the 2 patches of the serie
>>> and merged the 2 lists. Everyone is in the To: of the cover letter
>>> and of the 2 patches.
>>>
>>> If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
>>> the To: line.
>> Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
>> from a maintainer and that modify another subsystem than the subsystem
>> maintained by that maintainer.
> 
> Really? Do you remember a lore link for this?

Last time I saw Linus mentioning this was a few months ago.
Unfortunately I cannot find that message anymore.

> Generally I've been junking the CC lines (vs Andrew at the other
> extreme that often has 10's of CC lines)

Most entries in the MAINTAINERS file have one to three email addresses
so I'm surprised to read that Cc-ing maintainer(s) could result in tens
of Cc lines?

Thanks,

Bart.
Leon Romanovsky April 22, 2021, 6 p.m. UTC | #7
On Thu, Apr 22, 2021 at 10:12:33AM -0700, Bart Van Assche wrote:
> On 4/22/21 5:24 AM, Jason Gunthorpe wrote:
> > On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
> >> On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
> >>> The list in To: is the one given by get_maintainer.pl. Usualy, I only
> >>> put the ML in Cc: I've run the script on the 2 patches of the serie
> >>> and merged the 2 lists. Everyone is in the To: of the cover letter
> >>> and of the 2 patches.
> >>>
> >>> If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
> >>> the To: line.
> >> Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
> >> from a maintainer and that modify another subsystem than the subsystem
> >> maintained by that maintainer.
> > 
> > Really? Do you remember a lore link for this?
> 
> Last time I saw Linus mentioning this was a few months ago.
> Unfortunately I cannot find that message anymore.
> 
> > Generally I've been junking the CC lines (vs Andrew at the other
> > extreme that often has 10's of CC lines)
> 
> Most entries in the MAINTAINERS file have one to three email addresses
> so I'm surprised to read that Cc-ing maintainer(s) could result in tens
> of Cc lines?

git log mm/

commit 2b8305260fb37fc20e13f71e13073304d0a031c8
Author: Alexander Potapenko <glider@google.com>
Date:   Thu Feb 25 17:19:21 2021 -0800

    kfence, kasan: make KFENCE compatible with KASAN

    Make KFENCE compatible with KASAN. Currently this helps test KFENCE
    itself, where KASAN can catch potential corruptions to KFENCE state, or
    other corruptions that may be a result of freepointer corruptions in the
    main allocators.

    [akpm@linux-foundation.org: merge fixup]
    [andreyknvl@google.com: untag addresses for KFENCE]
      Link: https://lkml.kernel.org/r/9dc196006921b191d25d10f6e611316db7da2efc.1611946152.git.andreyknvl@google.com

    Link: https://lkml.kernel.org/r/20201103175841.3495947-7-elver@google.com
    Signed-off-by: Marco Elver <elver@google.com>
    Signed-off-by: Alexander Potapenko <glider@google.com>
    Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
    Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
    Reviewed-by: Jann Horn <jannh@google.com>
    Co-developed-by: Marco Elver <elver@google.com>
    Cc: Andrey Konovalov <andreyknvl@google.com>
    Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christopher Lameter <cl@linux.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: Hillf Danton <hdanton@sina.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Joern Engel <joern@purestorage.com>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Paul E. McKenney <paulmck@kernel.org>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: SeongJae Park <sjpark@amazon.de>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>


> 
> Thanks,
> 
> Bart.
Bart Van Assche April 22, 2021, 8:30 p.m. UTC | #8
On 4/22/21 11:00 AM, Leon Romanovsky wrote:
> On Thu, Apr 22, 2021 at 10:12:33AM -0700, Bart Van Assche wrote:
>> On 4/22/21 5:24 AM, Jason Gunthorpe wrote:
>>> On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
>>>> On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
>>>>> The list in To: is the one given by get_maintainer.pl. Usualy, I only
>>>>> put the ML in Cc: I've run the script on the 2 patches of the serie
>>>>> and merged the 2 lists. Everyone is in the To: of the cover letter
>>>>> and of the 2 patches.
>>>>>
>>>>> If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
>>>>> the To: line.
>>>> Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
>>>> from a maintainer and that modify another subsystem than the subsystem
>>>> maintained by that maintainer.
>>>
>>> Really? Do you remember a lore link for this?
>>
>> Last time I saw Linus mentioning this was a few months ago.
>> Unfortunately I cannot find that message anymore.
>>
>>> Generally I've been junking the CC lines (vs Andrew at the other
>>> extreme that often has 10's of CC lines)
>>
>> Most entries in the MAINTAINERS file have one to three email addresses
>> so I'm surprised to read that Cc-ing maintainer(s) could result in tens
>> of Cc lines?
> 
> git log mm/
> 
> commit 2b8305260fb37fc20e13f71e13073304d0a031c8
> Author: Alexander Potapenko <glider@google.com>
> Date:   Thu Feb 25 17:19:21 2021 -0800
> 
>      kfence, kasan: make KFENCE compatible with KASAN
> 
>      Make KFENCE compatible with KASAN. Currently this helps test KFENCE
>      itself, where KASAN can catch potential corruptions to KFENCE state, or
>      other corruptions that may be a result of freepointer corruptions in the
>      main allocators.
> 
>      [akpm@linux-foundation.org: merge fixup]
>      [andreyknvl@google.com: untag addresses for KFENCE]
>        Link: https://lkml.kernel.org/r/9dc196006921b191d25d10f6e611316db7da2efc.1611946152.git.andreyknvl@google.com
> 
>      Link: https://lkml.kernel.org/r/20201103175841.3495947-7-elver@google.com
>      Signed-off-by: Marco Elver <elver@google.com>
>      Signed-off-by: Alexander Potapenko <glider@google.com>
>      Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
>      Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
>      Reviewed-by: Jann Horn <jannh@google.com>
>      Co-developed-by: Marco Elver <elver@google.com>
>      Cc: Andrey Konovalov <andreyknvl@google.com>
>      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
>      Cc: Andy Lutomirski <luto@kernel.org>
>      Cc: Borislav Petkov <bp@alien8.de>
>      Cc: Catalin Marinas <catalin.marinas@arm.com>
>      Cc: Christopher Lameter <cl@linux.com>
>      Cc: Dave Hansen <dave.hansen@linux.intel.com>
>      Cc: David Rientjes <rientjes@google.com>
>      Cc: Eric Dumazet <edumazet@google.com>
>      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
>      Cc: Hillf Danton <hdanton@sina.com>
>      Cc: "H. Peter Anvin" <hpa@zytor.com>
>      Cc: Ingo Molnar <mingo@redhat.com>
>      Cc: Joern Engel <joern@purestorage.com>
>      Cc: Jonathan Corbet <corbet@lwn.net>
>      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
>      Cc: Kees Cook <keescook@chromium.org>
>      Cc: Mark Rutland <mark.rutland@arm.com>
>      Cc: Paul E. McKenney <paulmck@kernel.org>
>      Cc: Pekka Enberg <penberg@kernel.org>
>      Cc: Peter Zijlstra <peterz@infradead.org>
>      Cc: SeongJae Park <sjpark@amazon.de>
>      Cc: Thomas Gleixner <tglx@linutronix.de>
>      Cc: Vlastimil Babka <vbabka@suse.cz>
>      Cc: Will Deacon <will@kernel.org>
>      Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
>      Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

But where does that Cc-list come from? If I extract that patch and run 
the get_maintainer.pl script, the following output appears:

$ git format-patch -1 2b8305260fb37fc20e13f71e13073304d0a031c8
0001-kfence-kasan-make-KFENCE-compatible-with-KASAN.patch
$ scripts/get_maintainer.pl 
0001-kfence-kasan-make-KFENCE-compatible-with-KASAN.patch
Alexander Potapenko <glider@google.com> (maintainer:KFENCE)
Marco Elver <elver@google.com> (maintainer:KFENCE)
Dmitry Vyukov <dvyukov@google.com> (reviewer:KFENCE)
Andrey Ryabinin <ryabinin.a.a@gmail.com> (maintainer:KASAN)
Andrey Konovalov <andreyknvl@gmail.com> (reviewer:KASAN)
Andrew Morton <akpm@linux-foundation.org> (maintainer:MEMORY MANAGEMENT)
kasan-dev@googlegroups.com (open list:KFENCE)
linux-kernel@vger.kernel.org (open list)
linux-mm@kvack.org (open list:MEMORY MANAGEMENT)

Additionally, please note that in my email I was referring to the 
MAINTAINERS file. I do not use the get_maintainers.pl script but instead 
select the Cc-list manually based on what I find in the MAINTAINERS file.

Thanks,

Bart.
Marco Elver April 23, 2021, 2:02 p.m. UTC | #9
On Thu, Apr 22, 2021 at 01:30PM -0700, Bart Van Assche wrote:
> On 4/22/21 11:00 AM, Leon Romanovsky wrote:
> > On Thu, Apr 22, 2021 at 10:12:33AM -0700, Bart Van Assche wrote:
> > > On 4/22/21 5:24 AM, Jason Gunthorpe wrote:
> > > > On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
> > > > > On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
> > > > > > The list in To: is the one given by get_maintainer.pl. Usualy, I only
> > > > > > put the ML in Cc: I've run the script on the 2 patches of the serie
> > > > > > and merged the 2 lists. Everyone is in the To: of the cover letter
> > > > > > and of the 2 patches.
> > > > > > 
> > > > > > If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
> > > > > > the To: line.
> > > > > Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
> > > > > from a maintainer and that modify another subsystem than the subsystem
> > > > > maintained by that maintainer.
> > > > 
> > > > Really? Do you remember a lore link for this?
> > > 
> > > Last time I saw Linus mentioning this was a few months ago.
> > > Unfortunately I cannot find that message anymore.
> > > 
> > > > Generally I've been junking the CC lines (vs Andrew at the other
> > > > extreme that often has 10's of CC lines)
> > > 
> > > Most entries in the MAINTAINERS file have one to three email addresses
> > > so I'm surprised to read that Cc-ing maintainer(s) could result in tens
> > > of Cc lines?
> > 
> > git log mm/
> > 
> > commit 2b8305260fb37fc20e13f71e13073304d0a031c8
> > Author: Alexander Potapenko <glider@google.com>
> > Date:   Thu Feb 25 17:19:21 2021 -0800
> > 
> >      kfence, kasan: make KFENCE compatible with KASAN
> > 
> >      Make KFENCE compatible with KASAN. Currently this helps test KFENCE
> >      itself, where KASAN can catch potential corruptions to KFENCE state, or
> >      other corruptions that may be a result of freepointer corruptions in the
> >      main allocators.
> > 
> >      [akpm@linux-foundation.org: merge fixup]
> >      [andreyknvl@google.com: untag addresses for KFENCE]
> >        Link: https://lkml.kernel.org/r/9dc196006921b191d25d10f6e611316db7da2efc.1611946152.git.andreyknvl@google.com
> > 
> >      Link: https://lkml.kernel.org/r/20201103175841.3495947-7-elver@google.com
> >      Signed-off-by: Marco Elver <elver@google.com>
> >      Signed-off-by: Alexander Potapenko <glider@google.com>
> >      Signed-off-by: Andrey Konovalov <andreyknvl@google.com>
> >      Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
> >      Reviewed-by: Jann Horn <jannh@google.com>
> >      Co-developed-by: Marco Elver <elver@google.com>
> >      Cc: Andrey Konovalov <andreyknvl@google.com>
> >      Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
> >      Cc: Andy Lutomirski <luto@kernel.org>
> >      Cc: Borislav Petkov <bp@alien8.de>
> >      Cc: Catalin Marinas <catalin.marinas@arm.com>
> >      Cc: Christopher Lameter <cl@linux.com>
> >      Cc: Dave Hansen <dave.hansen@linux.intel.com>
> >      Cc: David Rientjes <rientjes@google.com>
> >      Cc: Eric Dumazet <edumazet@google.com>
> >      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> >      Cc: Hillf Danton <hdanton@sina.com>
> >      Cc: "H. Peter Anvin" <hpa@zytor.com>
> >      Cc: Ingo Molnar <mingo@redhat.com>
> >      Cc: Joern Engel <joern@purestorage.com>
> >      Cc: Jonathan Corbet <corbet@lwn.net>
> >      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
> >      Cc: Kees Cook <keescook@chromium.org>
> >      Cc: Mark Rutland <mark.rutland@arm.com>
> >      Cc: Paul E. McKenney <paulmck@kernel.org>
> >      Cc: Pekka Enberg <penberg@kernel.org>
> >      Cc: Peter Zijlstra <peterz@infradead.org>
> >      Cc: SeongJae Park <sjpark@amazon.de>
> >      Cc: Thomas Gleixner <tglx@linutronix.de>
> >      Cc: Vlastimil Babka <vbabka@suse.cz>
> >      Cc: Will Deacon <will@kernel.org>
> >      Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> >      Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

This is a special case probably as KFENCE touched various subsystems and
architectures.

That Cc list is from the original

	https://lkml.kernel.org/r/20201103175841.3495947-7-elver@google.com

It was determined based on the full series, mostly from a
get_maintainer.pl of 'reviewer' and 'maintainer' lists of the full
series diff, minus a some false positives to avoid spamming people, and
plus a few people get_maintainer.pl missed that had provided or could
provide useful input. So the list above is mostly maintainers+reviewers
of mm/, mm/kasan, arch/x86, and arch/arm64.

> But where does that Cc-list come from? If I extract that patch and run the
> get_maintainer.pl script, the following output appears:
> 
> $ git format-patch -1 2b8305260fb37fc20e13f71e13073304d0a031c8
> 0001-kfence-kasan-make-KFENCE-compatible-with-KASAN.patch
> $ scripts/get_maintainer.pl
> 0001-kfence-kasan-make-KFENCE-compatible-with-KASAN.patch
> Alexander Potapenko <glider@google.com> (maintainer:KFENCE)
> Marco Elver <elver@google.com> (maintainer:KFENCE)

KFENCE did not yet exist when the patch the above series was part of was
posted... so chicken and egg situation here. ;-)

> Dmitry Vyukov <dvyukov@google.com> (reviewer:KFENCE)
> Andrey Ryabinin <ryabinin.a.a@gmail.com> (maintainer:KASAN)
> Andrey Konovalov <andreyknvl@gmail.com> (reviewer:KASAN)
> Andrew Morton <akpm@linux-foundation.org> (maintainer:MEMORY MANAGEMENT)
> kasan-dev@googlegroups.com (open list:KFENCE)
> linux-kernel@vger.kernel.org (open list)
> linux-mm@kvack.org (open list:MEMORY MANAGEMENT)

Thanks,
-- Marco
Jason Gunthorpe April 23, 2021, 2:27 p.m. UTC | #10
On Thu, Apr 22, 2021 at 01:30:00PM -0700, Bart Van Assche wrote:
 
> But where does that Cc-list come from? If I extract that patch and run the
> get_maintainer.pl script, the following output appears:

Andrew takes it from the email CC list in the original email that the
patch came from

Jason
Dan Carpenter April 29, 2021, 10:31 a.m. UTC | #11
On Thu, Apr 22, 2021 at 09:24:19AM -0300, Jason Gunthorpe wrote:
> On Mon, Apr 19, 2021 at 01:02:34PM -0700, Bart Van Assche wrote:
> > On 4/18/21 11:36 PM, Marion et Christophe JAILLET wrote:
> > > The list in To: is the one given by get_maintainer.pl. Usualy, I only
> > > put the ML in Cc: I've run the script on the 2 patches of the serie
> > > and merged the 2 lists. Everyone is in the To: of the cover letter
> > > and of the 2 patches.
> > > 
> > > If Théo is "Tejun Heo" (  (maintainer:WORKQUEUE) ), he is already in
> > > the To: line.
> > Linus wants to see a "Cc: ${maintainer}" tag in patches that he receives
> > from a maintainer and that modify another subsystem than the subsystem
> > maintained by that maintainer.
> 
> Really? Do you remember a lore link for this?
> 
> Generally I've been junking the CC lines (vs Andrew at the other
> extreme that often has 10's of CC lines)

Of course this patch has already been NAKed but it wasn't clear to me
whose git tree it would have gone through.  Surely if it were going
through your tree you would have required an Acked-by: from Tejun and
the CC: line would not be required.  It would only be required if you
can't get a maintainer to respond.

regards,
dan carpenter
diff mbox series

Patch

diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index d15a7730ee18..145e756ff315 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -425,13 +425,13 @@  struct workqueue_struct *alloc_workqueue(const char *fmt,
 	alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED |		\
 			__WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
 
-#define create_workqueue(name)						\
-	alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
-#define create_freezable_workqueue(name)				\
-	alloc_workqueue("%s", __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND |	\
-			WQ_MEM_RECLAIM, 1, (name))
-#define create_singlethread_workqueue(name)				\
-	alloc_ordered_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, name)
+#define create_workqueue(fmt, args...)					\
+	alloc_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, 1, ##args)
+#define create_freezable_workqueue(fmt, args...)			\
+	alloc_workqueue(fmt, __WQ_LEGACY | WQ_FREEZABLE | WQ_UNBOUND |	\
+			WQ_MEM_RECLAIM, 1, ##args)
+#define create_singlethread_workqueue(fmt, args...)			\
+	alloc_ordered_workqueue(fmt, __WQ_LEGACY | WQ_MEM_RECLAIM, ##args)
 
 extern void destroy_workqueue(struct workqueue_struct *wq);