DragonFlyBSD Kernel Audit
DF-1846 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/dev/misc/gpio/gpio.c b/sys/dev/misc/gpio/gpio.c
--- a/sys/dev/misc/gpio/gpio.c
+++ b/sys/dev/misc/gpio/gpio.c
@@ -213,6 +213,9 @@
 			pin = offset + i;
 			if (pin < 0 || pin >= gp->npins ||
 				gp->pins[pin].pin_mapped || gp->pins[pin].pin_opened) {
+				int p2;
+				for (p2 = 0; p2 < npins; p2++)
+					gp->pins[gmp->map[p2]].pin_mapped = 0;
 				if (map == NULL)
 					kfree(gmp->map, M_TEMP);
 				kfree(gmp, M_TEMP);