The EBADF error is always overwritten for the standby, suspend and
hibernate ioctls, only the mode ioctl has it right.
Merge the now identical casese while here.
Tested on a Pinebook Pro.
OK?
Index: apm.c
===================================================================
RCS file: /cvs/src/sys/arch/arm64/dev/apm.c,v
retrieving revision 1.6
diff -u -p -r1.6 apm.c
--- apm.c 25 Dec 2020 12:59:51 -0000 1.6
+++ apm.c 20 Mar 2021 18:54:23 -0000
@@ -213,17 +213,15 @@ apmioctl(dev_t dev, u_long cmd, caddr_t
case APM_IOC_STANDBY_REQ:
case APM_IOC_SUSPEND:
case APM_IOC_SUSPEND_REQ:
- if ((flag & FWRITE) == 0)
- error = EBADF;
- error = EOPNOTSUPP;
- break;
#ifdef HIBERNATE
case APM_IOC_HIBERNATE:
+#endif
+ case APM_IOC_DEV_CTL:
if ((flag & FWRITE) == 0)
error = EBADF;
- error = EOPNOTSUPP;
+ else
+ error = EOPNOTSUPP; /* XXX */
break;
-#endif
case APM_IOC_PRN_CTL:
if ((flag & FWRITE) == 0)
error = EBADF;
@@ -247,12 +245,6 @@ apmioctl(dev_t dev, u_long cmd, caddr_t
break;
}
}
- break;
- case APM_IOC_DEV_CTL:
- if ((flag & FWRITE) == 0)
- error = EBADF;
- else
- error = EOPNOTSUPP; /* XXX */
break;
case APM_IOC_GETPOWER:
power = (struct apm_power_info *)data;