Re: [PATCH net-next] tools headers: Sync uapi/asm-generic/socket.h with the kernel sources
From: Kuniyuki Iwashima
Date: Fri Mar 14 2025 - 15:48:07 EST
From: Anna Nyiri <annaemesenyiri@xxxxxxxxx>
Date: Fri, 14 Mar 2025 14:31:34 +0100
> Alexander Mikhalitsyn <alexander@xxxxxxxxxxxxx> ezt írta (időpont:
> 2025. márc. 10., H, 9:22):
> >
> > Am Mo., 10. März 2025 um 06:33 Uhr schrieb Jason Xing
> > <kerneljasonxing@xxxxxxxxx>:
> > >
> > > On Sun, Mar 9, 2025 at 1:15 PM Alexander Mikhalitsyn
> > > <aleksandr.mikhalitsyn@xxxxxxxxxxxxx> wrote:
> > > >
> > > > This also fixes a wrong definitions for SCM_TS_OPT_ID & SO_RCVPRIORITY.
> > > >
> > > > Accidentally found while working on another patchset.
> > > >
> > > > Cc: linux-kernel@xxxxxxxxxxxxxxx
> > > > Cc: netdev@xxxxxxxxxxxxxxx
> > > > Cc: Eric Dumazet <edumazet@xxxxxxxxxx>
> > > > Cc: Jakub Kicinski <kuba@xxxxxxxxxx>
> > > > Cc: Vadim Fedorenko <vadim.fedorenko@xxxxxxxxx>
> > > > Cc: Willem de Bruijn <willemb@xxxxxxxxxx>
> > > > Cc: Jason Xing <kerneljasonxing@xxxxxxxxx>
> > > > Cc: Anna Emese Nyiri <annaemesenyiri@xxxxxxxxx>
> > > > Fixes: a89568e9be75 ("selftests: txtimestamp: add SCM_TS_OPT_ID test")
> > > > Fixes: e45469e594b2 ("sock: Introduce SO_RCVPRIORITY socket option")
> > > > Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@xxxxxxxxxxxxx>
> > >
> >
> > Hi Jason,
> >
> > Thanks for looking into this!
> >
> > > I'm not sure if it's a bug. As you may notice, in
> > > arch/parisc/include/uapi/asm/socket.h, it has its own management of
> > > definitions.
> > >
> > > I'm worried that since this file is uapi, is it allowed to adjust the
> > > number like this patch does if it's not a bug.
The uAPI number definions are different between arch, but strictly,
files under tools/ are not the source of truth.
> >
> > My understanding is that this file (tools/include/uapi/asm-generic/socket.h) is
> > a mirror copy of the actual UAPI file (uapi/asm-generic/socket.h),
> > and definitions need to be in sync with it.
Right.
>
> I don’t completely understand this either—if the definitions need to
> be in sync, why is there a discrepancy?
>
> Specifically, I am referring to the ones that caused the shift in
> numbering in uapi/asm-generic/socket.h:
> #define SO_DEVMEM_LINEAR 78
> #define SCM_DEVMEM_LINEAR SO_DEVMEM_LINEAR
> #define SO_DEVMEM_DMABUF 79
> #define SCM_DEVMEM_DMABUF SO_DEVMEM_DMABUF
> #define SO_DEVMEM_DONTNEED 80
>
> In the case of SO_RCVPRIORITY, I simply continued the numbering
> sequence as it was
This should've followed include/uapi/asm-generic/socket.h.
Otherwise, a program compiled with tools/include/uapi/asm-generic/socket.h
does not work on kernel compiled with include/uapi/asm-generic/socket.h,
and the prog will invoke syscall with an unintentional number.
So, tools/include/uapi must be synced with include/uapi and fixing
up wrong definitions under tools/include/uapi is totally fine, and
this does not cause uAPI breakage, rather it's been broken.