提交 e49332bd 编写于 作者: J Jesper Juhl 提交者: Linus Torvalds

[PATCH] misc verify_area cleanups

There were still a few comments left refering to verify_area, and two
functions, verify_area_skas & verify_area_tt that just wrap corresponding
access_ok_skas & access_ok_tt functions, just like verify_area does for
access_ok - deprecate those.

There was also a few places that still used verify_area in commented-out
code, fix those up to use access_ok.

After applying this one there should not be anything left but finally
removing verify_area completely, which will happen after a kernel release
or two.
Signed-off-by: NJesper Juhl <juhl-lkml@dif.dk>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 a71c1ab5
...@@ -222,7 +222,7 @@ asmlinkage int sys_vm86(struct pt_regs regs) ...@@ -222,7 +222,7 @@ asmlinkage int sys_vm86(struct pt_regs regs)
goto out; goto out;
case VM86_PLUS_INSTALL_CHECK: case VM86_PLUS_INSTALL_CHECK:
/* NOTE: on old vm86 stuff this will return the error /* NOTE: on old vm86 stuff this will return the error
from verify_area(), because the subfunction is from access_ok(), because the subfunction is
interpreted as (invalid) address to vm86_struct. interpreted as (invalid) address to vm86_struct.
So the installation check works. So the installation check works.
*/ */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \ ((unsigned long) (addr) + (size) <= FIXADDR_USER_END) && \
((unsigned long) (addr) + (size) >= (unsigned long)(addr)))) ((unsigned long) (addr) + (size) >= (unsigned long)(addr))))
static inline int verify_area_skas(int type, const void * addr, static inline int __deprecated verify_area_skas(int type, const void * addr,
unsigned long size) unsigned long size)
{ {
return(access_ok_skas(type, addr, size) ? 0 : -EFAULT); return(access_ok_skas(type, addr, size) ? 0 : -EFAULT);
......
...@@ -33,7 +33,7 @@ extern unsigned long uml_physmem; ...@@ -33,7 +33,7 @@ extern unsigned long uml_physmem;
(((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \ (((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) && \
(under_task_size(addr, size) || is_stack(addr, size)))) (under_task_size(addr, size) || is_stack(addr, size))))
static inline int verify_area_tt(int type, const void * addr, static inline int __deprecated verify_area_tt(int type, const void * addr,
unsigned long size) unsigned long size)
{ {
return(access_ok_tt(type, addr, size) ? 0 : -EFAULT); return(access_ok_tt(type, addr, size) ? 0 : -EFAULT);
......
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
#define KERNEL #define KERNEL
#include <linux/types.h> #include <linux/types.h>
#include <linux/fs.h> #include <linux/fs.h>
#include <linux/mm.h> /* for verify_area */ #include <linux/mm.h>
#include <linux/errno.h> /* for -EBUSY */ #include <linux/errno.h> /* for -EBUSY */
#include <linux/ioport.h> /* for request_region */ #include <linux/ioport.h> /* for request_region */
#include <linux/delay.h> /* for loops_per_jiffy */ #include <linux/delay.h> /* for loops_per_jiffy */
......
...@@ -1987,10 +1987,9 @@ static inline int sx_set_serial_info(struct specialix_port * port, ...@@ -1987,10 +1987,9 @@ static inline int sx_set_serial_info(struct specialix_port * port,
func_enter(); func_enter();
/* /*
error = verify_area(VERIFY_READ, (void *) newinfo, sizeof(tmp)); if (!access_ok(VERIFY_READ, (void *) newinfo, sizeof(tmp))) {
if (error) {
func_exit(); func_exit();
return error; return -EFAULT;
} }
*/ */
if (copy_from_user(&tmp, newinfo, sizeof(tmp))) { if (copy_from_user(&tmp, newinfo, sizeof(tmp))) {
...@@ -2046,14 +2045,12 @@ static inline int sx_get_serial_info(struct specialix_port * port, ...@@ -2046,14 +2045,12 @@ static inline int sx_get_serial_info(struct specialix_port * port,
{ {
struct serial_struct tmp; struct serial_struct tmp;
struct specialix_board *bp = port_Board(port); struct specialix_board *bp = port_Board(port);
// int error;
func_enter(); func_enter();
/* /*
error = verify_area(VERIFY_WRITE, (void *) retinfo, sizeof(tmp)); if (!access_ok(VERIFY_WRITE, (void *) retinfo, sizeof(tmp)))
if (error) return -EFAULT;
return error;
*/ */
memset(&tmp, 0, sizeof(tmp)); memset(&tmp, 0, sizeof(tmp));
......
...@@ -349,9 +349,9 @@ static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address) ...@@ -349,9 +349,9 @@ static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address)
/* /*
* Define this to warn about kernel memory accesses that are * Define this to warn about kernel memory accesses that are
* done without a 'verify_area(VERIFY_WRITE,..)' * done without a 'access_ok(VERIFY_WRITE,..)'
*/ */
#undef TEST_VERIFY_AREA #undef TEST_ACCESS_OK
#define pte_present(x) (pte_val(x) & _PAGE_PRESENT) #define pte_present(x) (pte_val(x) & _PAGE_PRESENT)
#define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0) #define pte_clear(mm,addr,xp) do { set_pte_at(mm, addr, xp, __pte(0)); } while (0)
......
...@@ -33,7 +33,7 @@ asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsi ...@@ -33,7 +33,7 @@ asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsi
* passed in an incorrect kernel address to one of these functions. * passed in an incorrect kernel address to one of these functions.
* *
* If you use these functions directly please don't forget the * If you use these functions directly please don't forget the
* verify_area(). * access_ok().
*/ */
static __inline__ static __inline__
unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst,
......
...@@ -193,9 +193,9 @@ extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC; ...@@ -193,9 +193,9 @@ extern unsigned long long __PAGE_KERNEL, __PAGE_KERNEL_EXEC;
/* /*
* Define this if things work differently on an i386 and an i486: * Define this if things work differently on an i386 and an i486:
* it will (on an i486) warn about kernel memory accesses that are * it will (on an i486) warn about kernel memory accesses that are
* done without a 'verify_area(VERIFY_WRITE,..)' * done without a 'access_ok(VERIFY_WRITE,..)'
*/ */
#undef TEST_VERIFY_AREA #undef TEST_ACCESS_OK
/* The boot page tables (all created as a single array) */ /* The boot page tables (all created as a single array) */
extern unsigned long pg0[]; extern unsigned long pg0[];
......
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
/* /*
* Note that since kernel addresses are in a separate address space on * Note that since kernel addresses are in a separate address space on
* parisc, we don't need to do anything for access_ok() or verify_area(). * parisc, we don't need to do anything for access_ok().
* We just let the page fault handler do the right thing. This also means * We just let the page fault handler do the right thing. This also means
* that put_user is the same as __put_user, etc. * that put_user is the same as __put_user, etc.
*/ */
......
...@@ -42,7 +42,7 @@ asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsi ...@@ -42,7 +42,7 @@ asmlinkage unsigned int csum_partial_copy_generic(const unsigned char *src, unsi
* passed in an incorrect kernel address to one of these functions. * passed in an incorrect kernel address to one of these functions.
* *
* If you use these functions directly please don't forget the * If you use these functions directly please don't forget the
* verify_area(). * access_ok().
*/ */
static __inline__ static __inline__
unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst, unsigned int csum_partial_copy_nocheck (const unsigned char *src, unsigned char *dst,
......
...@@ -34,7 +34,7 @@ asmlinkage unsigned int csum_partial(const unsigned char *buff, int len, ...@@ -34,7 +34,7 @@ asmlinkage unsigned int csum_partial(const unsigned char *buff, int len,
* passed in an incorrect kernel address to one of these functions. * passed in an incorrect kernel address to one of these functions.
* *
* If you use these functions directly please don't forget the * If you use these functions directly please don't forget the
* verify_area(). * access_ok().
*/ */
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#ifndef __ASSEMBLY__ #ifndef __ASSEMBLY__
/* Sparc is not segmented, however we need to be able to fool verify_area() /* Sparc is not segmented, however we need to be able to fool access_ok()
* when doing system calls from kernel mode legitimately. * when doing system calls from kernel mode legitimately.
* *
* "For historical reasons, these macros are grossly misnamed." -Linus * "For historical reasons, these macros are grossly misnamed." -Linus
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include <linux/errno.h> /* return codes */ #include <linux/errno.h> /* return codes */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/slab.h> /* kmalloc(), kfree() */ #include <linux/slab.h> /* kmalloc(), kfree() */
#include <linux/mm.h> /* verify_area(), etc. */ #include <linux/mm.h>
#include <linux/string.h> /* inline mem*, str* functions */ #include <linux/string.h> /* inline mem*, str* functions */
#include <linux/init.h> /* __initfunc et al. */ #include <linux/init.h> /* __initfunc et al. */
#include <asm/byteorder.h> /* htons(), etc. */ #include <asm/byteorder.h> /* htons(), etc. */
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
#include <linux/socket.h> /* SOL_SOCKET */ #include <linux/socket.h> /* SOL_SOCKET */
#include <linux/errno.h> /* error codes */ #include <linux/errno.h> /* error codes */
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/mm.h> /* verify_area */ #include <linux/mm.h>
#include <linux/sched.h> #include <linux/sched.h>
#include <linux/time.h> /* struct timeval */ #include <linux/time.h> /* struct timeval */
#include <linux/skbuff.h> #include <linux/skbuff.h>
...@@ -540,7 +540,7 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m, ...@@ -540,7 +540,7 @@ int vcc_sendmsg(struct kiocb *iocb, struct socket *sock, struct msghdr *m,
error = -EMSGSIZE; error = -EMSGSIZE;
goto out; goto out;
} }
/* verify_area is done by net/socket.c */
eff = (size+3) & ~3; /* align to word boundary */ eff = (size+3) & ~3; /* align to word boundary */
prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE); prepare_to_wait(sk->sk_sleep, &wait, TASK_INTERRUPTIBLE);
error = 0; error = 0;
......
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* Verify iovec. The caller must ensure that the iovec is big enough * Verify iovec. The caller must ensure that the iovec is big enough
* to hold the message iovec. * to hold the message iovec.
* *
* Save time not doing verify_area. copy_*_user will make this work * Save time not doing access_ok. copy_*_user will make this work
* in any case. * in any case.
*/ */
......
...@@ -48,8 +48,8 @@ ...@@ -48,8 +48,8 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> /* support for loadable modules */ #include <linux/module.h> /* support for loadable modules */
#include <linux/slab.h> /* kmalloc(), kfree() */ #include <linux/slab.h> /* kmalloc(), kfree() */
#include <linux/mm.h> /* verify_area(), etc. */ #include <linux/mm.h>
#include <linux/string.h> /* inline mem*, str* functions */ #include <linux/string.h> /* inline mem*, str* functions */
#include <asm/byteorder.h> /* htons(), etc. */ #include <asm/byteorder.h> /* htons(), etc. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册