Re: wrapper device driver

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

 



struct real_dev->f_op would not be made available to the userspace.
It's for target/real device bookkeeping.

On Mon, Feb 2, 2015 at 4:02 PM,  <Valdis.Kletnieks@xxxxxx> wrote:
> On Mon, 02 Feb 2015 15:24:37 -0600, riya khanna said:
>> Hi,
>>
>> I'm writing a device driver to to provide a wrapper device around a
>> real device. Is it acceptable to do the following:
>>
>> wrapper_dev_open(flags) {
>>    // do additional bookkeeping
>>    real_dev_filp = filp_open(real_device_node_path, flags);
>> }
>>
>> wrapper_dev_mmap(mmap_parameters) {
>>    // do additional checks
>>    return real_dev_filp->f_op->mmap(mmap_parameters);
>> }
>>
>> wrapper_dev_ioctl(ioctl_parameters) {
>>    // do additional checks
>>    return real_dev_filp->f_op->ioctl(ioctl_parameters);
>> }
>>
>> Is it safe to do something like this?
>
> Probably not.  If you return a struct real_dev->f_op then any further
> calls will vector through that structure, totally unseen to your wrapper,
> which means you won't be able to provide whatever added-value extras the
> wrapper is trying to do (in other words, your wrapper ends up not doing
> anything).
>
> The real fun starts when something calls real->f_op->close() out from
> under you... :)

_______________________________________________
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