summaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
authorKostik Belousov <kostikbel@gmail.com>2005-09-28 17:21:28 +0200
committerChris Wright <chrisw@osdl.org>2005-09-30 00:42:08 +0200
commit411b67b4b6a4dd1e0292a6a58dd753978179d173 (patch)
tree7aa7d712198635b6dac0af3af265808241806bbb /fs
parent[PATCH] fix TASK_STOPPED vs TASK_NONINTERACTIVE interaction (diff)
downloadlinux-411b67b4b6a4dd1e0292a6a58dd753978179d173.tar.xz
linux-411b67b4b6a4dd1e0292a6a58dd753978179d173.zip
[PATCH] readv/writev syscalls are not checked by lsm
it seems that readv(2)/writev(2) syscalls do not call file_permission callback. Looks like this is overlook. I have filled the issue into redhat bugzilla as https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=169433 and got the recommendation to post this on lsm mailing list. The following trivial patch solves the problem. Signed-off-by: Kostik Belousov <kostikbel@gmail.com> Signed-off-by: Chris Wright <chrisw@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r--fs/read_write.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/read_write.c b/fs/read_write.c
index b60324aaa2b6..a091ee4f430d 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -499,6 +499,9 @@ static ssize_t do_readv_writev(int type, struct file *file,
ret = rw_verify_area(type, file, pos, tot_len);
if (ret)
goto out;
+ ret = security_file_permission(file, type == READ ? MAY_READ : MAY_WRITE);
+ if (ret)
+ goto out;
fnv = NULL;
if (type == READ) {