I2C: Fix broken force parameter handling
PATCH 1/1 I2C: Fix broken force parameter handling
Hi Greg,
I just noticed a nasty bug in the way the "force" parameter is handled for non-sensors i2c chip drivers. The "force" parameter supposedy is a list of adapter, address *pairs* where supported chips are unquestionably assumed to be. However, after handling one pair, the i2c core code searches for the next one *three* values later, not two. So with the current code, the second and third pairs wouldn't be properly handled. The fourth one would be, and so on.
As a side note, this questions the need of an array parameter handling up to 24 of such pairs, when obviously nobody ever required more than one for the past 6 years.
Please apply,
thanks.
drivers/i2c/i2c-core.c renamed from drivers/i2c/i2c-core.c.orig +1 -1
@@ -715,7 +715,7 @@at all */ found =0 ; -for (i =0 ; !found && (address_data->force[i] !=I2C_CLIENT_END ); i +=3 ) { +for (i =0 ; !found && (address_data->force[i] !=I2C_CLIENT_END ); i +=2 ) {if (((adap_id = address_data->force[i]) || (address_data->force[i] =ANY_I2C_BUS )) && (addr = address_data->force[i+1 ])) {
Signature · 1 line
Jean Delvare
Greg KH
AppliedPATCH 1/1 I2C: Fix broken force parameter handling
Quoted 10 lines · Jean Delvare
Hi Greg,
I just noticed a nasty bug in the way the "force" parameter is handled for non-sensors i2c chip drivers. The "force" parameter supposedy is a list of adapter, address *pairs* where supported chips are unquestionably assumed to be. However, after handling one pair, the i2c core code searches for the next one *three* values later, not two. So with the current code, the second and third pairs wouldn't be properly handled. The fourth one would be, and so on.
Quoted 5 lines
As a side note, this questions the need of an array parameter handling up to 24 of such pairs, when obviously nobody ever required more than one for the past 6 years.
Please apply,
Applied, thanks.
greg k-h