file->f_inode

Urs Thuermann (thuerman@ibr.cs.tu-bs.de)
Tue, 22 Jul 1997 12:23:21 +0200


In some 2.1.4x kernel the f_inode component of struct file was
removed, which break compilation of the ISDN module.

Reading some include files it looks to me, that f->f_inode should be
replaced by f->f_dentry->d_inode. Is that correct?

If so, the following patch against 2.1.46 will make isdn compile
again. Here at work I have no machine to test if that works. I will
try it this evening.

urs

--- linux/drivers/isdn/isdn_common.c.orig Tue Jul 22 12:09:53 1997
+++ linux/drivers/isdn/isdn_common.c Tue Jul 22 12:16:21 1997
@@ -1012,7 +1012,7 @@
isdn_poll(struct file *file, poll_table * wait)
{
unsigned int mask = 0;
- unsigned int minor = MINOR(file->f_inode->i_rdev);
+ unsigned int minor = MINOR(file->f_dentry->d_inode->i_rdev);
int drvidx = isdn_minor2drv(minor - ISDN_MINOR_CTRL);

if (minor == ISDN_MINOR_STATUS) {
--- linux/drivers/isdn/isdn_ppp.c.orig Tue Jul 22 12:09:53 1997
+++ linux/drivers/isdn/isdn_ppp.c Tue Jul 22 12:17:28 1997
@@ -700,7 +700,7 @@
is = file->private_data;

if (is->debug & 0x2)
- printk(KERN_DEBUG "isdn_ppp_poll: minor: %d\n", MINOR(file->f_inode->i_rdev));
+ printk(KERN_DEBUG "isdn_ppp_poll: minor: %d\n", MINOR(file->f_dentry->d_inode->i_rdev));

poll_wait(&is->wq, wait);