All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] cpumask: Add helper cpumask_available()
@ 2017-04-12 18:20 Matthias Kaehlcke
  2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
  2017-04-14 17:54 ` [tip:irq/core] cpumask: Add helper cpumask_available() tip-bot for Matthias Kaehlcke
  0 siblings, 2 replies; 6+ messages in thread
From: Matthias Kaehlcke @ 2017-04-12 18:20 UTC (permalink / raw)
  To: Thomas Gleixner, Andrew Morton, Rusty Russell
  Cc: linux-kernel, Grant Grundler, Greg Hackmann, Michael Davidson,
	Matthias Kaehlcke

With CONFIG_CPUMASK_OFFSTACK=y cpumask_var_t is a struct cpumask
pointer, otherwise a struct cpumask array with a single element.

Some code dealing with cpumasks needs to validate that a cpumask_var_t
is not a NULL pointer when CONFIG_CPUMASK_OFFSTACK=y. This is typically
done by performing the check always, regardless of the underlying type
of cpumask_var_t. This works in both cases, however clang raises a
warning like this when CONFIG_CPUMASK_OFFSTACK=n:

kernel/irq/manage.c:839:28: error: address of array
'desc->irq_common_data.affinity' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]

Add the inline helper cpumask_available() which only performs the
pointer check if CONFIG_CPUMASK_OFFSTACK=y.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
---
Changes in v2:
- Patch added

 include/linux/cpumask.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 96f1e88b767c..1a675604b17d 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -667,6 +667,11 @@ void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
 void free_cpumask_var(cpumask_var_t mask);
 void free_bootmem_cpumask_var(cpumask_var_t mask);
 
+static inline bool cpumask_available(cpumask_var_t mask)
+{
+	return mask != NULL;
+}
+
 #else
 typedef struct cpumask cpumask_var_t[1];
 
@@ -708,6 +713,11 @@ static inline void free_cpumask_var(cpumask_var_t mask)
 static inline void free_bootmem_cpumask_var(cpumask_var_t mask)
 {
 }
+
+static inline bool cpumask_available(cpumask_var_t mask)
+{
+	return true;
+}
 #endif /* CONFIG_CPUMASK_OFFSTACK */
 
 /* It's common to want to use cpu_all_mask in struct member initializers,
-- 
2.12.2.715.g7642488e1d-goog

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable
  2017-04-12 18:20 [PATCH v2 1/2] cpumask: Add helper cpumask_available() Matthias Kaehlcke
@ 2017-04-12 18:20 ` Matthias Kaehlcke
  2017-04-14 17:51   ` Thomas Gleixner
                     ` (2 more replies)
  2017-04-14 17:54 ` [tip:irq/core] cpumask: Add helper cpumask_available() tip-bot for Matthias Kaehlcke
  1 sibling, 3 replies; 6+ messages in thread
From: Matthias Kaehlcke @ 2017-04-12 18:20 UTC (permalink / raw)
  To: Thomas Gleixner, Andrew Morton, Rusty Russell
  Cc: linux-kernel, Grant Grundler, Greg Hackmann, Michael Davidson,
	Matthias Kaehlcke

This fixes the following clang warning when CONFIG_CPUMASK_OFFSTACK=y:

kernel/irq/manage.c:839:28: error: address of array
'desc->irq_common_data.affinity' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
---
Changes in v2:
- Use cpumask_available() instead if #ifdef construct

 kernel/irq/manage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index a4afe5cc5af1..155e3c3357a1 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -852,7 +852,7 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action)
 	 * This code is triggered unconditionally. Check the affinity
 	 * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out.
 	 */
-	if (desc->irq_common_data.affinity)
+	if (cpumask_available(desc->irq_common_data.affinity))
 		cpumask_copy(mask, desc->irq_common_data.affinity);
 	else
 		valid = false;
-- 
2.12.2.715.g7642488e1d-goog

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable
  2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
@ 2017-04-14 17:51   ` Thomas Gleixner
  2017-04-14 17:55   ` [tip:irq/core] " tip-bot for Matthias Kaehlcke
  2017-04-14 18:51   ` [tip:irq/core] genirq: " tip-bot for Matthias Kaehlcke
  2 siblings, 0 replies; 6+ messages in thread
From: Thomas Gleixner @ 2017-04-14 17:51 UTC (permalink / raw)
  To: Matthias Kaehlcke
  Cc: Andrew Morton, Rusty Russell, linux-kernel, Grant Grundler,
	Greg Hackmann, Michael Davidson

On Wed, 12 Apr 2017, Matthias Kaehlcke wrote:

> This fixes the following clang warning when CONFIG_CPUMASK_OFFSTACK=y:

That should be '=n', right? I fixed it up.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip:irq/core] cpumask: Add helper cpumask_available()
  2017-04-12 18:20 [PATCH v2 1/2] cpumask: Add helper cpumask_available() Matthias Kaehlcke
  2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
@ 2017-04-14 17:54 ` tip-bot for Matthias Kaehlcke
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot for Matthias Kaehlcke @ 2017-04-14 17:54 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: rusty, hpa, ghackmann, tglx, linux-kernel, akpm, mingo, grundler,
	mka, md

Commit-ID:  f7e30f01a9e221067bb4b579e3cfc25cd2617467
Gitweb:     http://git.kernel.org/tip/f7e30f01a9e221067bb4b579e3cfc25cd2617467
Author:     Matthias Kaehlcke <mka@chromium.org>
AuthorDate: Wed, 12 Apr 2017 11:20:29 -0700
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 14 Apr 2017 19:50:47 +0200

cpumask: Add helper cpumask_available()

With CONFIG_CPUMASK_OFFSTACK=y cpumask_var_t is a struct cpumask
pointer, otherwise a struct cpumask array with a single element.

Some code dealing with cpumasks needs to validate that a cpumask_var_t
is not a NULL pointer when CONFIG_CPUMASK_OFFSTACK=y. This is typically
done by performing the check always, regardless of the underlying type
of cpumask_var_t. This works in both cases, however clang raises a
warning like this when CONFIG_CPUMASK_OFFSTACK=n:

kernel/irq/manage.c:839:28: error: address of array
'desc->irq_common_data.affinity' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]

Add the inline helper cpumask_available() which only performs the
pointer check if CONFIG_CPUMASK_OFFSTACK=y.

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Cc: Grant Grundler <grundler@chromium.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Greg Hackmann <ghackmann@google.com>
Cc: Michael Davidson <md@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/20170412182030.83657-1-mka@chromium.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 include/linux/cpumask.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/include/linux/cpumask.h b/include/linux/cpumask.h
index 96f1e88..1a67560 100644
--- a/include/linux/cpumask.h
+++ b/include/linux/cpumask.h
@@ -667,6 +667,11 @@ void alloc_bootmem_cpumask_var(cpumask_var_t *mask);
 void free_cpumask_var(cpumask_var_t mask);
 void free_bootmem_cpumask_var(cpumask_var_t mask);
 
+static inline bool cpumask_available(cpumask_var_t mask)
+{
+	return mask != NULL;
+}
+
 #else
 typedef struct cpumask cpumask_var_t[1];
 
@@ -708,6 +713,11 @@ static inline void free_cpumask_var(cpumask_var_t mask)
 static inline void free_bootmem_cpumask_var(cpumask_var_t mask)
 {
 }
+
+static inline bool cpumask_available(cpumask_var_t mask)
+{
+	return true;
+}
 #endif /* CONFIG_CPUMASK_OFFSTACK */
 
 /* It's common to want to use cpu_all_mask in struct member initializers,

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip:irq/core] kernel/irq: Use cpumask_available() for check of cpumask variable
  2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
  2017-04-14 17:51   ` Thomas Gleixner
@ 2017-04-14 17:55   ` tip-bot for Matthias Kaehlcke
  2017-04-14 18:51   ` [tip:irq/core] genirq: " tip-bot for Matthias Kaehlcke
  2 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Matthias Kaehlcke @ 2017-04-14 17:55 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: mka, hpa, mingo, akpm, md, ghackmann, rusty, linux-kernel, tglx,
	grundler

Commit-ID:  31299f44f42dd8dbc5ed200d3064f9c6ddbd3447
Gitweb:     http://git.kernel.org/tip/31299f44f42dd8dbc5ed200d3064f9c6ddbd3447
Author:     Matthias Kaehlcke <mka@chromium.org>
AuthorDate: Wed, 12 Apr 2017 11:20:30 -0700
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 14 Apr 2017 19:50:47 +0200

kernel/irq: Use cpumask_available() for check of cpumask variable

This fixes the following clang warning when CONFIG_CPUMASK_OFFSTACK=n:

kernel/irq/manage.c:839:28: error: address of array
'desc->irq_common_data.affinity' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Cc: Grant Grundler <grundler@chromium.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Greg Hackmann <ghackmann@google.com>
Cc: Michael Davidson <md@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/20170412182030.83657-2-mka@chromium.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

---
 kernel/irq/manage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index a4afe5c..155e3c3 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -852,7 +852,7 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action)
 	 * This code is triggered unconditionally. Check the affinity
 	 * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out.
 	 */
-	if (desc->irq_common_data.affinity)
+	if (cpumask_available(desc->irq_common_data.affinity))
 		cpumask_copy(mask, desc->irq_common_data.affinity);
 	else
 		valid = false;

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [tip:irq/core] genirq: Use cpumask_available() for check of cpumask variable
  2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
  2017-04-14 17:51   ` Thomas Gleixner
  2017-04-14 17:55   ` [tip:irq/core] " tip-bot for Matthias Kaehlcke
@ 2017-04-14 18:51   ` tip-bot for Matthias Kaehlcke
  2 siblings, 0 replies; 6+ messages in thread
From: tip-bot for Matthias Kaehlcke @ 2017-04-14 18:51 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: akpm, rusty, tglx, mka, grundler, hpa, md, mingo, linux-kernel,
	ghackmann

Commit-ID:  d170fe7dd992b313d4851ae5ab77ee7a51ed8c72
Gitweb:     http://git.kernel.org/tip/d170fe7dd992b313d4851ae5ab77ee7a51ed8c72
Author:     Matthias Kaehlcke <mka@chromium.org>
AuthorDate: Wed, 12 Apr 2017 11:20:30 -0700
Committer:  Thomas Gleixner <tglx@linutronix.de>
CommitDate: Fri, 14 Apr 2017 20:49:27 +0200

genirq: Use cpumask_available() for check of cpumask variable

This fixes the following clang warning when CONFIG_CPUMASK_OFFSTACK=n:

kernel/irq/manage.c:839:28: error: address of array
'desc->irq_common_data.affinity' will always evaluate to 'true'
[-Werror,-Wpointer-bool-conversion]

Signed-off-by: Matthias Kaehlcke <mka@chromium.org>
Cc: Grant Grundler <grundler@chromium.org>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Greg Hackmann <ghackmann@google.com>
Cc: Michael Davidson <md@google.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Link: http://lkml.kernel.org/r/20170412182030.83657-2-mka@chromium.org
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
---
 kernel/irq/manage.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index a4afe5c..155e3c3 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -852,7 +852,7 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action)
 	 * This code is triggered unconditionally. Check the affinity
 	 * mask pointer. For CPU_MASK_OFFSTACK=n this is optimized out.
 	 */
-	if (desc->irq_common_data.affinity)
+	if (cpumask_available(desc->irq_common_data.affinity))
 		cpumask_copy(mask, desc->irq_common_data.affinity);
 	else
 		valid = false;

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2017-04-14 18:56 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-04-12 18:20 [PATCH v2 1/2] cpumask: Add helper cpumask_available() Matthias Kaehlcke
2017-04-12 18:20 ` [PATCH v2 2/2] kernel/irq: Use cpumask_available() for check of cpumask variable Matthias Kaehlcke
2017-04-14 17:51   ` Thomas Gleixner
2017-04-14 17:55   ` [tip:irq/core] " tip-bot for Matthias Kaehlcke
2017-04-14 18:51   ` [tip:irq/core] genirq: " tip-bot for Matthias Kaehlcke
2017-04-14 17:54 ` [tip:irq/core] cpumask: Add helper cpumask_available() tip-bot for Matthias Kaehlcke

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.