[media] cx231xx-i2c: handle errors with cx231xx_get_i2c_adap()
authorMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 5 Sep 2016 08:41:53 +0000 (05:41 -0300)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Mon, 5 Sep 2016 18:26:34 +0000 (15:26 -0300)
The cx231xx_get_i2c_adap() function should return the I2C
adapter that will be used to talk with a device. It should never
be NULL, as otherwise the driver will try to dereference a
null pointer.

We might instead fix the callers, but if this condition
ever happens, it is really a driver bug, because i2c_port
should always be a value from enum CX231XX_I2C_MASTER_PORT.

Found when checking the code due to this bug:

[   39.769021] BUG: unable to handle kernel NULL pointer dereference at 0000000000000002
[   39.769105] IP: [<ffffffff81638393>] i2c_master_send+0x13/0x70

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/usb/cx231xx/cx231xx-i2c.c

index 473cd3433fe5d44b378c084dd7d6fb9ac53a693f..3e7982ef180a83a9f4c08ee0bc5fdf40e91959b2 100644 (file)
@@ -608,7 +608,7 @@ struct i2c_adapter *cx231xx_get_i2c_adap(struct cx231xx *dev, int i2c_port)
        case I2C_1_MUX_3:
                return dev->muxc->adapter[1];
        default:
-               return NULL;
+               BUG();
        }
 }
 EXPORT_SYMBOL_GPL(cx231xx_get_i2c_adap);