From: Alan Cox Date: Sun, 24 Jul 2016 10:50:08 +0000 (+0100) Subject: Revert "ioctl: move the write check into the drivers" X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=1b5388fae35b565a53c8ef933db678a94aebcbea;p=FUZIX.git 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 --- 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];