]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
TOMOYO: Add missing poll() hook.
authorTetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Fri, 25 Jun 2010 03:22:09 +0000 (12:22 +0900)
committerJames Morris <jmorris@namei.org>
Mon, 2 Aug 2010 05:34:55 +0000 (15:34 +1000)
Commit 1dae08c "TOMOYO: Add interactive enforcing mode." forgot to register
poll() hook. As a result, /usr/sbin/tomoyo-queryd was doing busy loop.

Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Signed-off-by: James Morris <jmorris@namei.org>
security/tomoyo/common.c
security/tomoyo/common.h
security/tomoyo/securityfs_if.c

index 65c18af3ffe5eee9db53821fb93526dc815e9965..bff63929e53d7bd56b864fb0abcd4cf632a2cf62 100644 (file)
@@ -1897,6 +1897,23 @@ int tomoyo_open_control(const u8 type, struct file *file)
        return 0;
 }
 
+/**
+ * tomoyo_poll_control - poll() for /sys/kernel/security/tomoyo/ interface.
+ *
+ * @file: Pointer to "struct file".
+ * @wait: Pointer to "poll_table".
+ *
+ * Waits for read readiness.
+ * /sys/kernel/security/tomoyo/query is handled by /usr/sbin/tomoyo-queryd .
+ */
+int tomoyo_poll_control(struct file *file, poll_table *wait)
+{
+       struct tomoyo_io_buffer *head = file->private_data;
+       if (!head->poll)
+               return -ENOSYS;
+       return head->poll(file, wait);
+}
+
 /**
  * tomoyo_read_control - read() for /sys/kernel/security/tomoyo/ interface.
  *
index b8b2dac656f17279d66ab0a0f7be9ab5098933f9..2ffad61385555c58250bde53c51d111d1661c2e2 100644 (file)
@@ -705,6 +705,8 @@ void tomoyo_check_profile(void);
 int tomoyo_open_control(const u8 type, struct file *file);
 /* Close /sys/kernel/security/tomoyo/ interface. */
 int tomoyo_close_control(struct file *file);
+/* Poll operation for /sys/kernel/security/tomoyo/ interface. */
+int tomoyo_poll_control(struct file *file, poll_table *wait);
 /* Read operation for /sys/kernel/security/tomoyo/ interface. */
 int tomoyo_read_control(struct file *file, char __user *buffer,
                        const int buffer_len);
index 5eb53510c4a772a6063c08196773983d7f083a33..9967c1c5c713bac56e25bf90c5f8b16d9f513d43 100644 (file)
@@ -37,6 +37,19 @@ static int tomoyo_release(struct inode *inode, struct file *file)
        return tomoyo_close_control(file);
 }
 
+/**
+ * tomoyo_poll - poll() for /proc/ccs/ interface.
+ *
+ * @file: Pointer to "struct file".
+ * @wait: Pointer to "poll_table".
+ *
+ * Returns 0 on success, negative value otherwise.
+ */
+static unsigned int tomoyo_poll(struct file *file, poll_table *wait)
+{
+       return tomoyo_poll_control(file, wait);
+}
+
 /**
  * tomoyo_read - read() for /sys/kernel/security/tomoyo/ interface.
  *
@@ -79,6 +92,7 @@ static ssize_t tomoyo_write(struct file *file, const char __user *buf,
 static const struct file_operations tomoyo_operations = {
        .open    = tomoyo_open,
        .release = tomoyo_release,
+       .poll    = tomoyo_poll,
        .read    = tomoyo_read,
        .write   = tomoyo_write,
 };