[Devel] [PATCH rh7] ve: Use ve_name() in devperms ioctl

Kirill Tkhai ktkhai at odin.com
Fri Jun 26 10:02:08 PDT 2015


In PCS7 we use UUID instead of ctid for cgroup directories names,
so we should open it.

Below is small test program to check the patch works:

#include <linux/vzcalluser.h>
#include <stdio.h>
#include <fcntl.h>

main()
{
        struct vzctl_setdevperms s;
        int fd = open("/dev/vzctl", O_RDWR);
        unsigned major = 182;
        unsigned minor = 281233;
        s.veid = 101;
        s.type = S_IFBLK|030;
        s.dev = (minor & 0xff) | (major << 8) | ((minor & ~0xff) << 12);
        s.mask = S_IXUSR;

        if (fd < 0) {
                printf("open err\n");
                return -1;
        }

        if (ioctl(fd, VZCTL_SETDEVPERMS, &s))
                printf("ioctl\n");
}

Signed-off-by: Kirill Tkhai <ktkhai at odin.com>
---
 kernel/ve/vecalls.c |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/kernel/ve/vecalls.c b/kernel/ve/vecalls.c
index e262c5e..be4fb1e 100644
--- a/kernel/ve/vecalls.c
+++ b/kernel/ve/vecalls.c
@@ -160,13 +160,14 @@ static int real_setdevperms(envid_t veid, unsigned type,
 		return -ESRCH;
 
 	down_read(&ve->op_sem);
-	err = -ESRCH;
 
-	cgroup = ve_cgroup_open(devices_root, 0, ve->veid);
-	err = PTR_ERR(cgroup);
-	if (IS_ERR(cgroup))
+	cgroup = cgroup_kernel_open(devices_root, 0, ve_name(ve));
+	if (IS_ERR_OR_NULL(cgroup)) {
+		err = PTR_ERR(cgroup) ? : -ESRCH;
 		goto out;
+	}
 
+	err = -EAGAIN;
 	if (ve->is_running)
 		err = devcgroup_set_perms_ve(cgroup, type, dev, mask);
 




More information about the Devel mailing list