]> xenbits.xen.org Git - xenclient/kernel.git/commitdiff
Add a new ioctl to /proc/xen/privcmd which allows SCHEDOP_shutdown to privcmd_hvmop
authort_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:06:04 +0000 (12:06 +0000)
committert_jeang <devnull@localhost>
Tue, 6 Jan 2009 12:06:04 +0000 (12:06 +0000)
be applied on restricted fds.

drivers/xen/privcmd/privcmd.c
include/xen/public/privcmd.h

index 637571eddf800c9fbca1643a15deeeac182072a1..8d3b81ee857b32c05f6a1f47168e5e5759d69b7a 100644 (file)
@@ -386,6 +386,18 @@ static long privcmd_ioctl(struct file *file,
         }
         break;
 
+        case IOCTL_PRIVCMD_SHUTDOWN: {
+                sched_remote_shutdown_t srs;
+
+                if (copy_from_user(&srs, udata, sizeof(srs)))
+                        return -EFAULT;
+                if (fdata->restrict_domid != UNRESTRICTED_DOMID &&
+                    fdata->restrict_domid != srs.domain_id)
+                        return -EACCES;
+                ret = HYPERVISOR_sched_op(SCHEDOP_remote_shutdown, &srs);
+        }
+        break;
+
        default:
                ret = -EINVAL;
                break;
index 20d2e27afb3ced6f75e5d1340195977a41d6e229..5b048f7b034fb6b18468c2f45708db7d637692a3 100644 (file)
@@ -103,5 +103,7 @@ typedef struct privcmd_hvmop {
        _IOC(_IOC_NONE, 'P', 5, sizeof(xen_domctl_t))
 #define IOCTL_PRIVCMD_HVMOP                                    \
        _IOC(_IOC_NONE, 'P', 6, sizeof(privcmd_hvmop_t))
+#define IOCTL_PRIVCMD_SHUTDOWN                                 \
+       _IOC(_IOC_NONE, 'P', 7, sizeof(sched_remote_shutdown_t))
 
 #endif /* __LINUX_PUBLIC_PRIVCMD_H__ */