Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp5305785pxj; Wed, 26 May 2021 07:37:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyU5bAtTAJ3a/PvM1CL0su2jmcLlIua2GQJrgCx6YP87AjrT/9l485/nGNiB+qLBd5pDuBG X-Received: by 2002:a5e:c913:: with SMTP id z19mr24371695iol.70.1622039865930; Wed, 26 May 2021 07:37:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622039865; cv=none; d=google.com; s=arc-20160816; b=zM3lPixE9nTmykY3iyJXUMY7KDzU9AY11H+zQJs7MQd4BYhUJcx2zQ7QAknfYkjkIO WXRnr1wD8Ds+h7+zhRFv2R4co7j+ZzVYdEs4A/QwBLf1FeTrbquA0lEtaO7gUrU6YiXE Z5L9f34tn71anDz2iODj+oOalTKArqlm6HPGoN4Q2jiJF0lVYOyCak6nJpJCy0/vAqNw S5563aN+yPDHrGGb7noBzvRBCxSV3NCiX97UWH2juXr/2hxVLglXSrEcGNQKNzyvrtwy Y8jMbTBFYGtyXxhuzTyfmmNtihrtY2J2Y/xn0YnTfofVCEmyctCmsiaaS68wK8BS9puW gFwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=wuxOqWZIo3WWzF9R3GbXkdAp7BCPq0or5oydGzbOhUw=; b=Wrikx3+xKhjbx65kyw6SOcYT6OgxdcNzMPSGO4Dp99SUX7xA9jjuijXT8XBboQauQd on4XQ4tybwZlEk5y12Y5WTWZFggiMV426ryqJ+0I3C+9N/lgz0zMhPNn0OEtqZRLwEZh fwNpkQBV9fEEgADh2YJnqEDjAmnugovV6NQo+YrbpcpmI8R5W1wNdLlzT/uFw2/rKdZ/ 1O+qXiZHwON1g10269mhh3EOPmILVAOYH+q1BYw7Zonq2dhxa1mVhWvEBb+mSH8OvzI6 aElo3UyNN9p3ac6tKDAaSWYW2DBLfYMtzi5pslkgZfnpmedYm86FAAfsmjvfK8CHuvfM LIFQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id m2si2827134ilu.120.2021.05.26.07.37.30; Wed, 26 May 2021 07:37:45 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=ispras.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232903AbhEZOhZ (ORCPT + 99 others); Wed, 26 May 2021 10:37:25 -0400 Received: from mail.ispras.ru ([83.149.199.84]:50246 "EHLO mail.ispras.ru" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234894AbhEZOhP (ORCPT ); Wed, 26 May 2021 10:37:15 -0400 Received: from hellwig.intra.ispras.ru (unknown [10.10.2.182]) by mail.ispras.ru (Postfix) with ESMTPS id 8FFE54076B20; Wed, 26 May 2021 14:35:26 +0000 (UTC) From: Evgeny Novikov To: Mauro Carvalho Chehab Cc: Evgeny Novikov , Jacopo Mondi , Ezequiel Garcia , Sakari Ailus , Hans Verkuil , Lubomir Rintel , Vaibhav Gupta , Leon Romanovsky , Laurent Pinchart , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, ldv-project@linuxtesting.org Subject: [PATCH] media: marvell-ccic: set error code in probe Date: Wed, 26 May 2021 17:35:06 +0300 Message-Id: <20210526143506.6945-1-novikov@ispras.ru> X-Mailer: git-send-email 2.26.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When i2c_new_client_device() fails, cafe_pci_probe() cleans up all resources and returns 0. The patch sets the error code on the corresponding path. Found by Linux Driver Verification project (linuxtesting.org). Signed-off-by: Evgeny Novikov --- drivers/media/platform/marvell-ccic/cafe-driver.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/drivers/media/platform/marvell-ccic/cafe-driver.c b/drivers/media/platform/marvell-ccic/cafe-driver.c index baac86f3d153..9aa374fa8b36 100644 --- a/drivers/media/platform/marvell-ccic/cafe-driver.c +++ b/drivers/media/platform/marvell-ccic/cafe-driver.c @@ -486,6 +486,7 @@ static int cafe_pci_probe(struct pci_dev *pdev, struct cafe_camera *cam; struct mcam_camera *mcam; struct v4l2_async_subdev *asd; + struct i2c_client *i2c_dev; /* * Start putting together one of our big camera structures. @@ -561,11 +562,16 @@ static int cafe_pci_probe(struct pci_dev *pdev, clkdev_create(mcam->mclk, "xclk", "%d-%04x", i2c_adapter_id(cam->i2c_adapter), ov7670_info.addr); - if (!IS_ERR(i2c_new_client_device(cam->i2c_adapter, &ov7670_info))) { - cam->registered = 1; - return 0; + i2c_dev = i2c_new_client_device(cam->i2c_adapter, &ov7670_info); + if (IS_ERR(i2c_dev)) { + ret = PTR_ERR(i2c_dev); + goto out_mccic_shutdown; } + cam->registered = 1; + return 0; + +out_mccic_shutdown: mccic_shutdown(mcam); out_smbus_shutdown: cafe_smbus_shutdown(cam); -- 2.26.2