diff options
Diffstat (limited to 'drivers/hid/hid-input.c')
| -rw-r--r-- | drivers/hid/hid-input.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c index 3511bbaba505..53aeaf6252c7 100644 --- a/drivers/hid/hid-input.c +++ b/drivers/hid/hid-input.c @@ -462,12 +462,15 @@ out:  static void hidinput_cleanup_battery(struct hid_device *dev)  { +	const struct power_supply_desc *psy_desc; +  	if (!dev->battery)  		return; +	psy_desc = dev->battery->desc;  	power_supply_unregister(dev->battery); -	kfree(dev->battery->desc->name); -	kfree(dev->battery->desc); +	kfree(psy_desc->name); +	kfree(psy_desc);  	dev->battery = NULL;  }  #else  /* !CONFIG_HID_BATTERY_STRENGTH */ @@ -1163,8 +1166,11 @@ void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct  	input_event(input, usage->type, usage->code, value); -	if ((field->flags & HID_MAIN_ITEM_RELATIVE) && (usage->type == EV_KEY)) +	if ((field->flags & HID_MAIN_ITEM_RELATIVE) && +	    usage->type == EV_KEY && value) { +		input_sync(input);  		input_event(input, usage->type, usage->code, 0); +	}  }  void hidinput_report_event(struct hid_device *hid, struct hid_report *report)  |