diff options
author | Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> | 2010-06-24 23:22:09 -0400 |
---|---|---|
committer | James Morris <jmorris@namei.org> | 2010-08-02 01:34:55 -0400 |
commit | 0849e3ba53c3ef603dffa9758a73e07ed186a937 (patch) | |
tree | 5aaaa02db9be90287bfcc6e00e48d0b50c18d6cd /security | |
parent | e2bf69077acefee5247bb661faac2552d29ba7ba (diff) |
TOMOYO: Add missing poll() hook.
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>
Diffstat (limited to 'security')
-rw-r--r-- | security/tomoyo/common.c | 17 | ||||
-rw-r--r-- | security/tomoyo/common.h | 2 | ||||
-rw-r--r-- | security/tomoyo/securityfs_if.c | 14 |
3 files changed, 33 insertions, 0 deletions
diff --git a/security/tomoyo/common.c b/security/tomoyo/common.c index 65c18af3ffe5..bff63929e53d 100644 --- a/security/tomoyo/common.c +++ b/security/tomoyo/common.c | |||
@@ -1898,6 +1898,23 @@ int tomoyo_open_control(const u8 type, struct file *file) | |||
1898 | } | 1898 | } |
1899 | 1899 | ||
1900 | /** | 1900 | /** |
1901 | * tomoyo_poll_control - poll() for /sys/kernel/security/tomoyo/ interface. | ||
1902 | * | ||
1903 | * @file: Pointer to "struct file". | ||
1904 | * @wait: Pointer to "poll_table". | ||
1905 | * | ||
1906 | * Waits for read readiness. | ||
1907 | * /sys/kernel/security/tomoyo/query is handled by /usr/sbin/tomoyo-queryd . | ||
1908 | */ | ||
1909 | int tomoyo_poll_control(struct file *file, poll_table *wait) | ||
1910 | { | ||
1911 | struct tomoyo_io_buffer *head = file->private_data; | ||
1912 | if (!head->poll) | ||
1913 | return -ENOSYS; | ||
1914 | return head->poll(file, wait); | ||
1915 | } | ||
1916 | |||
1917 | /** | ||
1901 | * tomoyo_read_control - read() for /sys/kernel/security/tomoyo/ interface. | 1918 | * tomoyo_read_control - read() for /sys/kernel/security/tomoyo/ interface. |
1902 | * | 1919 | * |
1903 | * @file: Pointer to "struct file". | 1920 | * @file: Pointer to "struct file". |
diff --git a/security/tomoyo/common.h b/security/tomoyo/common.h index b8b2dac656f1..2ffad6138555 100644 --- a/security/tomoyo/common.h +++ b/security/tomoyo/common.h | |||
@@ -705,6 +705,8 @@ void tomoyo_check_profile(void); | |||
705 | int tomoyo_open_control(const u8 type, struct file *file); | 705 | int tomoyo_open_control(const u8 type, struct file *file); |
706 | /* Close /sys/kernel/security/tomoyo/ interface. */ | 706 | /* Close /sys/kernel/security/tomoyo/ interface. */ |
707 | int tomoyo_close_control(struct file *file); | 707 | int tomoyo_close_control(struct file *file); |
708 | /* Poll operation for /sys/kernel/security/tomoyo/ interface. */ | ||
709 | int tomoyo_poll_control(struct file *file, poll_table *wait); | ||
708 | /* Read operation for /sys/kernel/security/tomoyo/ interface. */ | 710 | /* Read operation for /sys/kernel/security/tomoyo/ interface. */ |
709 | int tomoyo_read_control(struct file *file, char __user *buffer, | 711 | int tomoyo_read_control(struct file *file, char __user *buffer, |
710 | const int buffer_len); | 712 | const int buffer_len); |
diff --git a/security/tomoyo/securityfs_if.c b/security/tomoyo/securityfs_if.c index 5eb53510c4a7..9967c1c5c713 100644 --- a/security/tomoyo/securityfs_if.c +++ b/security/tomoyo/securityfs_if.c | |||
@@ -38,6 +38,19 @@ static int tomoyo_release(struct inode *inode, struct file *file) | |||
38 | } | 38 | } |
39 | 39 | ||
40 | /** | 40 | /** |
41 | * tomoyo_poll - poll() for /proc/ccs/ interface. | ||
42 | * | ||
43 | * @file: Pointer to "struct file". | ||
44 | * @wait: Pointer to "poll_table". | ||
45 | * | ||
46 | * Returns 0 on success, negative value otherwise. | ||
47 | */ | ||
48 | static unsigned int tomoyo_poll(struct file *file, poll_table *wait) | ||
49 | { | ||
50 | return tomoyo_poll_control(file, wait); | ||
51 | } | ||
52 | |||
53 | /** | ||
41 | * tomoyo_read - read() for /sys/kernel/security/tomoyo/ interface. | 54 | * tomoyo_read - read() for /sys/kernel/security/tomoyo/ interface. |
42 | * | 55 | * |
43 | * @file: Pointer to "struct file". | 56 | * @file: Pointer to "struct file". |
@@ -79,6 +92,7 @@ static ssize_t tomoyo_write(struct file *file, const char __user *buf, | |||
79 | static const struct file_operations tomoyo_operations = { | 92 | static const struct file_operations tomoyo_operations = { |
80 | .open = tomoyo_open, | 93 | .open = tomoyo_open, |
81 | .release = tomoyo_release, | 94 | .release = tomoyo_release, |
95 | .poll = tomoyo_poll, | ||
82 | .read = tomoyo_read, | 96 | .read = tomoyo_read, |
83 | .write = tomoyo_write, | 97 | .write = tomoyo_write, |
84 | }; | 98 | }; |