diff options
| author | Ben Hutchings <ben@decadent.org.uk> | 2010-09-26 00:55:13 -0400 |
|---|---|---|
| committer | James Morris <jmorris@namei.org> | 2010-09-26 20:53:18 -0400 |
| commit | c8da96e87d349e9035345293093ecc74792fb96a (patch) | |
| tree | 738b017e4fa8547feb2741969decd749ea6e98e1 | |
| parent | 91e71c12c506e15028c252a5a097723f41c518dd (diff) | |
TOMOYO: Don't abuse sys_getpid(), sys_getppid()
System call entry functions sys_*() are never to be called from
general kernel code. The fact that they aren't declared in header
files should have been a clue. These functions also don't exist on
Alpha since it has sys_getxpid() instead.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: James Morris <jmorris@namei.org>
| -rw-r--r-- | security/tomoyo/common.c | 6 | ||||
| -rw-r--r-- | security/tomoyo/common.h | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c index ef43995119a4..c668b447c725 100644 --- a/security/tomoyo/common.c +++ b/security/tomoyo/common.c | |||
| @@ -1416,15 +1416,19 @@ static char *tomoyo_print_header(struct tomoyo_request_info *r) | |||
| 1416 | const pid_t gpid = task_pid_nr(current); | 1416 | const pid_t gpid = task_pid_nr(current); |
| 1417 | static const int tomoyo_buffer_len = 4096; | 1417 | static const int tomoyo_buffer_len = 4096; |
| 1418 | char *buffer = kmalloc(tomoyo_buffer_len, GFP_NOFS); | 1418 | char *buffer = kmalloc(tomoyo_buffer_len, GFP_NOFS); |
| 1419 | pid_t ppid; | ||
| 1419 | if (!buffer) | 1420 | if (!buffer) |
| 1420 | return NULL; | 1421 | return NULL; |
| 1421 | do_gettimeofday(&tv); | 1422 | do_gettimeofday(&tv); |
| 1423 | rcu_read_lock(); | ||
| 1424 | ppid = task_tgid_vnr(current->real_parent); | ||
| 1425 | rcu_read_unlock(); | ||
| 1422 | snprintf(buffer, tomoyo_buffer_len - 1, | 1426 | snprintf(buffer, tomoyo_buffer_len - 1, |
| 1423 | "#timestamp=%lu profile=%u mode=%s (global-pid=%u)" | 1427 | "#timestamp=%lu profile=%u mode=%s (global-pid=%u)" |
| 1424 | " task={ pid=%u ppid=%u uid=%u gid=%u euid=%u" | 1428 | " task={ pid=%u ppid=%u uid=%u gid=%u euid=%u" |
| 1425 | " egid=%u suid=%u sgid=%u fsuid=%u fsgid=%u }", | 1429 | " egid=%u suid=%u sgid=%u fsuid=%u fsgid=%u }", |
| 1426 | tv.tv_sec, r->profile, tomoyo_mode[r->mode], gpid, | 1430 | tv.tv_sec, r->profile, tomoyo_mode[r->mode], gpid, |
| 1427 | (pid_t) sys_getpid(), (pid_t) sys_getppid(), | 1431 | task_tgid_vnr(current), ppid, |
| 1428 | current_uid(), current_gid(), current_euid(), | 1432 | current_uid(), current_gid(), current_euid(), |
| 1429 | current_egid(), current_suid(), current_sgid(), | 1433 | current_egid(), current_suid(), current_sgid(), |
| 1430 | current_fsuid(), current_fsgid()); | 1434 | current_fsuid(), current_fsgid()); |
diff --git a/security/tomoyo/common.h b/security/tomoyo/common.h index 04454cb7b24a..7c66bd898782 100644 --- a/security/tomoyo/common.h +++ b/security/tomoyo/common.h | |||
| @@ -689,9 +689,6 @@ struct tomoyo_profile { | |||
| 689 | 689 | ||
| 690 | /********** Function prototypes. **********/ | 690 | /********** Function prototypes. **********/ |
| 691 | 691 | ||
| 692 | extern asmlinkage long sys_getpid(void); | ||
| 693 | extern asmlinkage long sys_getppid(void); | ||
| 694 | |||
| 695 | /* Check whether the given string starts with the given keyword. */ | 692 | /* Check whether the given string starts with the given keyword. */ |
| 696 | bool tomoyo_str_starts(char **src, const char *find); | 693 | bool tomoyo_str_starts(char **src, const char *find); |
| 697 | /* Get tomoyo_realpath() of current process. */ | 694 | /* Get tomoyo_realpath() of current process. */ |
