Re: [PATCH V12 02/20] uapi: always define F_GETLK64/F_SETLK64/F_SETLKW64 in fcntl.h

Guo Ren
2022-06-13T01:16:09Z

On Wed, Jun 8, 2022 at 5:41 PM Eugene Syromiatnikov <esyr@redhat.com> wrote:
>
> On Tue, Apr 05, 2022 at 03:12:56PM +0800, guoren@kernel.org wrote:
> > From: Christoph Hellwig <hch@lst.de>
> >
> > Note that before this change they were never visible to userspace due
> > to the fact that CONFIG_64BIT is only set for kernel builds.
>
> > -#ifndef CONFIG_64BIT
> > +#if __BITS_PER_LONG == 32 || defined(__KERNEL__)
>
> Actually, it's quite the opposite: "ifndef" usage made it vailable at all times
> to the userspace, and this change has actually broken building strace
> with the latest kernel headers[1][2]. There could be some debate
> whether having these F_*64 definitions exposed to the user space 64-bit
> applications, but it seems that were no harm (as they were exposed already
> for quite some time), and they are useful at least for strace for compat
> application tracing purposes.
>
> [1] https://github.com/strace/strace/runs/6779763146?check_suite_focus=true#step:4:3222
> [2] https://pipelines.actions.githubusercontent.com/serviceHosts/e5309ebd-8a2f-43f4-a212-b52080275b5d/_apis/pipelines/1/runs/1473/signedlogcontent/12?urlExpires=2022-06-08T09%3A37%3A13.9248496Z&urlSigningMethod=HMACV1&urlSignature=fIT7vd0O4NNRwzwKWLXY4UVZBIIF3XiVI9skAsGvV0I%3D
>
Yes, there is no CONFIG_64BIT in userspace, we shouldn't limit it with
(__BITS_PER_LONG == 32 || defined(__KERNEL__)) to break the
compatibility. Just export F_*64 definitions permanently.

--
Best Regards
Guo Ren

ML: https://lore.kernel.org/linux-csky/