2006-09-14 15:37:06

by Cédric Le Goater

[permalink] [raw]
Subject: [patch -mm] utsname namespace : fix unshare when CONFIG_UTS_NS is not set

If the kernel is not configured with the CONFIG_UTS_NS, unshare of
ipc namespace will fail and return -EINVAL.

The patch changes the dummy unshare_utsname() to check the clone flags
before returning.

Signed-off-by: Cedric Le Goater <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Serge E. Hallyn <[email protected]>
Cc: Linux Containers <[email protected]>

---
include/linux/utsname.h | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)

Index: 2.6.18-rc6-mm2/include/linux/utsname.h
===================================================================
--- 2.6.18-rc6-mm2.orig/include/linux/utsname.h
+++ 2.6.18-rc6-mm2/include/linux/utsname.h
@@ -60,8 +60,12 @@ static inline void put_uts_ns(struct uts
static inline int unshare_utsname(unsigned long unshare_flags,
struct uts_namespace **new_uts)
{
- return -EINVAL;
+ if (unshare_flags & CLONE_NEWUTS)
+ return -EINVAL;
+
+ return 0;
}
+
static inline int copy_utsname(int flags, struct task_struct *tsk)
{
return 0;


2006-09-14 15:51:24

by Serge E. Hallyn

[permalink] [raw]
Subject: Re: [patch -mm] utsname namespace : fix unshare when CONFIG_UTS_NS is not set

Quoting Cedric Le Goater ([email protected]):
> If the kernel is not configured with the CONFIG_UTS_NS, unshare of
> ipc namespace will fail and return -EINVAL.
>
> The patch changes the dummy unshare_utsname() to check the clone flags
> before returning.
>
> Signed-off-by: Cedric Le Goater <[email protected]>

Acked-by: Serge E. Hallyn <[email protected]>

thanks,
-serge

> Cc: Andrew Morton <[email protected]>
> Cc: Serge E. Hallyn <[email protected]>
> Cc: Linux Containers <[email protected]>
>
> ---
> include/linux/utsname.h | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
> Index: 2.6.18-rc6-mm2/include/linux/utsname.h
> ===================================================================
> --- 2.6.18-rc6-mm2.orig/include/linux/utsname.h
> +++ 2.6.18-rc6-mm2/include/linux/utsname.h
> @@ -60,8 +60,12 @@ static inline void put_uts_ns(struct uts
> static inline int unshare_utsname(unsigned long unshare_flags,
> struct uts_namespace **new_uts)
> {
> - return -EINVAL;
> + if (unshare_flags & CLONE_NEWUTS)
> + return -EINVAL;
> +
> + return 0;
> }
> +
> static inline int copy_utsname(int flags, struct task_struct *tsk)
> {
> return 0;