before ", vbulletin,jelsoft,forum,bbs,discussion,bulletin board" /> before " Debian Kernel" /> Bug#538372: Revert "net: Support inclusion of <linux/socket.h> before <sys/socket.h>" - Linux Archive
FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Kernel

 
 
LinkBack Thread Tools
 
Old 11-12-2009, 01:00 AM
Ben Hutchings
 
Default Bug#538372: Revert "net: Support inclusion of before "

This reverts commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305. That
commit caused <linux/rtnetlink.h> to require that <sys/socket.h> is
included first, breaking autoconf tests for <linux/rtnetlink.h> and
presumably some real programs too.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
Please apply this to net-2.6.

I'm not sure what the proper solution is; maybe make <linux/socket.h>
include <sys/socket.h> if __KERNEL__ is not defined?

Ben.

include/linux/socket.h | 21 ++++++++++++++++++---
1 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/include/linux/socket.h b/include/linux/socket.h
index 3273a0c..3b461df 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -16,7 +16,7 @@ struct __kernel_sockaddr_storage {
/* _SS_MAXSIZE value minus size of ss_family */
} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */

-#ifdef __KERNEL__
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)

#include <asm/socket.h> /* arch-dependent defines */
#include <linux/sockios.h> /* the SIOCxxx I/O controls */
@@ -101,6 +101,21 @@ struct cmsghdr {
((char *)(cmsg) - (char *)(mhdr)->msg_control)))

/*
+ * This mess will go away with glibc
+ */
+
+#ifdef __KERNEL__
+#define __KINLINE static inline
+#elif defined(__GNUC__)
+#define __KINLINE static __inline__
+#elif defined(__cplusplus)
+#define __KINLINE static inline
+#else
+#define __KINLINE static
+#endif
+
+
+/*
* Get the next cmsg header
*
* PLEASE, do not touch this function. If you think, that it is
@@ -113,7 +128,7 @@ struct cmsghdr {
* ancillary object DATA. --ANK (980731)
*/

-static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
+__KINLINE struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size,
struct cmsghdr *__cmsg)
{
struct cmsghdr * __ptr;
@@ -125,7 +140,7 @@ static inline struct cmsghdr * __cmsg_nxthdr(void *__ctl, __kernel_size_t __size
return __ptr;
}

-static inline struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)
+__KINLINE struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__cmsg)
{
return __cmsg_nxthdr(__msg->msg_control, __msg->msg_controllen, __cmsg);
}
--
1.6.5.2





--
To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 
Old 11-12-2009, 01:51 AM
David Miller
 
Default Bug#538372: Revert "net: Support inclusion of before "

From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 12 Nov 2009 02:00:05 +0000

> This reverts commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305. That
> commit caused <linux/rtnetlink.h> to require that <sys/socket.h> is
> included first, breaking autoconf tests for <linux/rtnetlink.h> and
> presumably some real programs too.
>
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

I'm not reverting this Ben. The dependency those programs and
autoconf tests have is _dubious_ at best.

It means they were depending upon the libc5 checks passing, that's
rediculious and not something we should cater to.

If you really want it to work that linux/rtnetlink.h is included first
before sys/socket.h in userland, fix that specifically instead. But
I believe such a dependency is reasonable and the userspace bits need
fixing.




--
To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 
Old 11-12-2009, 02:05 AM
Ben Hutchings
 
Default Bug#538372: Revert "net: Support inclusion of before "

On Wed, 2009-11-11 at 18:51 -0800, David Miller wrote:
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Thu, 12 Nov 2009 02:00:05 +0000
>
> > This reverts commit 9c501935a3cdcf6b1d35aaee3aa11c7a7051a305. That
> > commit caused <linux/rtnetlink.h> to require that <sys/socket.h> is
> > included first, breaking autoconf tests for <linux/rtnetlink.h> and
> > presumably some real programs too.
> >
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
>
> I'm not reverting this Ben. The dependency those programs and
> autoconf tests have is _dubious_ at best.
>
> It means they were depending upon the libc5 checks passing, that's
> rediculious and not something we should cater to.
[...]

Sorry, I'm getting my headers mixed up. The problem is with
<linux/netlink.h> not <linux/rtnetlink.h>.

<linux/netlink.h> will not compile for userland, because
<linux/socket.h> is no longer defining sa_family_t. For userland, this
should be defined by <sys/socket.h>.

Ben.

--
Ben Hutchings
Lowery's Law:
If it jams, force it. If it breaks, it needed replacing anyway.
 
Old 11-12-2009, 02:09 AM
David Miller
 
Default Bug#538372: Revert "net: Support inclusion of before "

From: Ben Hutchings <ben@decadent.org.uk>
Date: Thu, 12 Nov 2009 03:05:15 +0000

> <linux/netlink.h> will not compile for userland, because
> <linux/socket.h> is no longer defining sa_family_t. For userland, this
> should be defined by <sys/socket.h>.

Still, you still essentially have two choices:

1) Tell userland, sorry you need to include sys/socket.h before
other "socket stuff" and that means linux/netlink.h in
particular

2) Put a !__KERNEL__ sys/socket.h include in there, but that's
asking for trouble.

Ok?



--
To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
 
Old 11-12-2009, 02:38 AM
Ben Hutchings
 
Default Bug#538372: Revert "net: Support inclusion of before "

On Wed, 2009-11-11 at 19:09 -0800, David Miller wrote:
> From: Ben Hutchings <ben@decadent.org.uk>
> Date: Thu, 12 Nov 2009 03:05:15 +0000
>
> > <linux/netlink.h> will not compile for userland, because
> > <linux/socket.h> is no longer defining sa_family_t. For userland, this
> > should be defined by <sys/socket.h>.
>
> Still, you still essentially have two choices:
>
> 1) Tell userland, sorry you need to include sys/socket.h before
> other "socket stuff" and that means linux/netlink.h in
> particular

Which is just nasty; headers should include everything they need.

> 2) Put a !__KERNEL__ sys/socket.h include in there, but that's
> asking for trouble.

Indeed.

Including <bits/sockaddr.h> would get us exactly what we need, but
that's not meant to be included directly.

Ulrich, can you make any suggestions as to how we can resolve this?

Ben.

--
Ben Hutchings
Lowery's Law:
If it jams, force it. If it breaks, it needed replacing anyway.
 

Thread Tools




All times are GMT. The time now is 05:51 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org