From nobody Sat May 10 05:36:16 2025 Delivered-To: importer2@patchew.org Received-SPF: pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; envelope-from=linux-kernel-owner@vger.kernel.org; helo=vger.kernel.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org ARC-Seal: i=1; a=rsa-sha256; t=1606816634; cv=none; d=zohomail.com; s=zohoarc; b=JVhkqmFnn+F0YWumknd8LjkezN47E+uYJQg0W+1zDbeHjZy7yUTNgsdj5C3cxR4dlnJsZ+QwWv/5COQSMBxuayIE0h+0b4QAGIPcZmePqD0EpQRyoR5R/kaJS9TuMhI2Ndre84rFRVRY2x/ZndNpi4cDGnLvIWVBtuLmcvZhZRA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1606816634; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Id:MIME-Version:Message-ID:References:Subject:To; bh=tEhC3oKRu4H9sqpI3sbXmPgybLoWfA7LrGXLD1oxjwY=; b=DJd4g6Bq6I+g8Q5SFVB8497W30ClOH5CSCAlqC1i7qyfIuly46iQYzdJeDCoYQQE6UqJeReA0+8c04EIxHWLYxMocl5SQsThapaDZ1f/Mha8ISl0BurLWzm+Dq5FNi3iCUdyhDe/fjIC49VsrTo4aO9Ry+QgafonkRpMBimg9SM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mx.zohomail.com with SMTP id 160681663362023.843343835360315; Tue, 1 Dec 2020 01:57:13 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390737AbgLAJ5B (ORCPT ); Tue, 1 Dec 2020 04:57:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59412 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2388250AbgLAJ47 (ORCPT ); Tue, 1 Dec 2020 04:56:59 -0500 Received: from forward103j.mail.yandex.net (forward103j.mail.yandex.net [IPv6:2a02:6b8:0:801:2::106]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 641A8C0613D2; Tue, 1 Dec 2020 01:56:19 -0800 (PST) Received: from mxback15o.mail.yandex.net (mxback15o.mail.yandex.net [IPv6:2a02:6b8:0:1a2d::66]) by forward103j.mail.yandex.net (Yandex) with ESMTP id A596A674013C; Tue, 1 Dec 2020 12:55:34 +0300 (MSK) Received: from sas8-b61c542d7279.qloud-c.yandex.net (sas8-b61c542d7279.qloud-c.yandex.net [2a02:6b8:c1b:2912:0:640:b61c:542d]) by mxback15o.mail.yandex.net (mxback/Yandex) with ESMTP id T9Wo4OhVvj-tYTSOAlx; Tue, 01 Dec 2020 12:55:34 +0300 Received: by sas8-b61c542d7279.qloud-c.yandex.net (smtp/Yandex) with ESMTPSA id HpRbpndKo3-tXIuVpHm; Tue, 01 Dec 2020 12:55:33 +0300 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (Client certificate not present) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=maquefel.me; s=mail; t=1606816534; bh=tEhC3oKRu4H9sqpI3sbXmPgybLoWfA7LrGXLD1oxjwY=; h=In-Reply-To:Subject:To:From:Cc:References:Date:Message-Id; b=T32VYo1Ol8zYqZByVsJSSma3v8Sv1WG0CR99AxcPAuZVIllb9j89+TWmwAmD+HWHQ mUQ+URFOpDa0mSCLWQQBAu8ynE6duRmUcmZVz16q2SAlaLR3KZRMEm3e582r4oelCH YSoMRV6hjr8Iloh3n7fwFcoyevrK93WmKzLR7pKY= Authentication-Results: mxback15o.mail.yandex.net; dkim=pass header.i=@maquefel.me From: Nikita Shubin Cc: Nikita Shubin , stable@vger.kernel.org, Alessandro Zummo , Alexandre Belloni , linux-rtc@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] rtc: ep93xx: Fix NULL pointer dereference in ep93xx_rtc_read_time Date: Tue, 1 Dec 2020 12:55:07 +0300 Message-Id: <20201201095507.10317-1-nikita.shubin@maquefel.me> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20201201095131.9772-1-nikita.shubin@maquefel.me> References: <20201201095131.9772-1-nikita.shubin@maquefel.me> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Type: text/plain; charset="utf-8" Mismatch in probe platform_set_drvdata set's and method's that call dev_get_platdata will result in "Unable to handle kernel NULL pointer=20 dereference", let's use according method for getting driver data after platform_set_drvdata. 8<--- cut here --- Unable to handle kernel NULL pointer dereference at virtual address 00000000 pgd =3D (ptrval) [00000000] *pgd=3D00000000 Internal error: Oops: 5 [#1] ARM Modules linked in: CPU: 0 PID: 1 Comm: swapper Not tainted 5.9.10-00003-g723e101e0037-dirty #4 Hardware name: Technologic Systems TS-72xx SBC PC is at ep93xx_rtc_read_time+0xc/0x2c LR is at __rtc_read_time+0x4c/0x8c pc : [] lr : [] psr: 40000053 sp : c441dcf0 ip : c441dd50 fp : 00000000 r10: fffffdfb r9 : 00000000 r8 : c0520ca8 r7 : c149b53c r6 : c149b400 r5 : c441dd2c r4 : c149b400 r3 : 00000000 r2 : c441dd2c r1 : c441dd2c r0 : c04ea2a0 Flags: nZcv IRQs on FIQs off Mode SVC_32 ISA ARM Segment none Control: 0000717f Table: 00004000 DAC: 00000053 Process swapper (pid: 1, stack limit =3D 0x(ptrval)) Stack: (0xc441dcf0 to 0xc441e000) dce0: c149b400 c02ac38c 00000000 c441dd= 2c dd00: c149b400 c02ac3f8 c441dde4 c04ea290 c149b400 c149b400 c0520ca8 c02acc= 54 dd20: c400ce60 c04e5230 ffffffff 00000000 00000000 00000000 00000000 000000= 00 dd40: 00000000 00000000 00000000 00000000 c144f745 c144f740 00000005 c441dd= 7c dd60: c045c56e c0231240 00000000 c045c56f 00000004 c04e5228 c04ea290 c14961= 20 dd80: c04ea290 c149b400 00000000 c0520ca8 00000000 fffffdfb 00000000 c02abd= 80 dda0: c14967c0 c00ab884 c4400160 00000dc0 c14967c0 c4400160 00000dc0 c02ae7= 0c ddc0: 40000053 c03b6f10 c149b400 c0265700 c14967e0 c149b400 00000000 c14967= e0 dde0: c0503d44 c14967e4 00000004 c02ae754 00000000 c1496120 c04ea290 ffffff= ff de00: 00000000 c0520ca8 00000000 c04e5228 c1496120 c04ea290 ffffffff c0520c= a8 de20: 00000000 fffffdfb 00000000 c02b028c c04ea2a0 c0503e90 00000000 c0503e= 90 de40: c0520ca8 c026424c c04ea2a0 00000000 00000000 c0262918 00000000 c04ea2= a0 de60: c0503e90 c0502240 c050e000 c0498504 c04d5840 c0262da0 00000000 c04ea2= a0 de80: c0503e90 c0262e70 c04ea2a0 c0503e90 c0262dbc c0260d44 c0502240 c4408c= 70 dea0: c4478440 c04e5228 c0503e90 c45b6900 00000000 c026223c c0503e90 c0261d= d8 dec0: c04347ed c04347f5 c441ba60 c0503e90 c04cb99c ffffe000 00000000 c02634= 2c dee0: c050e000 c04cb99c ffffe000 c0264210 c050e000 c04cb9ac c050e000 c00097= 3c df00: c04466a2 c002d734 c440a480 c04b9300 c0498504 0000005c 00000006 000000= 06 df20: 00000000 c0498c34 0000005b c0498c34 c4400200 c440a4ef 00000000 c04e52= 28 df40: 00000dc0 00000006 0000005c c04e5228 c04d585c 00000007 0000005c c440a4= 80 df60: c04d5860 c04b9ecc 00000006 00000006 00000000 c04b93e4 00000000 c04dfb= 50 df80: c441c000 00000000 c03b2220 00000000 00000000 00000000 00000000 000000= 00 dfa0: 00000000 c03b2228 00000000 c00082c0 00000000 00000000 00000000 000000= 00 dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000000= 00 dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 00000000 000000= 00 [] (ep93xx_rtc_read_time) from [] (__rtc_read_time+0x4c= /0x8c) [] (__rtc_read_time) from [] (rtc_read_time+0x2c/0x4c) [] (rtc_read_time) from [] (__rtc_read_alarm+0x28/0x358) [] (__rtc_read_alarm) from [] (__rtc_register_device+0x= 124/0x2ec) [] (__rtc_register_device) from [] (ep93xx_rtc_probe+0x= a4/0xac) [] (ep93xx_rtc_probe) from [] (platform_drv_probe+0x24/= 0x5c) [] (platform_drv_probe) from [] (really_probe+0x218/0x3= 74) [] (really_probe) from [] (device_driver_attach+0x44/0x= 60) [] (device_driver_attach) from [] (__driver_attach+0xb4= /0xc0) [] (__driver_attach) from [] (bus_for_each_dev+0x68/0xa= c) [] (bus_for_each_dev) from [] (driver_attach+0x18/0x24) [] (driver_attach) from [] (bus_add_driver+0x150/0x1b4) [] (bus_add_driver) from [] (driver_register+0xb0/0xf4) [] (driver_register) from [] (__platform_driver_registe= r+0x30/0x48) [] (__platform_driver_register) from [] (ep93xx_rtc_dri= ver_init+0x10/0x1c) [] (ep93xx_rtc_driver_init) from [] (do_one_initcall+0x= 7c/0x1c0) [] (do_one_initcall) from [] (kernel_init_freeable+0x16= 8/0x1ac) [] (kernel_init_freeable) from [] (kernel_init+0x8/0xf4) [] (kernel_init) from [] (ret_from_fork+0x14/0x34) Exception stack(0xc441dfb0 to 0xc441dff8) dfa0: 00000000 00000000 00000000 000000= 00 dfc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 000000= 00 dfe0: 00000000 00000000 00000000 00000000 00000013 00000000 Code: e12fff1e e92d4010 e590303c e1a02001 (e5933000) ---[ end trace c914d6030eaa95c8 ]--- Signed-off-by: Nikita Shubin Cc: stable@vger.kernel.org --- drivers/rtc/rtc-ep93xx.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/rtc/rtc-ep93xx.c b/drivers/rtc/rtc-ep93xx.c index 8ec9ea1ca72e..6f90b85a5814 100644 --- a/drivers/rtc/rtc-ep93xx.c +++ b/drivers/rtc/rtc-ep93xx.c @@ -33,7 +33,7 @@ struct ep93xx_rtc { static int ep93xx_rtc_get_swcomp(struct device *dev, unsigned short *prelo= ad, unsigned short *delete) { - struct ep93xx_rtc *ep93xx_rtc =3D dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc =3D dev_get_drvdata(dev); unsigned long comp; =20 comp =3D readl(ep93xx_rtc->mmio_base + EP93XX_RTC_SWCOMP); @@ -51,7 +51,7 @@ static int ep93xx_rtc_get_swcomp(struct device *dev, unsi= gned short *preload, =20 static int ep93xx_rtc_read_time(struct device *dev, struct rtc_time *tm) { - struct ep93xx_rtc *ep93xx_rtc =3D dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc =3D dev_get_drvdata(dev); unsigned long time; =20 time =3D readl(ep93xx_rtc->mmio_base + EP93XX_RTC_DATA); @@ -62,7 +62,7 @@ static int ep93xx_rtc_read_time(struct device *dev, struc= t rtc_time *tm) =20 static int ep93xx_rtc_set_time(struct device *dev, struct rtc_time *tm) { - struct ep93xx_rtc *ep93xx_rtc =3D dev_get_platdata(dev); + struct ep93xx_rtc *ep93xx_rtc =3D dev_get_drvdata(dev); unsigned long secs =3D rtc_tm_to_time64(tm); =20 writel(secs + 1, ep93xx_rtc->mmio_base + EP93XX_RTC_LOAD); --=20 2.26.2