Commit b39ad0cf authored by Mark M. Hoffman's avatar Mark M. Hoffman Committed by Greg Kroah-Hartman

[PATCH] i2c: Handle i2c_add_adapter failure in i2c algorithm drivers

Content-Disposition: inline; filename=i2c-algo-error-handling-fix.patch

It is possible for i2c_add_adapter() to fail.  Several I2C algorithm
drivers ignore that fact.  This (compile-tested only) patch fixes them.
Signed-off-by: default avatarMark M. Hoffman <mhoffman@lightlink.com>
Signed-off-by: default avatarJean Delvare <khali@linux-fr.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 5d925fec
...@@ -544,8 +544,7 @@ int i2c_bit_add_bus(struct i2c_adapter *adap) ...@@ -544,8 +544,7 @@ int i2c_bit_add_bus(struct i2c_adapter *adap)
adap->timeout = 100; /* default values, should */ adap->timeout = 100; /* default values, should */
adap->retries = 3; /* be replaced by defines */ adap->retries = 3; /* be replaced by defines */
i2c_add_adapter(adap); return i2c_add_adapter(adap);
return 0;
} }
......
...@@ -742,10 +742,8 @@ int i2c_iic_add_bus(struct i2c_adapter *adap) ...@@ -742,10 +742,8 @@ int i2c_iic_add_bus(struct i2c_adapter *adap)
adap->retries = 3; /* be replaced by defines */ adap->retries = 3; /* be replaced by defines */
adap->flags = 0; adap->flags = 0;
i2c_add_adapter(adap);
iic_init(iic_adap); iic_init(iic_adap);
return i2c_add_adapter(adap);
return 0;
} }
......
...@@ -374,10 +374,10 @@ int i2c_pca_add_bus(struct i2c_adapter *adap) ...@@ -374,10 +374,10 @@ int i2c_pca_add_bus(struct i2c_adapter *adap)
adap->timeout = 100; /* default values, should */ adap->timeout = 100; /* default values, should */
adap->retries = 3; /* be replaced by defines */ adap->retries = 3; /* be replaced by defines */
rval = pca_init(pca_adap); if ((rval = pca_init(pca_adap)))
return rval;
if (!rval) rval = i2c_add_adapter(adap);
i2c_add_adapter(adap);
return rval; return rval;
} }
......
...@@ -479,9 +479,11 @@ int i2c_pcf_add_bus(struct i2c_adapter *adap) ...@@ -479,9 +479,11 @@ int i2c_pcf_add_bus(struct i2c_adapter *adap)
adap->timeout = 100; /* default values, should */ adap->timeout = 100; /* default values, should */
adap->retries = 3; /* be replaced by defines */ adap->retries = 3; /* be replaced by defines */
rval = pcf_init_8584(pcf_adap); if ((rval = pcf_init_8584(pcf_adap)))
if (!rval) return rval;
i2c_add_adapter(adap);
rval = i2c_add_adapter(adap);
return rval; return rval;
} }
......
...@@ -173,9 +173,7 @@ int i2c_sibyte_add_bus(struct i2c_adapter *i2c_adap, int speed) ...@@ -173,9 +173,7 @@ int i2c_sibyte_add_bus(struct i2c_adapter *i2c_adap, int speed)
printk("\n"); printk("\n");
} }
i2c_add_adapter(i2c_adap); return i2c_add_adapter(i2c_adap);
return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment