Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b81a618d authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  deal with races in /proc/*/{syscall,stack,personality}
  proc: enable writing to /proc/pid/mem
  proc: make check_mem_permission() return an mm_struct on success
  proc: hold cred_guard_mutex in check_mem_permission()
  proc: disable mem_write after exec
  mm: implement access_remote_vm
  mm: factor out main logic of access_process_vm
  mm: use mm_struct to resolve gate vma's in __get_user_pages
  mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm
  mm: arch: make in_gate_area take an mm_struct instead of a task_struct
  mm: arch: make get_gate_vma take an mm_struct instead of a task_struct
  x86: mark associated mm when running a task in 32 bit compatibility mode
  x86: add context tag to mark mm when running a task in 32-bit compatibility mode
  auxv: require the target to be tracable (or yourself)
  close race in /proc/*/environ
  report errors in /proc/*/*map* sanely
  pagemap: close races with suid execve
  make sessionid permissions in /proc/*/task/* match those in /proc/*
  fix leaks in path_lookupat()

Fix up trivial conflicts in fs/proc/base.c
parents 2f284c84 a9712bc1
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -820,17 +820,17 @@ static int __init vdso_init(void)
}
arch_initcall(vdso_init);

int in_gate_area_no_task(unsigned long addr)
int in_gate_area_no_mm(unsigned long addr)
{
	return 0;
}

int in_gate_area(struct task_struct *task, unsigned long addr)
int in_gate_area(struct mm_struct *mm, unsigned long addr)
{
	return 0;
}

struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
{
	return NULL;
}
+3 −3
Original line number Diff line number Diff line
@@ -337,17 +337,17 @@ static int __init vdso_init(void)
}
arch_initcall(vdso_init);

int in_gate_area_no_task(unsigned long addr)
int in_gate_area_no_mm(unsigned long addr)
{
	return 0;
}

int in_gate_area(struct task_struct *task, unsigned long addr)
int in_gate_area(struct mm_struct *mm, unsigned long addr)
{
	return 0;
}

struct vm_area_struct *get_gate_vma(struct task_struct *tsk)
struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
{
	return NULL;
}
+3 −3
Original line number Diff line number Diff line
@@ -94,17 +94,17 @@ const char *arch_vma_name(struct vm_area_struct *vma)
	return NULL;
}

struct vm_area_struct *get_gate_vma(struct task_struct *task)
struct vm_area_struct *get_gate_vma(struct mm_struct *mm)
{
	return NULL;
}

int in_gate_area(struct task_struct *task, unsigned long address)
int in_gate_area(struct mm_struct *mm, unsigned long address)
{
	return 0;
}

int in_gate_area_no_task(unsigned long address)
int in_gate_area_no_mm(unsigned long address)
{
	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -298,6 +298,7 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
	/* OK, This is the point of no return */
	set_personality(PER_LINUX);
	set_thread_flag(TIF_IA32);
	current->mm->context.ia32_compat = 1;

	setup_new_exec(bprm);

+6 −0
Original line number Diff line number Diff line
@@ -13,6 +13,12 @@ typedef struct {
	int size;
	struct mutex lock;
	void *vdso;

#ifdef CONFIG_X86_64
	/* True if mm supports a task running in 32 bit compatibility mode. */
	unsigned short ia32_compat;
#endif

} mm_context_t;

#ifdef CONFIG_SMP
Loading