Input: atmel_mxt_ts: Fix random configuration load failure
Subsystems (3)
PATCH 1/1 Input: atmel_mxt_ts: Fix random configuration load failure
Sometimes configuration fails to load with:
Bad format: failed to parse object
This can occur because the firmware loader does not ensure that the configuration data is null terminated.
The scanf() therefore reads arbitrary garbage at the end of file. If one item of garbage happens to be parsable the error occurs.
By skipping control characters (line endings) before scanning each line rather than relying on the white space skipping of sscanf we correctly detect end of file.
Signed-off-by Martin Fuzzey <[email protected]>
--- drivers/input/touchscreen/atmel_mxt_ts.c | 7 +++++++ 1 file changed, 7 insertions(+)
drivers/input/touchscreen/atmel_mxt_ts.c +7 -0
@@ -1086,6 +1086,13 @@ static int mxt_prepare_cfg_mem(struct mxt_data *data,u8 val;while (data_pos < cfg->size) { +if (cfg->data[data_pos] <0x20 ) { +/* firmware loading does not ensure null termination +* which is required by scanf */ + data_pos++; +continue ; + } +/* Read type, instance, length */ ret =sscanf (cfg->data + data_pos,"%x %x %x%n" , &type, &instance, &size, &offset);