summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpirofti <pirofti@openbsd.org>2013-06-05 00:44:24 +0000
committerpirofti <pirofti@openbsd.org>2013-06-05 00:44:24 +0000
commit8f0abd29dc0c6d6b9a6a6c2f02bd43450b67ba2b (patch)
tree2d2c40ee0b008f29ab18c130716da6ef8134246a
parentblow up sooner rather than later for double pool_put (diff)
downloadwireguard-openbsd-8f0abd29dc0c6d6b9a6a6c2f02bd43450b67ba2b.tar.xz
wireguard-openbsd-8f0abd29dc0c6d6b9a6a6c2f02bd43450b67ba2b.zip
Keep things sane in the apm ioctl handler.
STANDBY and SUSPEND result in the machine being suspended. HIBERNATE results in the machine being hibernated. Also make sure all the hibernate bits are isolated by ifdefs.
-rw-r--r--sys/arch/loongson/dev/apm.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/sys/arch/loongson/dev/apm.c b/sys/arch/loongson/dev/apm.c
index 5ea0275d230..da106eb3187 100644
--- a/sys/arch/loongson/dev/apm.c
+++ b/sys/arch/loongson/dev/apm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: apm.c,v 1.15 2013/06/04 22:39:27 pirofti Exp $ */
+/* $OpenBSD: apm.c,v 1.16 2013/06/05 00:44:24 pirofti Exp $ */
/*-
* Copyright (c) 2001 Alexander Guy. All rights reserved.
@@ -214,16 +214,17 @@ apmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
/* some ioctl names from linux */
case APM_IOC_STANDBY:
case APM_IOC_STANDBY_REQ:
+ case APM_IOC_SUSPEND:
+ case APM_IOC_SUSPEND_REQ:
if ((flag & FWRITE) == 0)
error = EBADF;
else if (sys_platform->suspend == NULL ||
sys_platform->resume == NULL)
error = EOPNOTSUPP;
else
- error = apm_suspend(APM_STANDBY_REQ);
+ error = apm_suspend(APM_IOC_SUSPEND);
break;
- case APM_IOC_SUSPEND:
- case APM_IOC_SUSPEND_REQ:
+#ifdef HIBERNATE
case APM_IOC_HIBERNATE:
if ((flag & FWRITE) == 0)
error = EBADF;
@@ -231,8 +232,9 @@ apmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
sys_platform->resume == NULL)
error = EOPNOTSUPP;
else
- error = apm_suspend(APM_SUSPEND_REQ);
+ error = apm_suspend(APM_IOC_HIBERNATE);
break;
+#endif
case APM_IOC_PRN_CTL:
if ((flag & FWRITE) == 0)
error = EBADF;
@@ -377,7 +379,7 @@ apm_suspend(int state)
rv = config_suspend(TAILQ_FIRST(&alldevs), DVACT_SUSPEND);
#ifdef HIBERNATE
- if (state == APM_SUSPEND_REQ) {
+ if (state == APM_IOC_HIBERNATE) {
uvm_pmr_zero_everything();
if (hibernate_suspend()) {
printf("apm: hibernate_suspend failed");