diff --git a/src/add-ons/kernel/drivers/input/usb_hid/KeyboardDevice.cpp b/src/add-ons/kernel/drivers/input/usb_hid/KeyboardDevice.cpp index f9db269a48..58fe1a3333 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/KeyboardDevice.cpp +++ b/src/add-ons/kernel/drivers/input/usb_hid/KeyboardDevice.cpp @@ -133,8 +133,9 @@ KeyboardDevice::_InterpretBuffer() if (IsRemoved()) return B_ERROR; - if (gUSBModule->clear_feature(fInterruptPipe, - USB_FEATURE_ENDPOINT_HALT) != B_OK) + if (fTransferStatus == B_DEV_STALLED + && gUSBModule->clear_feature(fInterruptPipe, + USB_FEATURE_ENDPOINT_HALT) != B_OK) return B_ERROR; return B_OK; diff --git a/src/add-ons/kernel/drivers/input/usb_hid/MouseDevice.cpp b/src/add-ons/kernel/drivers/input/usb_hid/MouseDevice.cpp index 8a4a07025c..412b03ef1f 100644 --- a/src/add-ons/kernel/drivers/input/usb_hid/MouseDevice.cpp +++ b/src/add-ons/kernel/drivers/input/usb_hid/MouseDevice.cpp @@ -82,8 +82,9 @@ MouseDevice::_InterpretBuffer() if (IsRemoved()) return B_ERROR; - if (gUSBModule->clear_feature(fInterruptPipe, - USB_FEATURE_ENDPOINT_HALT) != B_OK) + if (fTransferStatus == B_DEV_STALLED + && gUSBModule->clear_feature(fInterruptPipe, + USB_FEATURE_ENDPOINT_HALT) != B_OK) return B_ERROR; return B_OK;