Index: sys/sys/compat_stub.h
===================================================================
RCS file: /cvsroot/src/sys/sys/compat_stub.h,v
retrieving revision 1.3
diff -p -u -r1.3 compat_stub.h
--- sys/sys/compat_stub.h	28 Jan 2019 15:46:49 -0000	1.3
+++ sys/sys/compat_stub.h	29 Jan 2019 01:07:07 -0000
@@ -199,7 +199,7 @@ MODULE_HOOK(if_43_ifioctl_hook, int,
 /*
  * if43_20 compatability
  */
-MODULE_HOOK(if43_20_hook, int, (u_long));
+MODULE_HOOK(if43_20_hook, int, (u_long *, u_long, u_long));
 
 /*
  * tty 43 ioctl compatibility
Index: sys/compat/common/if43_20.c
===================================================================
RCS file: /cvsroot/src/sys/compat/common/if43_20.c,v
retrieving revision 1.2
diff -p -u -r1.2 if43_20.c
--- sys/compat/common/if43_20.c	27 Jan 2019 02:08:39 -0000	1.2
+++ sys/compat/common/if43_20.c	29 Jan 2019 01:07:07 -0000
@@ -67,16 +67,19 @@ __KERNEL_RCSID(0, "$NetBSD: if43_20.c,v 
 #include <compat/common/compat_mod.h>
 
 static int
-if43_cvtcmd_20(u_long ncmd)
+if43_cvtcmd_20(u_long *rcmdp, u_long ocmd, u_long ncmd)
 {
 
 	switch (ncmd) {
 	case OSIOCG80211STATS:
 	case OSIOCG80211ZSTATS:
-		return 0;
+		*rcmdp = ncmd;
+		break;
 	default:
-		return EINVAL;
+		*rcmdp = ocmd;
+		break;
 	}
+	return 0;
 }
 
 void
Index: sys/compat/common/if_43.c
===================================================================
RCS file: /cvsroot/src/sys/compat/common/if_43.c,v
retrieving revision 1.16
diff -p -u -r1.16 if_43.c
--- sys/compat/common/if_43.c	27 Jan 2019 02:08:39 -0000	1.16
+++ sys/compat/common/if_43.c	29 Jan 2019 01:07:07 -0000
@@ -84,15 +84,19 @@ __KERNEL_RCSID(0, "$NetBSD: if_43.c,v 1.
 static int 
 do_compat_cvtcmd(u_long *ncmd, u_long ocmd)
 { 
+	int error;
 
-	*ncmd = compat_cvtcmd(ocmd);
-	return 0;
+	*ncmd = compat_cvtcmd(ocmd, &error);
+	return error;
 }
 
 u_long
-compat_cvtcmd(u_long cmd)
+compat_cvtcmd(u_long cmd, int *errorp)
 {
 	u_long ncmd;
+	int error;
+
+	*errorp = 0;
 
 	if (IOCPARM_LEN(cmd) != sizeof(struct oifreq))
 		return cmd;
@@ -212,7 +216,9 @@ compat_cvtcmd(u_long cmd)
 		case TAPGIFNAME:
 			return ncmd;
 		default:
-			MODULE_CALL_HOOK(if43_20_hook, (ncmd), enosys(), ncmd);
+			MODULE_CALL_HOOK(if43_20_hook, (&ncmd, cmd, ncmd), enosys(), error);
+			if (error)
+				*errorp = error;
 			return ncmd;
 		}
 	}
@@ -243,7 +249,11 @@ compat_ifioctl(struct socket *so, u_long
 	 * not oifreq calls.
 	 */
 	if (cmd == ocmd) {
-		cmd = compat_cvtcmd(ocmd);
+		cmd = compat_cvtcmd(ocmd, &error);
+		if (error) {
+			curlwp_bindx(bound);
+			return error;
+		}
 	}
 	if (cmd != ocmd) {
 		oifr = data;
Index: sys/compat/sys/socket.h
===================================================================
RCS file: /cvsroot/src/sys/compat/sys/socket.h,v
retrieving revision 1.17
diff -p -u -r1.17 socket.h
--- sys/compat/sys/socket.h	27 Jan 2019 02:08:41 -0000	1.17
+++ sys/compat/sys/socket.h	29 Jan 2019 01:07:07 -0000
@@ -100,7 +100,7 @@ struct sockcred70 {
 __BEGIN_DECLS
 struct socket;
 struct proc;
-u_long compat_cvtcmd(u_long cmd);
+u_long compat_cvtcmd(u_long cmd, int *);
 int compat_ifioctl(struct socket *, u_long, u_long, void *, struct lwp *);
 int compat43_set_accrights(struct msghdr *, void *, int);
 
