Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753718AbeAFVkH (ORCPT + 1 other); Sat, 6 Jan 2018 16:40:07 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:46152 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753202AbeAFVkF (ORCPT ); Sat, 6 Jan 2018 16:40:05 -0500 X-Google-Smtp-Source: ACJfBovV8lXvPitTWJF/KP+sdpj+PkNeCnAIID7+SY/xiou39+GUholDuqSAb3mdE8r3f6H9fw7F1w== From: Nick Desaulniers To: Juergen Gross Cc: ghackmann@google.com, mka@google.com, kees@google.com, srhines@google.com, Nick Desaulniers , Boris Ostrovsky , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] x86: xen: remove the use of VLAIS Date: Sat, 6 Jan 2018 13:39:48 -0800 Message-Id: <1515274788-24548-1-git-send-email-nick.desaulniers@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: Variable Length Arrays In Structs (VLAIS) is not supported by Clang, and frowned upon by others. https://lkml.org/lkml/2013/9/23/500 Here, the VLAIS was used because the size of the bitmap returned from xen_mc_entry() depended on possibly (based on kernel configuration) runtime sized data. Rather than declaring args as a VLAIS then calling sizeof on *args, we calculate the appropriate sizeof args manually. Further, we can get rid of the #ifdef's and rely on num_possible_cpus() (thanks to a helpful checkpatch warning from an earlier version of this patch). Suggested-by: Juergen Gross Signed-off-by: Nick Desaulniers --- Changes in v2: * Change mask to us DECLARE_BITMAP instead of pointer, as suggested. * Update commit message to remove mention of pointer. * Update sizeof calculation to work with array rather than pointer. arch/x86/xen/mmu_pv.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/arch/x86/xen/mmu_pv.c b/arch/x86/xen/mmu_pv.c index 4d62c07..d850762 100644 --- a/arch/x86/xen/mmu_pv.c +++ b/arch/x86/xen/mmu_pv.c @@ -1325,20 +1325,18 @@ static void xen_flush_tlb_others(const struct cpumask *cpus, { struct { struct mmuext_op op; -#ifdef CONFIG_SMP - DECLARE_BITMAP(mask, num_processors); -#else DECLARE_BITMAP(mask, NR_CPUS); -#endif } *args; struct multicall_space mcs; + const size_t mc_entry_size = sizeof(args->op) + + sizeof(args->mask[0]) * BITS_TO_LONGS(num_possible_cpus()); trace_xen_mmu_flush_tlb_others(cpus, info->mm, info->start, info->end); if (cpumask_empty(cpus)) return; /* nothing to do */ - mcs = xen_mc_entry(sizeof(*args)); + mcs = xen_mc_entry(mc_entry_size); args = mcs.args; args->op.arg2.vcpumask = to_cpumask(args->mask); -- 2.7.4