Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752261AbdHRVkm (ORCPT ); Fri, 18 Aug 2017 17:40:42 -0400 Received: from mail-qk0-f196.google.com ([209.85.220.196]:37684 "EHLO mail-qk0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751173AbdHRVkl (ORCPT ); Fri, 18 Aug 2017 17:40:41 -0400 Subject: Re: [PATCH] um: Fix check for _xstate for older hosts To: Richard Weinberger Cc: LKML , Jeff Dike , Richard Weinberger , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , "maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)" , "open list:USER-MODE LINUX (UML)" , "open list:USER-MODE LINUX (UML)" References: <20170718234347.21560-1-f.fainelli@gmail.com> From: Florian Fainelli Message-ID: <7e61844a-800e-bee4-d06b-6037d0f7e38b@gmail.com> Date: Fri, 18 Aug 2017 14:40:36 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2159 Lines: 53 On 07/24/2017 05:46 AM, Richard Weinberger wrote: > On Wed, Jul 19, 2017 at 1:43 AM, Florian Fainelli wrote: >> Commit 0a987645672e ("um: Allow building and running on older >> hosts") attempted to check for PTRACE_{GET,SET}REGSET under the premise >> that these ptrace(2) parameters were directly linked with the presence >> of the _xstate structure. >> >> After Richard's commit 61e8d462457f ("um: Correctly check for >> PTRACE_GETRESET/SETREGSET") which properly included linux/ptrace.h >> instead of asm/ptrace.h, we could get into the original build failure >> that I reported: >> >> arch/x86/um/user-offsets.c: In function 'foo': >> arch/x86/um/user-offsets.c:54: error: invalid application of 'sizeof' to >> incomplete type 'struct _xstate' >> >> On this particular host, we do have PTRACE_GETREGSET and >> PTRACE_SETREGSET defined in linux/ptrace.h, but not the structure >> _xstate that should be pulled from the following include chain: signal.h >> -> bits/sigcontext.h. >> >> Correctly fix this by checking for FP_XSTATE_MAGIC1 which is the correct >> way to see if struct _xstate is available or not on the host. >> >> Fixes: 61e8d462457f ("um: Correctly check for PTRACE_GETRESET/SETREGSET") >> Fixes: 0a987645672e ("um: Allow building and running on older hosts") >> Signed-off-by: Florian Fainelli >> --- >> arch/x86/um/user-offsets.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/arch/x86/um/user-offsets.c b/arch/x86/um/user-offsets.c >> index ae4cd58c0c7a..02250b2633b8 100644 >> --- a/arch/x86/um/user-offsets.c >> +++ b/arch/x86/um/user-offsets.c >> @@ -50,7 +50,7 @@ void foo(void) >> DEFINE(HOST_GS, GS); >> DEFINE(HOST_ORIG_AX, ORIG_EAX); >> #else >> -#if defined(PTRACE_GETREGSET) && defined(PTRACE_SETREGSET) >> +#ifdef FP_XSTATE_MAGIC1 >> DEFINE(HOST_FP_SIZE, sizeof(struct _xstate) / sizeof(unsigned long)); >> #else >> DEFINE(HOST_FP_SIZE, sizeof(struct _fpstate) / sizeof(unsigned long)); >> -- >> 2.9.3 >> > > Applied, thanks for fixing! Can you submit this to Linus before v4.13 is released? Thank you! -- Florian