vfs: pass cred to ioctl

This commit is contained in:
Matheus
2024-08-30 22:53:57 -03:00
parent 0f18341674
commit ca42167fe1
11 changed files with 18 additions and 18 deletions
+2 -2
View File
@@ -202,12 +202,12 @@ int devfs_isatty(vnode_t *node) {
return devnode->devops->isatty ? devnode->devops->isatty(devnode->attr.rdevminor) : ENOTTY;
}
int devfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *ret) {
int devfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *ret, cred_t *cred) {
devnode_t *devnode = (devnode_t *)node;
if (devnode->master)
devnode = devnode->master;
return devnode->devops->ioctl ? devnode->devops->ioctl(devnode->attr.rdevminor, request, arg, ret) : ENOTTY;
return devnode->devops->ioctl ? devnode->devops->ioctl(devnode->attr.rdevminor, request, arg, ret, cred) : ENOTTY;
}
int devfs_maxseek(vnode_t *node, size_t *max) {
+2 -2
View File
@@ -71,7 +71,7 @@ int sockfs_setattr(vnode_t *node, vattr_t *attr, int which, cred_t *cred) {
}
// arg can be in userspace
int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result) {
int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result, cred_t *cred) {
switch (request) {
case SIOCSIFADDR: {
ifreq_t ifreq;
@@ -80,7 +80,7 @@ int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result) {
return e;
netdev_t *netdev = netdev_getdev(ifreq.name);
if(netdev) {
if (netdev) {
sockaddr_t sockaddr;
e = sock_convertaddress(&sockaddr, &ifreq.addr);
if (e)
+2 -2
View File
@@ -258,7 +258,7 @@ int vfs_write(vnode_t *node, void *buffer, size_t size, uintmax_t offset, size_t
// else just get the disk size and limit the read size
blockdesc_t blockdesc;
int r;
err = VOP_IOCTL(node, BLOCK_IOCTL_GETDESC, &blockdesc, &r);
err = VOP_IOCTL(node, BLOCK_IOCTL_GETDESC, &blockdesc, &r, NULL);
__assert(err == 0);
size_t bytesize = blockdesc.blockcapacity * blockdesc.blocksize;
@@ -352,7 +352,7 @@ int vfs_read(vnode_t *node, void *buffer, size_t size, uintmax_t offset, size_t
} else {
blockdesc_t blockdesc;
int r;
err = VOP_IOCTL(node, BLOCK_IOCTL_GETDESC, &blockdesc, &r);
err = VOP_IOCTL(node, BLOCK_IOCTL_GETDESC, &blockdesc, &r, NULL);
__assert(err == 0);
nodesize = blockdesc.blockcapacity * blockdesc.blocksize;