netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next] compat: always include linux/compat.h from net/compat.h
@ 2020-11-21 17:52 Jakub Kicinski
  2020-11-21 18:40 ` Jakub Kicinski
  2020-11-21 21:25 ` Arnd Bergmann
  0 siblings, 2 replies; 4+ messages in thread
From: Jakub Kicinski @ 2020-11-21 17:52 UTC (permalink / raw)
  To: davem; +Cc: netdev, hch, arnd, Jakub Kicinski

We're about to do some reshuffling in networking headers and make
some of the file lose the implicit includes. This results in:

In file included from net/ipv4/netfilter/arp_tables.c:26:
include/net/compat.h:57:23: error: conflicting types for ‘uintptr_t’
 #define compat_uptr_t uintptr_t
                       ^~~~~~~~~
include/asm-generic/compat.h:22:13: note: in expansion of macro ‘compat_uptr_t’
 typedef u32 compat_uptr_t;
             ^~~~~~~~~~~~~
In file included from include/linux/limits.h:6,
                 from include/linux/kernel.h:7,
                 from net/ipv4/netfilter/arp_tables.c:14:
include/linux/types.h:37:24: note: previous declaration of ‘uintptr_t’ was here
 typedef unsigned long  uintptr_t;
                        ^~~~~~~~~

Currently net/compat.h depends on linux/compat.h being included
first. After the upcoming changes this would break the 32bit build.

Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
Not sure who officially maintains this. Arnd, Christoph any objections?

 include/net/compat.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/net/compat.h b/include/net/compat.h
index 745db0d605b6..08a089bbaecc 100644
--- a/include/net/compat.h
+++ b/include/net/compat.h
@@ -5,10 +5,10 @@
 
 struct sock;
 
-#if defined(CONFIG_COMPAT)
-
 #include <linux/compat.h>
 
+#if defined(CONFIG_COMPAT)
+
 struct compat_msghdr {
 	compat_uptr_t	msg_name;	/* void * */
 	compat_int_t	msg_namelen;
-- 
2.24.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] compat: always include linux/compat.h from net/compat.h
  2020-11-21 17:52 [PATCH net-next] compat: always include linux/compat.h from net/compat.h Jakub Kicinski
@ 2020-11-21 18:40 ` Jakub Kicinski
  2020-11-21 21:25 ` Arnd Bergmann
  1 sibling, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2020-11-21 18:40 UTC (permalink / raw)
  To: davem; +Cc: netdev, hch, arnd

On Sat, 21 Nov 2020 09:52:24 -0800 Jakub Kicinski wrote:
> In file included from net/ipv4/netfilter/arp_tables.c:26:
> include/net/compat.h:57:23: error: conflicting types for ‘uintptr_t’
>  #define compat_uptr_t uintptr_t
>                        ^~~~~~~~~
> include/asm-generic/compat.h:22:13: note: in expansion of macro ‘compat_uptr_t’
>  typedef u32 compat_uptr_t;
>              ^~~~~~~~~~~~~
> In file included from include/linux/limits.h:6,
>                  from include/linux/kernel.h:7,
>                  from net/ipv4/netfilter/arp_tables.c:14:
> include/linux/types.h:37:24: note: previous declaration of ‘uintptr_t’ was here
>  typedef unsigned long  uintptr_t;
>                         ^~~~~~~~~

Ah, damn it, I obviously copied the wrong error into the commit
message. This is the correct one (after removing include of ethtool.h
from netdevice.h):


In file included from ../net/ipv4/netfilter/arp_tables.c:26:
include/net/compat.h:60:40: error: unknown type name ‘compat_uptr_t’; did you mean ‘compat_ptr_ioctl’?
    struct sockaddr __user **save_addr, compat_uptr_t *ptr,
                                        ^~~~~~~~~~~~~
                                        compat_ptr_ioctl
include/net/compat.h:61:4: error: unknown type name ‘compat_size_t’; did you mean ‘compat_sigset_t’?
    compat_size_t *len);
    ^~~~~~~~~~~~~
    compat_sigset_t

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] compat: always include linux/compat.h from net/compat.h
  2020-11-21 17:52 [PATCH net-next] compat: always include linux/compat.h from net/compat.h Jakub Kicinski
  2020-11-21 18:40 ` Jakub Kicinski
@ 2020-11-21 21:25 ` Arnd Bergmann
  2020-11-21 21:48   ` Jakub Kicinski
  1 sibling, 1 reply; 4+ messages in thread
From: Arnd Bergmann @ 2020-11-21 21:25 UTC (permalink / raw)
  To: Jakub Kicinski; +Cc: David Miller, Networking, Christoph Hellwig, Arnd Bergmann

On Sat, Nov 21, 2020 at 6:52 PM Jakub Kicinski <kuba@kernel.org> wrote:
>
> We're about to do some reshuffling in networking headers and make
> some of the file lose the implicit includes. This results in:
>
> In file included from net/ipv4/netfilter/arp_tables.c:26:
> include/net/compat.h:57:23: error: conflicting types for ‘uintptr_t’
>  #define compat_uptr_t uintptr_t
>                        ^~~~~~~~~
> include/asm-generic/compat.h:22:13: note: in expansion of macro ‘compat_uptr_t’
>  typedef u32 compat_uptr_t;
>              ^~~~~~~~~~~~~
> In file included from include/linux/limits.h:6,
>                  from include/linux/kernel.h:7,
>                  from net/ipv4/netfilter/arp_tables.c:14:
> include/linux/types.h:37:24: note: previous declaration of ‘uintptr_t’ was here
>  typedef unsigned long  uintptr_t;
>                         ^~~~~~~~~
>
> Currently net/compat.h depends on linux/compat.h being included
> first. After the upcoming changes this would break the 32bit build.
>
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> Not sure who officially maintains this. Arnd, Christoph any objections?

Looks good to me. I would actually go one step further and completely
remove this #ifdef, if possible. In the old days, it was not possible to
include linux/compat.h on 32-bit architectures, but now this should just
work without an #ifdef.

     Arnd

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH net-next] compat: always include linux/compat.h from net/compat.h
  2020-11-21 21:25 ` Arnd Bergmann
@ 2020-11-21 21:48   ` Jakub Kicinski
  0 siblings, 0 replies; 4+ messages in thread
From: Jakub Kicinski @ 2020-11-21 21:48 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: David Miller, Networking, Christoph Hellwig, Arnd Bergmann

On Sat, 21 Nov 2020 22:25:35 +0100 Arnd Bergmann wrote:
> On Sat, Nov 21, 2020 at 6:52 PM Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > We're about to do some reshuffling in networking headers and make
> > some of the file lose the implicit includes. This results in:
> >
> > In file included from net/ipv4/netfilter/arp_tables.c:26:
> > include/net/compat.h:57:23: error: conflicting types for ‘uintptr_t’
> >  #define compat_uptr_t uintptr_t
> >                        ^~~~~~~~~
> > include/asm-generic/compat.h:22:13: note: in expansion of macro ‘compat_uptr_t’
> >  typedef u32 compat_uptr_t;
> >              ^~~~~~~~~~~~~
> > In file included from include/linux/limits.h:6,
> >                  from include/linux/kernel.h:7,
> >                  from net/ipv4/netfilter/arp_tables.c:14:
> > include/linux/types.h:37:24: note: previous declaration of ‘uintptr_t’ was here
> >  typedef unsigned long  uintptr_t;
> >                         ^~~~~~~~~
> >
> > Currently net/compat.h depends on linux/compat.h being included
> > first. After the upcoming changes this would break the 32bit build.
> >
> > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > ---
> > Not sure who officially maintains this. Arnd, Christoph any objections?  
> 
> Looks good to me. I would actually go one step further and completely
> remove this #ifdef, if possible. In the old days, it was not possible to
> include linux/compat.h on 32-bit architectures, but now this should just
> work without an #ifdef.

Indeed, that appears to work, v2 coming up, thanks!

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-11-21 21:48 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-21 17:52 [PATCH net-next] compat: always include linux/compat.h from net/compat.h Jakub Kicinski
2020-11-21 18:40 ` Jakub Kicinski
2020-11-21 21:25 ` Arnd Bergmann
2020-11-21 21:48   ` Jakub Kicinski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).