Re: Should I pass user-space buffer pointer to read() of struct file implemented by `filp_open()`?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 






On Wed, Nov 27, 2013 at 9:57 PM, 乃宏周 <naive231@xxxxxxxxx> 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
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies




--
Regards,
Peter Teoh
_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux