--- 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; }