aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKostik Belousov <konstantin.belousov@zoral.com.ua>2005-10-23 15:57:13 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2005-10-23 19:38:38 -0400
commit8766ce41018a0cb80fbe0ce7dbf747f357c752da (patch)
tree68daf47f292ef79987f208db8f4d2dabfec7fb57
parenta991304496bdaec09f497d1eb5d9dcf2f94b7d5d (diff)
[PATCH] aio syscalls are not checked by lsm
Another case of missing call to security_file_permission: aio functions (namely, io_submit) does not check credentials with security modules. Below is the simple patch to the problem. It seems that it is enough to check for rights at the request submission time. Signed-off-by: Kostik Belousov <kostikbel@gmail.com> Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--fs/aio.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/aio.c b/fs/aio.c
index 9fe7216457d8..edfca5b75535 100644
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1397,6 +1397,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
1397 if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf, 1397 if (unlikely(!access_ok(VERIFY_WRITE, kiocb->ki_buf,
1398 kiocb->ki_left))) 1398 kiocb->ki_left)))
1399 break; 1399 break;
1400 ret = security_file_permission(file, MAY_READ);
1401 if (unlikely(ret))
1402 break;
1400 ret = -EINVAL; 1403 ret = -EINVAL;
1401 if (file->f_op->aio_read) 1404 if (file->f_op->aio_read)
1402 kiocb->ki_retry = aio_pread; 1405 kiocb->ki_retry = aio_pread;
@@ -1409,6 +1412,9 @@ static ssize_t aio_setup_iocb(struct kiocb *kiocb)
1409 if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf, 1412 if (unlikely(!access_ok(VERIFY_READ, kiocb->ki_buf,
1410 kiocb->ki_left))) 1413 kiocb->ki_left)))
1411 break; 1414 break;
1415 ret = security_file_permission(file, MAY_WRITE);
1416 if (unlikely(ret))
1417 break;
1412 ret = -EINVAL; 1418 ret = -EINVAL;
1413 if (file->f_op->aio_write) 1419 if (file->f_op->aio_write)
1414 kiocb->ki_retry = aio_pwrite; 1420 kiocb->ki_retry = aio_pwrite;