--- a/drivers/input/misc/cm109.c +++ b/drivers/input/misc/cm109.c @@ -375,13 +375,17 @@ static void cm109_submit_ctl(struct cm109_dev *dev)      dev->ctl_data->byte[HID_OR2] = dev->keybit;      dev->buzzer_pending = 0; -    dev->ctl_urb_pending = 1; -    error = usb_submit_urb(dev->urb_ctl, GFP_ATOMIC); -    if (error) -        dev_err(&dev->intf->dev, -            "%s: usb_submit_urb (urb_ctl) failed %d\n", -            __func__, error); +    if (!dev->ctl_urb_pending) { +        dev->ctl_urb_pending = 1; + + +        error = usb_submit_urb(dev->urb_ctl, GFP_ATOMIC); +        if (error) +            dev_err(&dev->intf->dev, +                "%s: usb_submit_urb (urb_ctl) failed %d\n", +                __func__, error); +    }  }  /*