From 1b5388fae35b565a53c8ef933db678a94aebcbea Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Sun, 24 Jul 2016 11:50:08 +0100 Subject: [PATCH] Revert "ioctl: move the write check into the drivers" This reverts commit c2c9fa5c6bb4ae5a7cbb5fb51b42ca5ce4d4d832. Can't do it this way because we need to care about file handle permissions at driver level and we deliberately don't pass all the handles down --- Kernel/dev/blkdev.c | 5 ----- Kernel/syscall_fs.c | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/Kernel/dev/blkdev.c b/Kernel/dev/blkdev.c index c50fb73c..8791ecf0 100644 --- a/Kernel/dev/blkdev.c +++ b/Kernel/dev/blkdev.c @@ -157,11 +157,6 @@ int blkdev_ioctl(uint8_t minor, uint16_t request, char *data) if (request != BLKFLSBUF) return -1; - if (!(getperm(ino) & OTH_WR)) { - udata.u_error = EPERM; - return -1; - } - /* we trust that blkdev_open() has already verified that this minor number is valid */ blk_op.blkdev = &blkdev_table[minor >> 4]; diff --git a/Kernel/syscall_fs.c b/Kernel/syscall_fs.c index 1b29c081..43d13348 100644 --- a/Kernel/syscall_fs.c +++ b/Kernel/syscall_fs.c @@ -263,6 +263,10 @@ arg_t _ioctl(void) if ((request & IOCTL_SUPER) && esuper()) return -1; + if (!(getperm(ino) & OTH_WR)) { + udata.u_error = EPERM; + return -1; + } dev = ino->c_node.i_addr[0]; -- 2.34.1