Skip to content

Commit

Permalink
Revert "parisc: implement full version of access_ok()"
Browse files Browse the repository at this point in the history
This reverts commit 63379c1.

It broke userspace and adding more checking is not needed.
Even checking if a syscall would access memory in page zero doesn't
makes sense since it may lead to some syscalls returning -EFAULT
where we would return other error codes on other platforms.
In summary, just drop this change and return to always return 1.

Signed-off-by: Helge Deller <deller@gmx.de>
  • Loading branch information
hdeller committed Nov 19, 2013
1 parent dec8e46 commit a0ffa8f
Showing 1 changed file with 4 additions and 42 deletions.
46 changes: 4 additions & 42 deletions arch/parisc/include/asm/uaccess.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@
/*
* User space memory access functions
*/
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/cache.h>
#include <asm/errno.h>
#include <asm-generic/uaccess-unaligned.h>

#include <linux/sched.h>

#define VERIFY_READ 0
#define VERIFY_WRITE 1

Expand All @@ -36,43 +33,12 @@ extern int __get_user_bad(void);
extern int __put_kernel_bad(void);
extern int __put_user_bad(void);


/*
* Test whether a block of memory is a valid user space address.
* Returns 0 if the range is valid, nonzero otherwise.
*/
static inline int __range_not_ok(unsigned long addr, unsigned long size,
unsigned long limit)
static inline long access_ok(int type, const void __user * addr,
unsigned long size)
{
unsigned long __newaddr = addr + size;
return (__newaddr < addr || __newaddr > limit || size > limit);
return 1;
}

/**
* access_ok: - Checks if a user space pointer is valid
* @type: Type of access: %VERIFY_READ or %VERIFY_WRITE. Note that
* %VERIFY_WRITE is a superset of %VERIFY_READ - if it is safe
* to write to a block, it is always safe to read from it.
* @addr: User space pointer to start of block to check
* @size: Size of block to check
*
* Context: User context only. This function may sleep.
*
* Checks if a pointer to a block of memory in user space is valid.
*
* Returns true (nonzero) if the memory block may be valid, false (zero)
* if it is definitely invalid.
*
* Note that, depending on architecture, this function probably just
* checks that the pointer is in the user space range - after calling
* this function, memory access functions may still return -EFAULT.
*/
#define access_ok(type, addr, size) \
( __chk_user_ptr(addr), \
!__range_not_ok((unsigned long) (__force void *) (addr), \
size, user_addr_max()) \
)

#define put_user __put_user
#define get_user __get_user

Expand Down Expand Up @@ -253,11 +219,7 @@ extern long lstrnlen_user(const char __user *,long);
/*
* Complex access routines -- macros
*/
#ifdef CONFIG_COMPAT
#define user_addr_max() (TASK_SIZE)
#else
#define user_addr_max() (DEFAULT_TASK_SIZE)
#endif
#define user_addr_max() (~0UL)

#define strnlen_user lstrnlen_user
#define strlen_user(str) lstrnlen_user(str, 0x7fffffffL)
Expand Down

0 comments on commit a0ffa8f

Please sign in to comment.