Should I pass user-space buffer pointer to read() of struct file implemented by `filp_open()`?
htmldeveloper at gmail.com
Thu Dec 5 03:37:03 EST 2013
On Wed, Nov 27, 2013 at 9:57 PM, 乃宏周 <naive231 at gmail.com> wrote:
> In module code:
> *unsigned char buf;*
> *struct file *device;*
> *device = filp_open(...);*
> 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
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
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Kernelnewbies