implements open/release/llseek ops are needed by new proc_pid_readdir()
llseek()'s offset is specified by 'bytes' but /proc root doesn't handle
file->f_pos as bytes. So I disabled llseek for /proc for now.
Signed-Off-By: KAMEZAWA Hiroyuki <[email protected]>
fs/proc/root.c | 33 +++++++++++++++++++++++++++++++++
1 files changed, 33 insertions(+)
Index: linux-2.6.18-rc4/fs/proc/root.c
===================================================================
--- linux-2.6.18-rc4.orig/fs/proc/root.c
+++ linux-2.6.18-rc4/fs/proc/root.c
@@ -16,6 +16,7 @@
#include <linux/module.h>
#include <linux/bitops.h>
#include <linux/smp_lock.h>
+#include <linux/watch_head.h>
#include "internal.h"
@@ -118,14 +119,46 @@ static int proc_root_readdir(struct file
return ret;
}
+static int proc_root_open(struct inode *inode, struct file *filp)
+{
+ struct watch_head *wh;
+ wh = kzalloc(sizeof(*wh), GFP_KERNEL);
+ if (wh) {
+ filp->private_data = wh;
+ return 0;
+ }
+ return -ENOMEM;
+}
+
+static int proc_root_release(struct inode *inode, struct file *filp)
+{
+ struct watch_head *wh;
+ wh = filp->private_data;
+ rcu_read_lock();
+ wh_get_and_remove_watcher(wh);
+ rcu_read_unlock();
+ kfree(wh);
+ filp->private_data = NULL;
+ return 0;
+}
+
+static loff_t proc_root_llseek(struct file *file, loff_t off, int pos)
+{
+ /* pos is bytes...but we don't use fp->f_pos as bytes... */
+ return -ENOTSUPP;
+}
+
/*
* The root /proc directory is special, as it has the
* <pid> directories. Thus we don't use the generic
* directory handling functions for that..
*/
static struct file_operations proc_root_operations = {
+ .open = proc_root_open,
.read = generic_read_dir,
.readdir = proc_root_readdir,
+ .release = proc_root_release,
+ .llseek = proc_root_llseek,
};
/*
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]