diff options
| -rw-r--r-- | drivers/hid/hid-core.c | 6 | 
1 files changed, 1 insertions, 5 deletions
| diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c index 9f92f629d448..8617aa97a9c8 100644 --- a/drivers/hid/hid-core.c +++ b/drivers/hid/hid-core.c @@ -940,13 +940,8 @@ static void hid_output_field(struct hid_field *field, __u8 *data)  	unsigned count = field->report_count;  	unsigned offset = field->report_offset;  	unsigned size = field->report_size; -	unsigned bitsused = offset + count * size;  	unsigned n; -	/* make sure the unused bits in the last byte are zeros */ -	if (count > 0 && size > 0 && (bitsused % 8) != 0) -		data[(bitsused-1)/8] &= (1 << (bitsused % 8)) - 1; -  	for (n = 0; n < count; n++) {  		if (field->logical_minimum < 0)	/* signed values */  			implement(data, offset + n * size, size, s32ton(field->value[n], size)); @@ -966,6 +961,7 @@ void hid_output_report(struct hid_report *report, __u8 *data)  	if (report->id > 0)  		*data++ = report->id; +	memset(data, 0, ((report->size - 1) >> 3) + 1);  	for (n = 0; n < report->maxfield; n++)  		hid_output_field(report->field[n], data);  } | 
