HID: fix bug in zeroing the last field byte in output reports
authorJiri Kosina <jkosina@suse.cz>
Tue, 20 Feb 2007 00:33:39 +0000 (01:33 +0100)
committerJiri Kosina <jkosina@suse.cz>
Thu, 1 Mar 2007 08:52:40 +0000 (09:52 +0100)
d4ae650a904612ffb7edd3f28b69b022988d2466 introduced zeroing of the
last field byte in output reports in order to make sure the unused
bits are set to 0. This is done in a wrong way, resulting in a
wrong bits being zeroed out (not properly shifted by the field offset
in the report). Fix this.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
drivers/hid/hid-core.c

index 7452399501b42a0fe006eb5d438126e4ec966933..aeeb6798e2f1d0509fc9922bdd1d800ad175db5a 100644 (file)
@@ -880,7 +880,7 @@ static void hid_output_field(struct hid_field *field, __u8 *data)
 
        /* make sure the unused bits in the last byte are zeros */
        if (count > 0 && size > 0)
-               data[(count*size-1)/8] = 0;
+               data[(offset+count*size-1)/8] = 0;
 
        for (n = 0; n < count; n++) {
                if (field->logical_minimum < 0) /* signed values */