From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753817AbdDKXwm (ORCPT ); Tue, 11 Apr 2017 19:52:42 -0400 Received: from mail-pf0-f182.google.com ([209.85.192.182]:36738 "EHLO mail-pf0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752389AbdDKXwi (ORCPT ); Tue, 11 Apr 2017 19:52:38 -0400 From: Matthias Kaehlcke To: Thomas Gleixner Cc: linux-kernel@vger.kernel.org, Grant Grundler , Greg Hackmann , Michael Davidson , Matthias Kaehlcke Subject: [PATCH] kernel/irq: Limit validation of cpumask_var_t to CONFIG_CPUMASK_OFFSTACK=y Date: Tue, 11 Apr 2017 16:52:17 -0700 Message-Id: <20170411235217.71604-1-mka@chromium.org> X-Mailer: git-send-email 2.12.2.715.g7642488e1d-goog Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With CONFIG_CPUMASK_OFFSTACK=y cpumask_var_t is a struct cpumask pointer, otherwise a struct cpumask array with a single element. irq_thread_check_affinity() validates the cpumask_var_t field in the interrupt descriptor by checking if it is not NULL. This works for both CONFIG_CPUMASK_OFFSTACK=y/n, however clang raises the following warning with 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] To get rid of the warning only validate the cpumask_var_t field when CONFIG_CPUMASK_OFFSTACK=y. Signed-off-by: Matthias Kaehlcke --- kernel/irq/manage.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index a4afe5cc5af1..5d38fe85122b 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -848,14 +848,14 @@ irq_thread_check_affinity(struct irq_desc *desc, struct irqaction *action) } raw_spin_lock_irq(&desc->lock); - /* - * 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) - cpumask_copy(mask, desc->irq_common_data.affinity); - else + +#ifdef CONFIG_CPUMASK_OFFSTACK + if (!desc->irq_common_data.affinity) valid = false; + else +#endif + cpumask_copy(mask, desc->irq_common_data.affinity); + raw_spin_unlock_irq(&desc->lock); if (valid) -- 2.12.2.715.g7642488e1d-goog