From: Florian Weimer <fweimer@redhat.com>
To: "Arnd Bergmann" <arnd@arndb.de>
Cc: "Jakub Kicinski" <kuba@kernel.org>,
"Thomas Weißschuh" <thomas.weissschuh@linutronix.de>,
"Eric Dumazet" <edumazet@google.com>,
"Kuniyuki Iwashima" <kuniyu@google.com>,
"Paolo Abeni" <pabeni@redhat.com>,
"Willem de Bruijn" <willemb@google.com>,
Netdev <netdev@vger.kernel.org>,
linux-kernel@vger.kernel.org, linux-api@vger.kernel.org
Subject: Re: [PATCH net-next] net: uapi: Provide an UAPI definition of 'struct sockaddr'
Date: Mon, 12 Jan 2026 12:42:17 +0100 [thread overview]
Message-ID: <lhu7btnkqg6.fsf@oldenburg.str.redhat.com> (raw)
In-Reply-To: <06cf1396-c100-45ba-8b46-edb4ed4feb62@app.fastmail.com> (Arnd Bergmann's message of "Fri, 09 Jan 2026 13:56:38 +0100")
* Arnd Bergmann:
> On Wed, Jan 7, 2026, at 00:13, Jakub Kicinski wrote:
>> On Tue, 6 Jan 2026 11:32:52 +0100 Thomas Weißschuh wrote:
>>> As for the failure in netdev CI however I am not so sure.
>>> Looking at net-next-2026-01-05--12-00, the only failures triggered by my
>>> change are also the ones from the bpf-ci. Are these the ones you meant,
>>> or am I missing some others?
>>
>> Multiple things broke at once so slightly hard to fish the relevant
>> stuff out from here:
>>
>> https://netdev.bots.linux.dev/contest.html?branch=net-next-2026-01-05--15-00&pass=0&pw-n=0
>>
>> Here's one:
>>
>> make[1]: Entering directory
>> '/home/virtme/testing/wt-3/tools/testing/selftests/net'
>> CC busy_poller
>> In file included from [01m[K/usr/include/sys/socket.h:33[m[K,
>> from [01m[K/usr/include/netinet/in.h:23[m[K,
>> from [01m[K/usr/include/arpa/inet.h:22[m[K,
>> from [01m[Kbusy_poller.c:14[m[K:
>> [01m[K/usr/include/bits/socket.h:182:8:[m[K [01;31m[Kerror:
>> [m[Kredefinition of '[01m[Kstruct sockaddr[m[K'
>
>> from [01m[Kbusy_poller.c:12[m[K:
>> [01m[K/home/virtme/testing/wt-3/usr/include/linux/socket.h:37:8:[m[K
>> [01;36m[Knote: [m[Koriginally defined here
>
> Maybe we can change all the instances of 'struct sockaddr' in
> include/uapi/ to reference a new 'struct __kernel_sockaddr',
> and then redirect that one if the libc header got included
> first?
>
> struct __kernel_sockaddr {
> __kernel_sa_family_t sa_family; /* address family, AF_xxx */
> char sa_data_min[14]; /* Minimum 14 bytes of protocol address */
> };
> #ifdef _SYS_SOCKET_H
> #define __kernel_sockaddr sockaddr
> #endif
>
> This will still fail when a user application includes linux/if.h
> before sys/socket.h and then expects the structures in linux/if.h
> to contain the libc version of sockaddr, but hopefully that is
> much rarer. A survey of codesearch.debian.net shows almost all
> users of linux/if.h first including sys/socket.h, and most of
> them not caring about struct sockaddr either.
If you call the data member sa_data just like glibc, it will only fail
in C++, not C. GCC considers the two definitions sufficiently
equivalent (even though glibc adds a may_alias attribute to meet POSIX
requirements), and duplicate definitions are permitted in C.
C++ with modules will probably support duplicate definitions, too, but I
haven't checked if it's possible to get this work with GCC 16.
Thanks,
Florian
next prev parent reply other threads:[~2026-01-12 11:42 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-05 8:25 [PATCH net-next] net: uapi: Provide an UAPI definition of 'struct sockaddr' Thomas Weißschuh
2026-01-05 13:50 ` Arnd Bergmann
2026-01-20 18:50 ` [klibc] " H. Peter Anvin
2026-01-20 22:31 ` Arnd Bergmann
2026-01-20 23:20 ` H. Peter Anvin
2026-01-30 11:02 ` Thomas Weißschuh
2026-01-05 17:57 ` Jakub Kicinski
2026-01-06 10:32 ` Thomas Weißschuh
2026-01-06 23:13 ` Jakub Kicinski
2026-01-09 12:56 ` Arnd Bergmann
2026-01-12 11:42 ` Florian Weimer [this message]
2026-01-12 11:55 ` Thomas Weißschuh
2026-01-12 13:25 ` Florian Weimer
2026-01-12 13:33 ` Thomas Weißschuh
2026-01-12 13:37 ` Florian Weimer
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=lhu7btnkqg6.fsf@oldenburg.str.redhat.com \
--to=fweimer@redhat.com \
--cc=arnd@arndb.de \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=kuniyu@google.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=thomas.weissschuh@linutronix.de \
--cc=willemb@google.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