Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] soc-camera: don't dereference I2C client after it has been removed

i2c_unregister_device() frees the I2C client, so, dereferencing it
afterwards is a bug, that leads to Oopses.

Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>

authored by

Guennadi Liakhovetski and committed by
Mauro Carvalho Chehab
c8dd7078 3e31f2b9

+2 -1
+2 -1
drivers/media/video/soc_camera.c
··· 996 996 { 997 997 struct i2c_client *client = 998 998 to_i2c_client(to_soc_camera_control(icd)); 999 + struct i2c_adapter *adap = client->adapter; 999 1000 dev_set_drvdata(&icd->dev, NULL); 1000 1001 v4l2_device_unregister_subdev(i2c_get_clientdata(client)); 1001 1002 i2c_unregister_device(client); 1002 - i2c_put_adapter(client->adapter); 1003 + i2c_put_adapter(adap); 1003 1004 } 1004 1005 #else 1005 1006 #define soc_camera_init_i2c(icd, icl) (-ENODEV)