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

Commit 9c03f162 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* ssh://master.kernel.org/home/hpa/tree/sec:
  x86-64, compat: Retruncate rax after ia32 syscall entry tracing
  x86-64, compat: Test %rax for the syscall number, not %eax
  compat: Make compat_alloc_user_space() incorporate the access_ok()
parents a4128b03 eefdca04
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -199,7 +199,7 @@ ptr_to_compat(void __user *uptr)
}
}


static __inline__ void __user *
static __inline__ void __user *
compat_alloc_user_space (long len)
arch_compat_alloc_user_space (long len)
{
{
	struct pt_regs *regs = task_pt_regs(current);
	struct pt_regs *regs = task_pt_regs(current);
	return (void __user *) (((regs->r12 & 0xffffffff) & -16) - len);
	return (void __user *) (((regs->r12 & 0xffffffff) & -16) - len);
+1 −1
Original line number Original line Diff line number Diff line
@@ -145,7 +145,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
	return (u32)(unsigned long)uptr;
	return (u32)(unsigned long)uptr;
}
}


static inline void __user *compat_alloc_user_space(long len)
static inline void __user *arch_compat_alloc_user_space(long len)
{
{
	struct pt_regs *regs = (struct pt_regs *)
	struct pt_regs *regs = (struct pt_regs *)
		((unsigned long) current_thread_info() + THREAD_SIZE - 32) - 1;
		((unsigned long) current_thread_info() + THREAD_SIZE - 32) - 1;
+1 −1
Original line number Original line Diff line number Diff line
@@ -147,7 +147,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
	return (u32)(unsigned long)uptr;
	return (u32)(unsigned long)uptr;
}
}


static __inline__ void __user *compat_alloc_user_space(long len)
static __inline__ void __user *arch_compat_alloc_user_space(long len)
{
{
	struct pt_regs *regs = &current->thread.regs;
	struct pt_regs *regs = &current->thread.regs;
	return (void __user *)regs->gr[30];
	return (void __user *)regs->gr[30];
+1 −1
Original line number Original line Diff line number Diff line
@@ -134,7 +134,7 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
	return (u32)(unsigned long)uptr;
	return (u32)(unsigned long)uptr;
}
}


static inline void __user *compat_alloc_user_space(long len)
static inline void __user *arch_compat_alloc_user_space(long len)
{
{
	struct pt_regs *regs = current->thread.regs;
	struct pt_regs *regs = current->thread.regs;
	unsigned long usp = regs->gpr[1];
	unsigned long usp = regs->gpr[1];
+1 −1
Original line number Original line Diff line number Diff line
@@ -181,7 +181,7 @@ static inline int is_compat_task(void)


#endif
#endif


static inline void __user *compat_alloc_user_space(long len)
static inline void __user *arch_compat_alloc_user_space(long len)
{
{
	unsigned long stack;
	unsigned long stack;


Loading