From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752742AbdH2LT7 (ORCPT ); Tue, 29 Aug 2017 07:19:59 -0400 Received: from terminus.zytor.com ([65.50.211.136]:45771 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751357AbdH2LT6 (ORCPT ); Tue, 29 Aug 2017 07:19:58 -0400 Date: Tue, 29 Aug 2017 04:13:57 -0700 From: tip-bot for Thomas Gleixner Message-ID: Cc: luto@kernel.org, rostedt@goodmis.org, dvlasenk@redhat.com, bp@alien8.de, boris.ostrovsky@oracle.com, torvalds@linux-foundation.org, jgross@suse.com, linux-kernel@vger.kernel.org, peterz@infradead.org, mingo@kernel.org, brgerst@gmail.com, hpa@zytor.com, tglx@linutronix.de, jpoimboe@redhat.com Reply-To: dvlasenk@redhat.com, bp@alien8.de, rostedt@goodmis.org, luto@kernel.org, mingo@kernel.org, brgerst@gmail.com, peterz@infradead.org, linux-kernel@vger.kernel.org, jgross@suse.com, torvalds@linux-foundation.org, boris.ostrovsky@oracle.com, hpa@zytor.com, jpoimboe@redhat.com, tglx@linutronix.de In-Reply-To: <20170828064958.120214366@linutronix.de> References: <20170828064958.120214366@linutronix.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/apic] x86/asm: Replace access to desc_struct:a/b fields Git-Commit-ID: 9a98e7780022aa7cd201eb8a88a4f1d607b73cde X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 9a98e7780022aa7cd201eb8a88a4f1d607b73cde Gitweb: http://git.kernel.org/tip/9a98e7780022aa7cd201eb8a88a4f1d607b73cde Author: Thomas Gleixner AuthorDate: Mon, 28 Aug 2017 08:47:40 +0200 Committer: Ingo Molnar CommitDate: Tue, 29 Aug 2017 12:07:25 +0200 x86/asm: Replace access to desc_struct:a/b fields The union inside of desc_struct which allows access to the raw u32 parts of the descriptors. This raw access part is about to go away. Replace the few code parts which access those fields. Signed-off-by: Thomas Gleixner Reviewed-by: Boris Ostrovsky Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Josh Poimboeuf Cc: Juergen Gross Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Steven Rostedt Link: http://lkml.kernel.org/r/20170828064958.120214366@linutronix.de Signed-off-by: Ingo Molnar --- arch/x86/include/asm/xen/hypercall.h | 6 ++++-- arch/x86/kernel/tls.c | 2 +- arch/x86/xen/enlighten_pv.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/arch/x86/include/asm/xen/hypercall.h b/arch/x86/include/asm/xen/hypercall.h index 11071fc..9606688 100644 --- a/arch/x86/include/asm/xen/hypercall.h +++ b/arch/x86/include/asm/xen/hypercall.h @@ -552,6 +552,8 @@ static inline void MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr, struct desc_struct desc) { + u32 *p = (u32 *) &desc; + mcl->op = __HYPERVISOR_update_descriptor; if (sizeof(maddr) == sizeof(long)) { mcl->args[0] = maddr; @@ -559,8 +561,8 @@ MULTI_update_descriptor(struct multicall_entry *mcl, u64 maddr, } else { mcl->args[0] = maddr; mcl->args[1] = maddr >> 32; - mcl->args[2] = desc.a; - mcl->args[3] = desc.b; + mcl->args[2] = *p++; + mcl->args[3] = *p; } trace_xen_mc_entry(mcl, sizeof(maddr) == sizeof(long) ? 2 : 4); diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c index dcd699b..a106b97 100644 --- a/arch/x86/kernel/tls.c +++ b/arch/x86/kernel/tls.c @@ -93,7 +93,7 @@ static void set_tls_desc(struct task_struct *p, int idx, while (n-- > 0) { if (LDT_empty(info) || LDT_zero(info)) { - desc->a = desc->b = 0; + memset(desc, 0, sizeof(*desc)); } else { fill_ldt(desc, info); diff --git a/arch/x86/xen/enlighten_pv.c b/arch/x86/xen/enlighten_pv.c index 4c5d72b..03fb07d 100644 --- a/arch/x86/xen/enlighten_pv.c +++ b/arch/x86/xen/enlighten_pv.c @@ -494,7 +494,7 @@ static void __init xen_load_gdt_boot(const struct desc_ptr *dtr) static inline bool desc_equal(const struct desc_struct *d1, const struct desc_struct *d2) { - return d1->a == d2->a && d1->b == d2->b; + return !memcmp(d1, d2, sizeof(*d1)); } static void load_TLS_descriptor(struct thread_struct *t,