Return EOPNOTSUPP for unsupported ioctls
authorkn <kn@openbsd.org>
Fri, 26 Mar 2021 23:34:50 +0000 (23:34 +0000)
committerkn <kn@openbsd.org>
Fri, 26 Mar 2021 23:34:50 +0000 (23:34 +0000)
Match what apm(4/macppc) says and make apmd(8) log an approiate warning when
unsupported power actions are requested.

Merge identical cases while here.

This syncs with the apm ioctl handlers on loongson and arm64.

sys/arch/macppc/dev/apm.c

index 071f029..d8259e4 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: apm.c,v 1.23 2020/12/25 12:59:51 visa Exp $   */
+/*     $OpenBSD: apm.c,v 1.24 2021/03/26 23:34:50 kn Exp $     */
 
 /*-
  * Copyright (c) 2001 Alexander Guy.  All rights reserved.
@@ -213,12 +213,14 @@ apmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
        switch (cmd) {
                /* some ioctl names from linux */
        case APM_IOC_STANDBY:
-               if ((flag & FWRITE) == 0)
-                       error = EBADF;
-               break;
+       case APM_IOC_STANDBY_REQ:
        case APM_IOC_SUSPEND:
+       case APM_IOC_SUSPEND_REQ:
+       case APM_IOC_DEV_CTL:
                if ((flag & FWRITE) == 0)
                        error = EBADF;
+               else
+                       error = EOPNOTSUPP;
                break;
        case APM_IOC_PRN_CTL:
                if ((flag & FWRITE) == 0)
@@ -244,10 +246,6 @@ apmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                        }
                }
                break;
-       case APM_IOC_DEV_CTL:
-               if ((flag & FWRITE) == 0)
-                       error = EBADF;
-               break;
        case APM_IOC_GETPOWER:
                power = (struct apm_power_info *)data;
 
@@ -285,14 +283,6 @@ apmioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
                                power->battery_state = APM_BATT_CRITICAL;
                }
                break;
-       case APM_IOC_STANDBY_REQ:
-               if ((flag & FWRITE) == 0)
-                       error = EBADF;
-               break;
-       case APM_IOC_SUSPEND_REQ:
-               if ((flag & FWRITE) == 0)
-                       error = EBADF;
-               break;
        default:
                error = ENOTTY;
        }