diff options
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 13 |
1 files changed, 9 insertions, 4 deletions
| @@ -46,7 +46,6 @@ | |||
| 46 | #include <linux/proc_fs.h> | 46 | #include <linux/proc_fs.h> |
| 47 | #include <linux/mount.h> | 47 | #include <linux/mount.h> |
| 48 | #include <linux/security.h> | 48 | #include <linux/security.h> |
| 49 | #include <linux/ima.h> | ||
| 50 | #include <linux/syscalls.h> | 49 | #include <linux/syscalls.h> |
| 51 | #include <linux/tsacct_kern.h> | 50 | #include <linux/tsacct_kern.h> |
| 52 | #include <linux/cn_proc.h> | 51 | #include <linux/cn_proc.h> |
| @@ -924,6 +923,15 @@ char *get_task_comm(char *buf, struct task_struct *tsk) | |||
| 924 | void set_task_comm(struct task_struct *tsk, char *buf) | 923 | void set_task_comm(struct task_struct *tsk, char *buf) |
| 925 | { | 924 | { |
| 926 | task_lock(tsk); | 925 | task_lock(tsk); |
| 926 | |||
| 927 | /* | ||
| 928 | * Threads may access current->comm without holding | ||
| 929 | * the task lock, so write the string carefully. | ||
| 930 | * Readers without a lock may see incomplete new | ||
| 931 | * names but are safe from non-terminating string reads. | ||
| 932 | */ | ||
| 933 | memset(tsk->comm, 0, TASK_COMM_LEN); | ||
| 934 | wmb(); | ||
| 927 | strlcpy(tsk->comm, buf, sizeof(tsk->comm)); | 935 | strlcpy(tsk->comm, buf, sizeof(tsk->comm)); |
| 928 | task_unlock(tsk); | 936 | task_unlock(tsk); |
| 929 | perf_event_comm(tsk); | 937 | perf_event_comm(tsk); |
| @@ -1209,9 +1217,6 @@ int search_binary_handler(struct linux_binprm *bprm,struct pt_regs *regs) | |||
| 1209 | retval = security_bprm_check(bprm); | 1217 | retval = security_bprm_check(bprm); |
| 1210 | if (retval) | 1218 | if (retval) |
| 1211 | return retval; | 1219 | return retval; |
| 1212 | retval = ima_bprm_check(bprm); | ||
| 1213 | if (retval) | ||
| 1214 | return retval; | ||
| 1215 | 1220 | ||
| 1216 | /* kernel module loader fixup */ | 1221 | /* kernel module loader fixup */ |
| 1217 | /* so we don't try to load run modprobe in kernel space. */ | 1222 | /* so we don't try to load run modprobe in kernel space. */ |
