Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 332341
b: refs/heads/master
c: 2dd8ad8
h: refs/heads/master
i:
  332339: 2c3c0c5
v: v3
  • Loading branch information
Konstantin Khlebnikov authored and Linus Torvalds committed Oct 9, 2012
1 parent 1d1abfc commit adecb10
Show file tree
Hide file tree
Showing 7 changed files with 20 additions and 58 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 0b173bc4daa8f8ec03a85abf5e47b23502ff80af
refs/heads/master: 2dd8ad81e31d0d36a5d448329c646ab43eb17788
15 changes: 4 additions & 11 deletions trunk/arch/powerpc/oprofile/cell/spu_task_sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ static inline unsigned long fast_get_dcookie(struct path *path)
return cookie;
}

/* Look up the dcookie for the task's first VM_EXECUTABLE mapping,
/* Look up the dcookie for the task's mm->exe_file,
* which corresponds loosely to "application name". Also, determine
* the offset for the SPU ELF object. If computed offset is
* non-zero, it implies an embedded SPU object; otherwise, it's a
Expand All @@ -321,7 +321,6 @@ get_exec_dcookie_and_offset(struct spu *spu, unsigned int *offsetp,
{
unsigned long app_cookie = 0;
unsigned int my_offset = 0;
struct file *app = NULL;
struct vm_area_struct *vma;
struct mm_struct *mm = spu->mm;

Expand All @@ -330,16 +329,10 @@ get_exec_dcookie_and_offset(struct spu *spu, unsigned int *offsetp,

down_read(&mm->mmap_sem);

for (vma = mm->mmap; vma; vma = vma->vm_next) {
if (!vma->vm_file)
continue;
if (!(vma->vm_flags & VM_EXECUTABLE))
continue;
app_cookie = fast_get_dcookie(&vma->vm_file->f_path);
if (mm->exe_file) {
app_cookie = fast_get_dcookie(&mm->exe_file->f_path);
pr_debug("got dcookie for %s\n",
vma->vm_file->f_dentry->d_name.name);
app = vma->vm_file;
break;
mm->exe_file->f_dentry->d_name.name);
}

for (vma = mm->mmap; vma; vma = vma->vm_next) {
Expand Down
19 changes: 7 additions & 12 deletions trunk/arch/tile/mm/elf.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,14 @@ static void sim_notify_exec(const char *binary_name)
} while (c);
}

static int notify_exec(void)
static int notify_exec(struct mm_struct *mm)
{
int retval = 0; /* failure */
struct vm_area_struct *vma = current->mm->mmap;
while (vma) {
if ((vma->vm_flags & VM_EXECUTABLE) && vma->vm_file)
break;
vma = vma->vm_next;
}
if (vma) {

if (mm->exe_file) {
char *buf = (char *) __get_free_page(GFP_KERNEL);
if (buf) {
char *path = d_path(&vma->vm_file->f_path,
char *path = d_path(&mm->exe_file->f_path,
buf, PAGE_SIZE);
if (!IS_ERR(path)) {
sim_notify_exec(path);
Expand Down Expand Up @@ -106,16 +101,16 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
unsigned long vdso_base;
int retval = 0;

down_write(&mm->mmap_sem);

/*
* Notify the simulator that an exec just occurred.
* If we can't find the filename of the mapping, just use
* whatever was passed as the linux_binprm filename.
*/
if (!notify_exec())
if (!notify_exec(mm))
sim_notify_exec(bprm->filename);

down_write(&mm->mmap_sem);

/*
* MAYWRITE to allow gdb to COW and set breakpoints
*/
Expand Down
17 changes: 3 additions & 14 deletions trunk/drivers/oprofile/buffer_sync.c
Original file line number Diff line number Diff line change
Expand Up @@ -216,29 +216,18 @@ static inline unsigned long fast_get_dcookie(struct path *path)
}


/* Look up the dcookie for the task's first VM_EXECUTABLE mapping,
/* Look up the dcookie for the task's mm->exe_file,
* which corresponds loosely to "application name". This is
* not strictly necessary but allows oprofile to associate
* shared-library samples with particular applications
*/
static unsigned long get_exec_dcookie(struct mm_struct *mm)
{
unsigned long cookie = NO_COOKIE;
struct vm_area_struct *vma;

if (!mm)
goto out;

for (vma = mm->mmap; vma; vma = vma->vm_next) {
if (!vma->vm_file)
continue;
if (!(vma->vm_flags & VM_EXECUTABLE))
continue;
cookie = fast_get_dcookie(&vma->vm_file->f_path);
break;
}
if (mm && mm->exe_file)
cookie = fast_get_dcookie(&mm->exe_file->f_path);

out:
return cookie;
}

Expand Down
13 changes: 2 additions & 11 deletions trunk/kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1151,7 +1151,6 @@ void audit_log_task_info(struct audit_buffer *ab, struct task_struct *tsk)
const struct cred *cred;
char name[sizeof(tsk->comm)];
struct mm_struct *mm = tsk->mm;
struct vm_area_struct *vma;
char *tty;

if (!ab)
Expand Down Expand Up @@ -1191,16 +1190,8 @@ void audit_log_task_info(struct audit_buffer *ab, struct task_struct *tsk)

if (mm) {
down_read(&mm->mmap_sem);
vma = mm->mmap;
while (vma) {
if ((vma->vm_flags & VM_EXECUTABLE) &&
vma->vm_file) {
audit_log_d_path(ab, " exe=",
&vma->vm_file->f_path);
break;
}
vma = vma->vm_next;
}
if (mm->exe_file)
audit_log_d_path(ab, " exe=", &mm->exe_file->f_path);
up_read(&mm->mmap_sem);
}
audit_log_task_context(ab);
Expand Down
3 changes: 1 addition & 2 deletions trunk/kernel/fork.c
Original file line number Diff line number Diff line change
Expand Up @@ -656,8 +656,7 @@ struct file *get_mm_exe_file(struct mm_struct *mm)
{
struct file *exe_file;

/* We need mmap_sem to protect against races with removal of
* VM_EXECUTABLE vmas */
/* We need mmap_sem to protect against races with removal of exe_file */
down_read(&mm->mmap_sem);
exe_file = mm->exe_file;
if (exe_file)
Expand Down
9 changes: 2 additions & 7 deletions trunk/security/tomoyo/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -949,18 +949,13 @@ bool tomoyo_path_matches_pattern(const struct tomoyo_path_info *filename,
const char *tomoyo_get_exe(void)
{
struct mm_struct *mm = current->mm;
struct vm_area_struct *vma;
const char *cp = NULL;

if (!mm)
return NULL;
down_read(&mm->mmap_sem);
for (vma = mm->mmap; vma; vma = vma->vm_next) {
if ((vma->vm_flags & VM_EXECUTABLE) && vma->vm_file) {
cp = tomoyo_realpath_from_path(&vma->vm_file->f_path);
break;
}
}
if (mm->exe_file)
cp = tomoyo_realpath_from_path(&mm->exe_file->f_path);
up_read(&mm->mmap_sem);
return cp;
}
Expand Down

0 comments on commit adecb10

Please sign in to comment.