From 534775cfaed3a73a6ea4eee957545fcecdfd5f4c Mon Sep 17 00:00:00 2001 From: Andrew Morton Date: Sun, 3 Jun 2007 13:50:41 -0700 Subject: [PATCH] --- yaml --- r: 57318 b: refs/heads/master c: 78ae87c3cd723c8a8dcd67d4e4cbc6d63671c108 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ioctl.c | 14 +++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 129feb2f0e5a..6d12450c4cc5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4c738480d21a190e3d99c7ce985ab9484f373a3c +refs/heads/master: 78ae87c3cd723c8a8dcd67d4e4cbc6d63671c108 diff --git a/trunk/fs/ioctl.c b/trunk/fs/ioctl.c index 479c1038ed4a..8c90cbc903fa 100644 --- a/trunk/fs/ioctl.c +++ b/trunk/fs/ioctl.c @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -20,6 +21,7 @@ static long do_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) { int error = -ENOTTY; + void *f; if (!filp->f_op) goto out; @@ -29,10 +31,16 @@ static long do_ioctl(struct file *filp, unsigned int cmd, if (error == -ENOIOCTLCMD) error = -EINVAL; goto out; - } else if (filp->f_op->ioctl) { + } else if ((f = filp->f_op->ioctl)) { lock_kernel(); - error = filp->f_op->ioctl(filp->f_path.dentry->d_inode, - filp, cmd, arg); + if (!filp->f_op->ioctl) { + printk("%s: ioctl %p disappeared\n", __FUNCTION__, f); + print_symbol("symbol: %s\n", (unsigned long)f); + dump_stack(); + } else { + error = filp->f_op->ioctl(filp->f_path.dentry->d_inode, + filp, cmd, arg); + } unlock_kernel(); }