]> xenbits.xensource.com Git - people/ssmith/nc2-2.6.27.bak/.git/commitdiff
Add a new ioctl to /proc/xen/privcmd which allows SCHEDOP_shutdown to
authorSteven Smith <ssmith@weybridge.uk.xensource.com>
Thu, 28 May 2009 10:54:20 +0000 (11:54 +0100)
committerSteven Smith <ssmith@weybridge.uk.xensource.com>
Thu, 28 May 2009 10:54:20 +0000 (11:54 +0100)
be applied on restricted fds.

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

index e78beacb5d3a7065734b2eae173b77534bbb601b..2efc10026ea585967b5dc3a4280af1a745d62bf9 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__ */