mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-29 13:48:21 +00:00
vfs: pass cred to ioctl
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user