diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2006-03-22 03:07:40 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-22 10:53:55 -0500 |
commit | 06f9d4f94a075285d25253edbf57f2cda07d4ff3 (patch) | |
tree | 56a3d3c05606811b15ab7b301c25815e9ac5e1e8 /kernel/fork.c | |
parent | b40607fc02f8248828d52d88f91b7d68df1933b0 (diff) |
[PATCH] unshare: Error if passed unsupported flags
A bare bones trivial patch to ensure we always get -EINVAL on the
unsupported cases for sys_unshare. If this goes in before 2.6.16 it allows
us to forward compatible with future applications using sys_unshare.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: JANAK DESAI <janak@us.ibm.com>
Cc: <stable@kerenl.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index b373322ca497..9bd7b65ee418 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1534,6 +1534,12 @@ asmlinkage long sys_unshare(unsigned long unshare_flags) | |||
1534 | 1534 | ||
1535 | check_unshare_flags(&unshare_flags); | 1535 | check_unshare_flags(&unshare_flags); |
1536 | 1536 | ||
1537 | /* Return -EINVAL for all unsupported flags */ | ||
1538 | err = -EINVAL; | ||
1539 | if (unshare_flags & ~(CLONE_THREAD|CLONE_FS|CLONE_NEWNS|CLONE_SIGHAND| | ||
1540 | CLONE_VM|CLONE_FILES|CLONE_SYSVSEM)) | ||
1541 | goto bad_unshare_out; | ||
1542 | |||
1537 | if ((err = unshare_thread(unshare_flags))) | 1543 | if ((err = unshare_thread(unshare_flags))) |
1538 | goto bad_unshare_out; | 1544 | goto bad_unshare_out; |
1539 | if ((err = unshare_fs(unshare_flags, &new_fs))) | 1545 | if ((err = unshare_fs(unshare_flags, &new_fs))) |