cx18: Fix the handling of i2c bus registration error
PATCH 1/1 cx18: Fix the handling of i2c bus registration error
* Return actual error values as returned by the i2c subsystem, rather than 0 or 1.
* If the registration of the second bus fails, unregister the first one before exiting, otherwise we are leaking resources.
Signed-off-by Jean Delvare <[email protected]>
Cc Hans Verkuil <[email protected]>
Acked-by Andy Walls <[email protected]>
---
Mauro, can you please apply this fix now?
linux/drivers/media/video/cx18/cx18-i2c.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
linux/drivers/media/video/cx18/cx18-i2c.c +13 -3
@@ -214,7 +214,7 @@ static struct i2c_algo_bit_data cx18_i2c/* init + register i2c algo-bit adapter */ int init_cx18_i2c (struct cx18 *cx) { -int i; +int i, err;CX18_DEBUG_I2C ("i2c init\n" );for (i =0 ; i <2 ; i++) {
@@ -273,8 +273,18 @@ int init_cx18_i2c(struct cx18 *cx)cx18_call_hw (cx,CX18_HW_GPIO_RESET_CTRL , core, reset, (u32 )CX18_GPIO_RESET_I2C ); -return i2c_bit_add_bus (&cx->i2c_adap[0 ]) || -i2c_bit_add_bus (&cx->i2c_adap[1 ]); + err =i2c_bit_add_bus (&cx->i2c_adap[0 ]); +if (err) + goto err; + err =i2c_bit_add_bus (&cx->i2c_adap[1 ]); +if (err) + goto err_del_bus_0; +return 0 ; + + err_del_bus_0: +i2c_del_adapter (&cx->i2c_adap[0 ]); + err: +return err; }void exit_cx18_i2c (struct cx18 *cx)
Signature · 1 line
Jean Delvare