Proper way to get device file minor number from struct file
Hello, I am looking through some legacy out of tree custom linux kernel device driver. It is full of lines like the following: iminor(fp->f_dentry->d_inode) here struct file *fp is an argument of callback of struct file_operations. Documentation/filesystems/porting says: "f_dentry is gone; use f_path.dentry, or, better yet, see if you can avoid it entirely" So, is there a proper compatible way to do the same?
"Matwey V. Kornilov" <matwey.kornilov@gmail.com> writes:
Hello,
I am looking through some legacy out of tree custom linux kernel device driver.
It is full of lines like the following:
iminor(fp->f_dentry->d_inode)
here struct file *fp is an argument of callback of struct file_operations.
Documentation/filesystems/porting says:
"f_dentry is gone; use f_path.dentry, or, better yet, see if you can avoid it entirely"
So, is there a proper compatible way to do the same?
Don't know how proper it is, but a "git grep iminor drivers/" shows that minor = iminor(file_inode(file)); is a very common construct. Or alternatively, do the iminor(inode) lookup once in open() to lookup up your device struct or whatever, and then save that reference in file->private_data, thereby avoiding the need to know the minor anywhere else. Bjørn
participants (2)
-
Bjørn Mork -
Matwey V. Kornilov