完整的报错提示如下:
In function ‘check_copy_size’,
inlined from ‘my_read’ at ./include/linux/uaccess.h:154:6:
./include/linux/thread_info.h:138:4: error: call to ‘__bad_copy_from’ declared with attribute error: copy source size is too small
__bad_copy_from();
我找到了报错的相关函数:
ssize_t my_read(struct file *f,char __user *u,size_t l,loff_t *o){
char *buf="hello,user!";
copy_to_user(u,buf,20);
return strlen(u);
}
问题出在了copy_to_user()的第三个参数,之前是为了简单调试,没想到却导致了意料之外的的错误,改后如下:
ssize_t my_read(struct file *f,char __user *u,size_t l,loff_t *o){
char *buf="hello,user!";
copy_to_user(u,buf,strlen(buf));
return strlen(u);
}