On Thursday 06 January 2011, Shaohua Li wrote:
I don't understand. adding a case statement in compat_sys_ioctl, so we will do
compat_ioctl_check_table(). If I add COMPATIBLE_IOCTL(), then the check
will success, we will go to the found_handler code path and execute
do_vfs_ioctl, which is what we want. if not adding COMPATIBLE_IOCTL(),
the check will fail, and in any case, we will go to the out_fput code
path, so our ioctl does nothing.
You are correct, I misremembered the code and did not check properly.
quoted
Two more general comments:
- You probably want to add the ioctls to file_ioctl instead of do_vfs_ioctl,
so you don't add another case statement to the common path.
- I don't know if there are any rules for what should be an ioctl or an
fcntl, we're rather inconsistent about this. If you have found a good
reason for making it an ioctl, just put that into the changelog so we
can refer to it next time.
it can be applied to a directory too. I thought file_ioctl or fcntl is
for file.
Right again, good point!
Arnd