⬢ DragonFlyBSD Kernel Audit
DF-5099 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/misc/joy/joy.c
+++ b/sys/dev/misc/joy/joy.c
@@ -156,10 +156,9 @@
     int i = joypart (dev);
     struct joy_softc *joy = JOY_SOFTC(UNIT(dev));
 
-    if (joy->timeout[i])
-	return EBUSY;
     joy->x_off[i] = joy->y_off[i] = 0;
-    joy->timeout[i] = JOY_TIMEOUT;
+    if (!atomic_cmpset_int(&joy->timeout[i], 0, JOY_TIMEOUT))
+	return EBUSY;
     return 0;
 }