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... :)
Attachment:
pgpFVp0O67ZrT.pgp
Description: PGP signature
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies