2006-10-03 09:03:13

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

On Mon, 2006-10-02 at 16:01 +0000, Linux Kernel Mailing List wrote:
> commit 25b21cb2f6d69b0475b134e0a3e8e269137270fa
> tree cd9c3966408c0ca5903249437c35ff35961de544
> parent c0b2fc316599d6cd875b6b8cafa67f03b9512b4d
> author Kirill Korotaev <[email protected]> 1159780699 -0700
> committer Linus Torvalds <[email protected]> 1159801042 -0700
>
> [PATCH] IPC namespace core
>
> This patch set allows to unshare IPCs and have a private set of IPC objects
> (sem, shm, msg) inside namespace. Basically, it is another building block of
> containers functionality.
>
> This patch implements core IPC namespace changes:
> - ipc_namespace structure
> - new config option CONFIG_IPC_NS
> - adds CLONE_NEWIPC flag
> - unshare support
>
> [[email protected]: small fix for unshare of ipc namespace]
> [[email protected]: build fix]
> Signed-off-by: Pavel Emelianov <[email protected]>
> Signed-off-by: Kirill Korotaev <[email protected]>
> Signed-off-by: Cedric Le Goater <[email protected]>
> Cc: "Eric W. Biederman" <[email protected]>
> Signed-off-by: Andrew Morton <[email protected]>
> Signed-off-by: Linus Torvalds <[email protected]>

> --- a/include/linux/ipc.h
> +++ b/include/linux/ipc.h
> @@ -2,6 +2,7 @@ #ifndef _LINUX_IPC_H
> #define _LINUX_IPC_H
>
> #include <linux/types.h>
> +#include <linux/kref.h>
>
> #define IPC_PRIVATE ((__kernel_key_t) 0)
>

You need to move the #include down the file by about 50 lines so it
lands inside the existing #ifdef __KERNEL__.

All those signed-off-bys and _none_ of you managed to notice that
<linux/kref.h> doesn't exist in the headers we export to userspace,
despite the fact that just running 'make headers_check' would have
shouted at you about it?

Bad hacker. No biscuit.

--
dwmw2


2006-10-03 10:06:48

by Cédric Le Goater

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

David Woodhouse wrote:
> On Mon, 2006-10-02 at 16:01 +0000, Linux Kernel Mailing List wrote:
>> commit 25b21cb2f6d69b0475b134e0a3e8e269137270fa
>> tree cd9c3966408c0ca5903249437c35ff35961de544
>> parent c0b2fc316599d6cd875b6b8cafa67f03b9512b4d
>> author Kirill Korotaev <[email protected]> 1159780699 -0700
>> committer Linus Torvalds <[email protected]> 1159801042 -0700
>>
>> [PATCH] IPC namespace core
>>
>> This patch set allows to unshare IPCs and have a private set of IPC objects
>> (sem, shm, msg) inside namespace. Basically, it is another building block of
>> containers functionality.
>>
>> This patch implements core IPC namespace changes:
>> - ipc_namespace structure
>> - new config option CONFIG_IPC_NS
>> - adds CLONE_NEWIPC flag
>> - unshare support
>>
>> [[email protected]: small fix for unshare of ipc namespace]
>> [[email protected]: build fix]
>> Signed-off-by: Pavel Emelianov <[email protected]>
>> Signed-off-by: Kirill Korotaev <[email protected]>
>> Signed-off-by: Cedric Le Goater <[email protected]>
>> Cc: "Eric W. Biederman" <[email protected]>
>> Signed-off-by: Andrew Morton <[email protected]>
>> Signed-off-by: Linus Torvalds <[email protected]>
>
>> --- a/include/linux/ipc.h
>> +++ b/include/linux/ipc.h
>> @@ -2,6 +2,7 @@ #ifndef _LINUX_IPC_H
>> #define _LINUX_IPC_H
>>
>> #include <linux/types.h>
>> +#include <linux/kref.h>
>>
>> #define IPC_PRIVATE ((__kernel_key_t) 0)
>>
>
> You need to move the #include down the file by about 50 lines so it
> lands inside the existing #ifdef __KERNEL__.
>
> All those signed-off-bys and _none_ of you managed to notice that
> <linux/kref.h> doesn't exist in the headers we export to userspace,
> despite the fact that just running 'make headers_check' would have
> shouted at you about it?
>
> Bad hacker. No biscuit.

No biscuit ! That can not be ! patch bellow.

thanks for spotting this.

C.

This patches fixes #ifdef __KERNEL__ .

Signed-off-by: Cedric Le Goater <[email protected]>
---
include/linux/Kbuild | 2 +-
include/linux/ipc.h | 3 ++-
include/linux/utsname.h | 17 +++++++++++------
3 files changed, 14 insertions(+), 8 deletions(-)

Index: 2.6.18-mm3/include/linux/ipc.h
===================================================================
--- 2.6.18-mm3.orig/include/linux/ipc.h
+++ 2.6.18-mm3/include/linux/ipc.h
@@ -2,7 +2,6 @@
#define _LINUX_IPC_H

#include <linux/types.h>
-#include <linux/kref.h>

#define IPC_PRIVATE ((__kernel_key_t) 0)

@@ -52,6 +51,8 @@ struct ipc_perm

#ifdef __KERNEL__

+#include <linux/kref.h>
+
#define IPCMNI 32768 /* <= MAX_INT limit for ipc arrays (including sysctl changes) */

/* used by in-kernel data structures */
Index: 2.6.18-mm3/include/linux/utsname.h
===================================================================
--- 2.6.18-mm3.orig/include/linux/utsname.h
+++ 2.6.18-mm3/include/linux/utsname.h
@@ -1,11 +1,6 @@
#ifndef _LINUX_UTSNAME_H
#define _LINUX_UTSNAME_H

-#include <linux/sched.h>
-#include <linux/kref.h>
-#include <linux/nsproxy.h>
-#include <asm/atomic.h>
-
#define __OLD_UTS_LEN 8

struct oldold_utsname {
@@ -35,6 +30,13 @@ struct new_utsname {
char domainname[65];
};

+#ifdef __KERNEL__
+
+#include <linux/sched.h>
+#include <linux/kref.h>
+#include <linux/nsproxy.h>
+#include <asm/atomic.h>
+
struct uts_namespace {
struct kref kref;
struct new_utsname name;
@@ -86,4 +88,7 @@ static inline struct new_utsname *init_u
}

extern struct rw_semaphore uts_sem;
-#endif
+
+#endif /* __KERNEL__ */
+
+#endif /* _LINUX_UTSNAME_H */
Index: 2.6.18-mm3/include/linux/Kbuild
===================================================================
--- 2.6.18-mm3.orig/include/linux/Kbuild
+++ 2.6.18-mm3/include/linux/Kbuild
@@ -158,7 +158,6 @@ header-y += toshiba.h
header-y += ultrasound.h
header-y += un.h
header-y += utime.h
-header-y += utsname.h
header-y += video_decoder.h
header-y += video_encoder.h
header-y += videotext.h
@@ -336,6 +335,7 @@ unifdef-y += unistd.h
unifdef-y += usb_ch9.h
unifdef-y += usbdevice_fs.h
unifdef-y += user.h
+unifdef-y += utsname.h
unifdef-y += videodev2.h
unifdef-y += videodev.h
unifdef-y += wait.h

2006-10-03 13:40:20

by Eric W. Biederman

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

Cedric Le Goater <[email protected]> writes:
> No biscuit ! That can not be ! patch bellow.

Oh my ears...

Eric

2006-10-03 16:35:20

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

On Tue, 03 Oct 2006 10:02:54 +0100
David Woodhouse <[email protected]> wrote:

> You need to move the #include down the file by about 50 lines so it
> lands inside the existing #ifdef __KERNEL__.
>
> All those signed-off-bys and _none_ of you managed to notice that
> <linux/kref.h> doesn't exist in the headers we export to userspace,
> despite the fact that just running 'make headers_check' would have
> shouted at you about it?
>
> Bad hacker. No biscuit.

We'll get there ;) I'm waiting for a suitable time to merge
add-config_headers_check-option-to-automatically-run-make-headers_check.patch,
which will cause all `make allmodconfig' testers to automatically run `make
headers_check'.

But I don't think the time is right yet - a little later, when things have
settled down and when it all works nicely on multiple architectures.

2006-10-03 22:01:39

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

On Tue, 2006-10-03 at 09:35 -0700, Andrew Morton wrote:
> We'll get there ;) I'm waiting for a suitable time to merge
> add-config_headers_check-option-to-automatically-run-make-headers_check.patch,
> which will cause all `make allmodconfig' testers to automatically run `make
> headers_check'.
>
> But I don't think the time is right yet - a little later, when things have
> settled down and when it all works nicely on multiple architectures.

Other than the glitches I just whinged about, it _does_ work nicely on
almost all architectures. I sent Linus those fixes as soon as 2.6.18
came out, and you were talking about putting them in -stable too
(although you went quiet on that front when you saw how many there
were¹).

In fact, I held off on merging some of Arnd's extra checks because I
didn't want to add extra failures -- specifically because I thought we
were turning that config-headers-check thingy on.

--
dwmw2

¹ http://git.infradead.org/?p=users/dwmw2/khdrs-2.6.git;a=shortlog;h=stable

2006-10-03 22:50:05

by Andrew Morton

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

On Tue, 03 Oct 2006 23:01:31 +0100
David Woodhouse <[email protected]> wrote:

> On Tue, 2006-10-03 at 09:35 -0700, Andrew Morton wrote:
> > We'll get there ;) I'm waiting for a suitable time to merge
> > add-config_headers_check-option-to-automatically-run-make-headers_check.patch,
> > which will cause all `make allmodconfig' testers to automatically run `make
> > headers_check'.
> >
> > But I don't think the time is right yet - a little later, when things have
> > settled down and when it all works nicely on multiple architectures.
>
> Other than the glitches I just whinged about, it _does_ work nicely on
> almost all architectures. I sent Linus those fixes as soon as 2.6.18
> came out, and you were talking about putting them in -stable too
> (although you went quiet on that front when you saw how many there
> were__).
>
> In fact, I held off on merging some of Arnd's extra checks because I
> didn't want to add extra failures -- specifically because I thought we
> were turning that config-headers-check thingy on.
>

Yes - I'll send it along soon. I just want to have a few hours to convince
myself that it won't break the whole world if I do...

2006-10-03 22:51:30

by David Woodhouse

[permalink] [raw]
Subject: Re: [PATCH] IPC namespace core

On Tue, 2006-10-03 at 15:49 -0700, Andrew Morton wrote:
> Yes - I'll send it along soon. I just want to have a few hours to convince
> myself that it won't break the whole world if I do...

Seems fair :)

--
dwmw2