- 论坛徽章:
- 0
|
vfs_read 在某些机器上面返回-14 读取文件 EFAULT
代码如下
mm_segment_t oldfs_;
int ret_ = 0;
struct inode *inode_ = NULL;
char *data_ = NULL;
loff_t size_ = 0;
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,0)
inode_ = file_inode(f);
#else
inode_ = f->f_dentry->d_inode;
#endif
*size = inode_->i_size;
size_ = *size;
*data = (char*) kmalloc(size_ + 1, GFP_ATOMIC);
data_ = *data;
oldfs_ = get_fs();
set_fs(get_ds());
f->f_pos=0;//f->f_op->llseek(f,0,0);//调整初始位置
ret_ = vfs_read(f, data_, size_, &f->f_pos);
set_fs(oldfs_);
//pr_info("httplist Cannot read \"%d,%d,%d,%d\"\n", ret_,EBADF,EINVAL,EFAULT);
if (ret_ < 0){
pr_info("Cannot read \"%d\"\n", ret_);
return false;
}
请问各位,这个一般是什么地方出问题了呢? 非常感谢 找了很久没有找到答案 本地机器可以 服务器不可以 然后服务器上面用内核源码编译了一下这个模块 也不行的 不知道什么原因
|
|