函数原型 :
access_ok (type, addr, size);
变量说明 :
type : 访问类型,其值可为 VERIFY_READ 或者 VERIFY_WRITE 。注意,VERIFY_WRITE 是 VERIFY_READ 的超集 -- 如果可以安全的写内存块,那么自然也总能读到内存块。
addr : 用户空间的指针变量,其指向一个要检查的内存块开始处。
size : 要检查内存块的大小。
返回值 :
此函数检查用户空间中的内存块是否可用。如果可用,则返回真(非0值),否则返回假 (0) 。
代码片段 :
if ( _IOC_DIR( cmd) & _IOC_READ)
err = ! access_ok( VERIFY_WRITE , ( void __user *) arg , _IOC_SIZE( cmd));
else if ( _IOC_DIR( cmd) & _IOC_WRITE)
err = ! access_ok( VERIFY_READ , ( void __user *) arg , _IOC_SIZE( cmd));
if ( err)
return - EFAULT;