From patchwork Tue Feb 11 09:12:25 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krzysztof Kozlowski X-Patchwork-Id: 3625601 Return-Path: X-Original-To: patchwork-linux-samsung-soc@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 8BA8DBF418 for ; Tue, 11 Feb 2014 09:14:27 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id ADBE120204 for ; Tue, 11 Feb 2014 09:14:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 948F4201CE for ; Tue, 11 Feb 2014 09:14:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751488AbaBKJOX (ORCPT ); Tue, 11 Feb 2014 04:14:23 -0500 Received: from mailout1.w1.samsung.com ([210.118.77.11]:24793 "EHLO mailout1.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751374AbaBKJOV (ORCPT ); Tue, 11 Feb 2014 04:14:21 -0500 Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244]) by mailout1.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N0T009WKQZVEA90@mailout1.w1.samsung.com>; Tue, 11 Feb 2014 09:14:19 +0000 (GMT) X-AuditID: cbfec7f4-b7f796d000005a13-e0-52f9e9ea265d Received: from eusync2.samsung.com ( [203.254.199.212]) by eucpsbgm1.samsung.com (EUCPMTA) with SMTP id 00.89.23059.AE9E9F25; Tue, 11 Feb 2014 09:14:18 +0000 (GMT) Received: from AMDC1943.digital.local ([106.116.151.171]) by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0N0T00HJFQZQ3Q80@eusync2.samsung.com>; Tue, 11 Feb 2014 09:14:18 +0000 (GMT) From: Krzysztof Kozlowski To: Sangbeom Kim , Samuel Ortiz , Lee Jones , linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org Cc: Kyungmin Park , Marek Szyprowski , Bartlomiej Zolnierkiewicz , Krzysztof Kozlowski , stable@vger.kernel.org Subject: [PATCH] mfd: sec-core: Fix possible NULL pointer dereference when i2c_new_dummy error Date: Tue, 11 Feb 2014 10:12:25 +0100 Message-id: <1392109945-333-1-git-send-email-k.kozlowski@samsung.com> X-Mailer: git-send-email 1.7.9.5 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrKJMWRmVeSWpSXmKPExsVy+t/xK7qvXv4MMth/VcRi44z1rBavXxha nG16w25x/+tRRovLu+awWcw4v4/JYu2Ru+wWp7tZLS6u+MJksWDjI0YHLo871/awecw7GejR t2UVo8fnTXIBLFFcNimpOZllqUX6dglcGU87vjMWPOSoWPV4E1MD4xr2LkZODgkBE4nXP+Yw Q9hiEhfurWcDsYUEljJK3J3M2sXIBWT3MUmced/OCJJgEzCW2Lx8CRtIQkRgM6PE4u9XwaqY Be4ySjTffQ9WJSyQILH88nVWEJtFQFViyq+bYHFeAVeJHQsvAK3jAFqnIDFnks0ERu4FjAyr GEVTS5MLipPScw31ihNzi0vz0vWS83M3MUKC5ssOxsXHrA4xCnAwKvHwblD8GSTEmlhWXJl7 iFGCg1lJhFfpOFCINyWxsiq1KD++qDQntfgQIxMHp1QD4/yEN9c2hvbtrRWP0V8i2uWklczP E6X9pD/0uEhL3ZfXgqd01t33tl9/u+5mo1Cnpe28pmctoYcDmH+HXxAoWeKpu6/BZoaaiVN5 xwFZBb4bPfdmLih8z314yUEFtzupx/hPh1ox/3+fvePs7FsMobu6vi2pVbvIt8OoTLX/z9O+ 9dMC2R+6KrEUZyQaajEXFScCAOp6bJr4AQAA Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP During probe the sec-core driver allocates dummy I2C device for RTC with i2c_new_dummy() but return value is not checked. In case of error (i2c_new_device(): memory allocation failure or I2C address cannot be used) this function returns NULL which is later used by devm_regmap_init_i2c() or i2c_unregister_device(). If i2c_new_dummy() fails for RTC device, fail also the probe for main MFD driver. Signed-off-by: Krzysztof Kozlowski Cc: stable@vger.kernel.org --- drivers/mfd/sec-core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/mfd/sec-core.c b/drivers/mfd/sec-core.c index a139798b8065..7c6ce2e4aaa6 100644 --- a/drivers/mfd/sec-core.c +++ b/drivers/mfd/sec-core.c @@ -252,6 +252,10 @@ static int sec_pmic_probe(struct i2c_client *i2c, } sec_pmic->rtc = i2c_new_dummy(i2c->adapter, RTC_I2C_ADDR); + if (!sec_pmic->rtc) { + dev_err(&i2c->dev, "Failed to allocate I2C for RTC\n"); + return -ENODEV; + } i2c_set_clientdata(sec_pmic->rtc, sec_pmic); sec_pmic->regmap_rtc = devm_regmap_init_i2c(sec_pmic->rtc,