From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753504AbcGDLD4 (ORCPT ); Mon, 4 Jul 2016 07:03:56 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:32904 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753334AbcGDLDn (ORCPT ); Mon, 4 Jul 2016 07:03:43 -0400 X-AuditID: cbfee68f-f79476d000001429-87-577a428e01c7 From: Alim Akhtar To: rtc-linux@googlegroups.com, linux-kernel@vger.kernel.org Cc: alexandre.belloni@free-electrons.com, k.kozlowski@samsung.com, javier@osg.samsung.com, pankaj.dubey@samsung.com, alim.akhtar@samsung.com Subject: [RFC PATCH 2/2] rtc: s3c: Add s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq() Date: Mon, 04 Jul 2016 16:33:14 +0530 Message-id: <1467630195-6929-2-git-send-email-alim.akhtar@samsung.com> X-Mailer: git-send-email 1.7.10.4 In-reply-to: <1467630195-6929-1-git-send-email-alim.akhtar@samsung.com> References: <1467630195-6929-1-git-send-email-alim.akhtar@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrJLMWRmVeSWpSXmKPExsWyRsSkRbfPqSrc4MQsQYuOa4uZLB7M28Zm 8ebtGiaL1y8MLS7vmsNmsWjrF3aL/Z0djA7sHk82XWT02DPxJJvHlv677B59W1YxenzeJBfA GsVlk5Kak1mWWqRvl8CV8a7tAGPBGc6KY1t9GhhfsncxcnJICJhITH99mxXCFpO4cG89Wxcj F4eQwApGiQV398IV3Z7VwgKRmMUosX3pZHYI5yejxM6TCxlBqtgEtCXuTt/CBGKLCNhIrJzV DzaWWaCPUWL/NhEQW1ggSmLRn5tgcRYBVYnXPRuZQWxeATeJV/e3M0NsU5TofjaBDcTmFHCX +Pa/G8jmAFrmJtE7Ixxkr4TAPHaJg7uPsEHMEZD4NvkQC0iNhICsxKYDUGMkJQ6uuMEygVF4 ASPDKkbR1ILkguKk9CJjveLE3OLSvHS95PzcTYzAED/971n/Dsa7B6wPMQpwMCrx8D64Whku xJpYVlyZe4jRFGjDRGYp0eR8YCTllcQbGpsZWZiamBobmVuaKYnzLpT6GSwkkJ5YkpqdmlqQ WhRfVJqTWnyIkYmDU6qBcZ+ze9jLGKavscbtqkwn2A1rX6Y3+96daRW/OjJd5q/CBbVZrEsU gvdKlrdwvPnalOswRXnNr6Os8jeNe3bHRsyekHHdZDPPtt/yIdk10tb32b4aXHDdvWWXsvC7 tT/OF3ekBQupFW/b8JOb/dAU2cpFToE3OBz2GLVPZMtXyrD+3JC0VGGeEktxRqKhFnNRcSIA umGnxGwCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrGIsWRmVeSWpSXmKPExsVy+t9jQd0+p6pwg0fXeSw6ri1msngwbxub xZu3a5gsXr8wtLi8aw6bxaKtX9gt9nd2MDqwezzZdJHRY8/Ek2weW/rvsnv0bVnF6PF5k1wA a1QDo01GamJKapFCal5yfkpmXrqtkndwvHO8qZmBoa6hpYW5kkJeYm6qrZKLT4CuW2YO0BlK CmWJOaVAoYDE4mIlfTtME0JD3HQtYBojdH1DguB6jAzQQMI6xox3bQcYC85wVhzb6tPA+JK9 i5GTQ0LAROL2rBYWCFtM4sK99WxdjFwcQgKzGCW2L53MDuH8ZJTYeXIhI0gVm4C2xN3pW5hA bBEBG4mVs/pZQWxmgT5Gif3bREBsYYEoiUV/boLFWQRUJV73bGQGsXkF3CRe3d/ODLFNUaL7 2QQ2EJtTwF3i2/9uIJsDaJmbRO+M8AmMvAsYGVYxSqQWJBcUJ6XnGuallusVJ+YWl+al6yXn 525iBMfRM6kdjAd3uR9iFOBgVOLhteytDBdiTSwrrsw9xCjBwawkwtvvWBUuxJuSWFmVWpQf X1Sak1p8iNEU6K6JzFKiyfnAGM8riTc0NjEzsjQyszAyMTdXEud9/H9dmJBAemJJanZqakFq EUwfEwenVANj7CftlAvsfhIdJXOe93cnbonqn333heLCDds5J6zjWyn3co7Qil8f4qVZtvA+ U9UUMjFgO7rq6eoO6zTHmg9VNsskL1/4psPpXCF/YM+J4onluxKOvSp4qrRiitFrxlOHFlzP jFLhMmTbG75vd9WbZdNNHk/lMnO79I2p4L315ZWCW+oZWH7eVmIpzkg01GIuKk4EAICIS5O5 AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As per code flow it is possible that s3c_rtc_setfreq() might get called with rtc clock disabled and in set_freq we perform h/w registers read/write, which might results in a kernel crash while probing rtc driver. Below is one such case: s3c_rtc_probe() clk_prepare_enable(info->rtc_clk) // rtc clock enabled s3c_rtc_gettime() // will enable clk if not done, and disable it upon exit s3c_rtc_setfreq() //then this will be called with clk disabled This patch take cares of such issue by adding s3c_rtc_{enable/disable}_clk in s3c_rtc_setfreq(). Signed-off-by: Alim Akhtar --- drivers/rtc/rtc-s3c.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/rtc/rtc-s3c.c b/drivers/rtc/rtc-s3c.c index b083840..1168814 100644 --- a/drivers/rtc/rtc-s3c.c +++ b/drivers/rtc/rtc-s3c.c @@ -149,12 +149,14 @@ static int s3c_rtc_setfreq(struct s3c_rtc *info, int freq) if (!is_power_of_2(freq)) return -EINVAL; + s3c_rtc_enable_clk(info); spin_lock_irq(&info->pie_lock); if (info->data->set_freq) info->data->set_freq(info, freq); spin_unlock_irq(&info->pie_lock); + s3c_rtc_disable_clk(info); return 0; } -- 1.7.10.4