public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Christoph Hellwig <hch@lst.de>,
	Nathan Chancellor <nathan@kernel.org>,
	Naresh Kamboju <naresh.kamboju@linaro.org>,
	"open list:BROADCOM NVRAM DRIVER" <linux-mips@vger.kernel.org>,
	linux-arch <linux-arch@vger.kernel.org>,
	Heiko Stuebner <heiko@sntech.de>,
	Palmer Dabbelt <palmer@rivosinc.com>, Guo Ren <guoren@kernel.org>
Subject: Re: [PATCH] tools: Fixed MIPS builds due to struct flock re-definition
Date: Tue, 19 Jul 2022 12:05:23 -0700	[thread overview]
Message-ID: <2656551b-2c6f-9f0d-93a6-ef6177ec265e@gmail.com> (raw)
In-Reply-To: <CAK8P3a3cuTknZaLZCFGwZtMfbd1qAFWEtXMcvVHsXoJn8EUCOg@mail.gmail.com>



On 7/19/2022 12:42 AM, Arnd Bergmann wrote:
> On Fri, Jul 15, 2022 at 8:55 PM Florian Fainelli <f.fainelli@gmail.com> wrote:
>>
>> Building perf for MIPS failed after 9f79b8b72339 ("uapi: simplify
>> __ARCH_FLOCK{,64}_PAD a little") with the following error:
>>
>>    CC
>> /home/fainelli/work/buildroot/output/bmips/build/linux-custom/tools/perf/trace/beauty/fcntl.o
>> In file included from
>> ../../../../host/mipsel-buildroot-linux-gnu/sysroot/usr/include/asm/fcntl.h:77,
>>                   from ../include/uapi/linux/fcntl.h:5,
>>                   from trace/beauty/fcntl.c:10:
>> ../include/uapi/asm-generic/fcntl.h:188:8: error: redefinition of
>> 'struct flock'
>>   struct flock {
>>          ^~~~~
>> In file included from ../include/uapi/linux/fcntl.h:5,
>>                   from trace/beauty/fcntl.c:10:
>> ../../../../host/mipsel-buildroot-linux-gnu/sysroot/usr/include/asm/fcntl.h:63:8:
>> note: originally defined here
>>   struct flock {
>>          ^~~~~
>>
>> This is due to the local copy under
>> tools/include/uapi/asm-generic/fcntl.h including the toolchain's kernel
>> headers which already define 'struct flock' and define
>> HAVE_ARCH_STRUCT_FLOCK to future inclusions make a decision as to
>> whether re-defining 'struct flock' is appropriate or not.
>>
>> Make sure what do not re-define 'struct flock'
>> when HAVE_ARCH_STRUCT_FLOCK is already defined.
>>
>> Fixes: 9f79b8b72339 ("uapi: simplify __ARCH_FLOCK{,64}_PAD a little")
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> ---
>>   tools/include/uapi/asm-generic/fcntl.h | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/tools/include/uapi/asm-generic/fcntl.h b/tools/include/uapi/asm-generic/fcntl.h
>> index 0197042b7dfb..312881aa272b 100644
>> --- a/tools/include/uapi/asm-generic/fcntl.h
>> +++ b/tools/include/uapi/asm-generic/fcntl.h
>> @@ -185,6 +185,7 @@ struct f_owner_ex {
>>
>>   #define F_LINUX_SPECIFIC_BASE  1024
>>
>> +#ifndef HAVE_ARCH_STRUCT_FLOCK
>>   struct flock {
>>          short   l_type;
>>          short   l_whence;
>> @@ -209,5 +210,6 @@ struct flock64 {
>>          __ARCH_FLOCK64_PAD
>>   #endif
>>   };
>> +#endif /* HAVE_ARCH_STRUCT_FLOCK */
>>
> 
> I applied this to the asm-generic tree, but now I'm having second thoughts, as
> this only changes the tools/include/ version but not the version we ship to user
> space. Normally these are meant to be kept in sync.

Thanks! Just to be clear, applying just your patch is not enough as the 
original build issue is still present, so we would need my change plus 
yours, I think that is what you intended but just wanted to double 
confirm. On a side note your tree at:

https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git/refs/heads

does not appear to have it included/pushed out yet, should I be looking 
at another git tree?

> 
> It appears that commit 306f7cc1e906 ("uapi: always define
> F_GETLK64/F_SETLK64/F_SETLKW64 in fcntl.h") already caused
> them to diverge, presumably the uapi version here is correct and we
> forgot to adapt the tools version at some point. There are also some
> non-functional differences from older patches.
> 
> I think the correct fix to address the problem in both versions and
> get them back into sync would be something like the patch below.
> I have done zero testing on it though.
> 
> Christoph and Florian, any other suggestions?

This works for me with my patch plus your patch in the following 
configurations:

- MIPS toolchain with kernel-headers 4.1.x
- MIPS toolchain with kernel headers using my patch plus your patch

Tested-by: Florian Fainelli <f.fainelli@gmail.com>
-- 
Florian

  parent reply	other threads:[~2022-07-19 19:05 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-15 18:55 [PATCH] tools: Fixed MIPS builds due to struct flock re-definition Florian Fainelli
2022-07-16 23:21 ` Florian Fainelli
2022-07-19  0:17   ` Florian Fainelli
2022-07-19  4:30 ` Christoph Hellwig
2022-07-19  7:42 ` Arnd Bergmann
2022-07-19 15:16   ` Christoph Hellwig
2022-07-19 19:05   ` Florian Fainelli [this message]
2022-07-19 21:15     ` Arnd Bergmann
2022-07-19 21:17       ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2656551b-2c6f-9f0d-93a6-ef6177ec265e@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=arnd@arndb.de \
    --cc=guoren@kernel.org \
    --cc=hch@lst.de \
    --cc=heiko@sntech.de \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=naresh.kamboju@linaro.org \
    --cc=nathan@kernel.org \
    --cc=palmer@rivosinc.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox