From patchwork Wed Mar 23 10:05:08 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Guennadi Liakhovetski X-Patchwork-Id: 654931 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p2NA5DJ8013859 for ; Wed, 23 Mar 2011 10:05:14 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755987Ab1CWKFM (ORCPT ); Wed, 23 Mar 2011 06:05:12 -0400 Received: from moutng.kundenserver.de ([212.227.17.9]:49990 "EHLO moutng.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755865Ab1CWKFK (ORCPT ); Wed, 23 Mar 2011 06:05:10 -0400 Received: from axis700.grange (pD9EB90DE.dip0.t-ipconnect.de [217.235.144.222]) by mrelayeu.kundenserver.de (node=mrbap2) with ESMTP (Nemesis) id 0MQ8It-1Q71te0w0h-005NJW; Wed, 23 Mar 2011 11:05:09 +0100 Received: by axis700.grange (Postfix, from userid 1000) id D6CCE189B86; Wed, 23 Mar 2011 11:05:08 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by axis700.grange (Postfix) with ESMTP id D4832189B85 for ; Wed, 23 Mar 2011 11:05:08 +0100 (CET) Date: Wed, 23 Mar 2011 11:05:08 +0100 (CET) From: Guennadi Liakhovetski X-X-Sender: lyakh@axis700.grange To: Linux Media Mailing List Subject: [PATCH] V4L: soc-camera: don't dereference I2C client after it has been removed Message-ID: MIME-Version: 1.0 X-Provags-ID: V02:K0:GkVvhgjDjGaOYvdJMK1JAZwmBiryvWFasQorSbA3EGQ 7PB3UIpDYDMWpo31JxQYnq3CmpDoksVkBvsuBRlyS6hjcKvgDj I+MAyV3aBW9kYqU4yA9WPpcVchbl3FzvFRF+xmA43Ka9gPf2si E+LYxk/XD/kRhLh4agmLg8wflx70sAhxaSD+kz0q06ogX3cohj Ma8ETr1xzVYnCybkko49ynyAepAi7+hWj1SAELCteg= Sender: linux-media-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-media@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Wed, 23 Mar 2011 10:05:14 +0000 (UTC) diff --git a/drivers/media/video/soc_camera.c b/drivers/media/video/soc_camera.c index e97be53..2f0fd2f 100644 --- a/drivers/media/video/soc_camera.c +++ b/drivers/media/video/soc_camera.c @@ -996,10 +996,11 @@ static void soc_camera_free_i2c(struct soc_camera_device *icd) { struct i2c_client *client = to_i2c_client(to_soc_camera_control(icd)); + struct i2c_adapter *adap = client->adapter; dev_set_drvdata(&icd->dev, NULL); v4l2_device_unregister_subdev(i2c_get_clientdata(client)); i2c_unregister_device(client); - i2c_put_adapter(client->adapter); + i2c_put_adapter(adap); } #else #define soc_camera_init_i2c(icd, icl) (-ENODEV)