On Wed, Nov 27, 2013 at 9:57 PM, 乃宏周 <[email protected]> wrote:

> In module code:
>
> *unsigned char buf[20];*
>
> *struct file *device;*
>
> *device = filp_open(...);*
>
> *device->f_op->read(device,buf,20,&device->f_pos);*
>
> In signature(interface) of *read()* of *struct file*, *buf* should came
> from user-space. I fed my buffer, and I get correct data from that, Is that
> correct? Shouldn't I provide a user-space buffer to that ?
>

Some convention in kernel programming:

long do_sys_open(int dfd, const char __user *filename, int flags, umode_t
mode)
{

here __user is used for declaration - explicitly saying that the pointer is
pointing to userspace data.

without it, all pointer necessarily need to point to kernel allocated
memory, and u used copy_from_user() to copy data from userspace to kernel
pointer.



> _______________________________________________
> Kernelnewbies mailing list
> [email protected]
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
>
>

-- 
Regards,
Peter Teoh
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to