Proper way to get device file minor number from struct file

Bjørn Mork bjorn at
Sun Jul 10 12:02:23 EDT 2016

"Matwey V. Kornilov" <matwey.kornilov at> 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


More information about the Kernelnewbies mailing list