Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp909896imm; Thu, 31 May 2018 11:33:13 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIdHZdnD1KP7Rbrhug1ZC1ZAIAuxYiH0rwyvPbBt/tBXJCU8qdYunKUahsIbL0NBW0epiHS X-Received: by 2002:a63:8048:: with SMTP id j69-v6mr6462211pgd.429.1527791593688; Thu, 31 May 2018 11:33:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527791593; cv=none; d=google.com; s=arc-20160816; b=MK+hi1ALSWJnBZKBCaOmKd9WwAGl3D8jeyfG4FvfGVWiSjbsBJ06nyRoTTMnjh94sD WQb0Zh1wx6S1E703dXncUQj+AZ1o944p3MGGydjt1Wn74MGX8iV6X7fHJDref2bN34Gl nmq4XzA9v4vfXlJe0rSPmnJDP5zugnc+ZBwkjLNHsTDrIxz5ggyFaHRI+LywbZK853qv OfcTWAWfFJeYOjbi5TuLfCo4cFTfTKVbjzb4myqVWFS+7lolwhVPTS8sWf/bewE9Xy6E vi1uCvNefmmoiT4O4fBRW/VaXk6RT5FC7I8RwhYuH9eh4RKvL3CHQsG2g7ZoH7ZVx89/ p/5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=yhRReEY+J/cO+v33z4XAq8be3FtFKXoDngNZw8bFYwg=; b=yKFjmbw0YMXzm+zrVF+uL620ZjVAe3PjNzDCUz9lzZxNiX0TTWzV+qqSFZGYy1/g4S sSizp9Nj9O8tCAXZQrIO88t/QkBjGQ8nNjWJB1/epjyHueO4MvvTlazB1UPR1dDwdkDk 0J5PeqD3J6U5SpmkL6Ri7lQdK53FVnuccmXaS+xmjJlmkFEVBxMHQbXNLGQXd0iF9DWu Dfd4Cv76vS4mKFlZo6UWw4zRfWW/H4GSCYpiEAmLmai9yZzkHILSS9uJ6yWDI4NPqlx3 K/epZ9RcbMor2Nyq0F3+VxZO2hvJTB0sIfstIgwQIbjIYLLa7P/EIoAM23Aa4yi2WjWu OlAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Nr3Pirps; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q12-v6si16002829pgc.619.2018.05.31.11.32.58; Thu, 31 May 2018 11:33:13 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Nr3Pirps; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755943AbeEaScI (ORCPT + 99 others); Thu, 31 May 2018 14:32:08 -0400 Received: from mail-qt0-f196.google.com ([209.85.216.196]:41050 "EHLO mail-qt0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755826AbeEaScE (ORCPT ); Thu, 31 May 2018 14:32:04 -0400 Received: by mail-qt0-f196.google.com with SMTP id y20-v6so2848567qto.8; Thu, 31 May 2018 11:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=yhRReEY+J/cO+v33z4XAq8be3FtFKXoDngNZw8bFYwg=; b=Nr3Pirps49aYwTIfIemVVspiWIq2Sy+btJNETiB0yS2kmuZ1acdemdOVLI8Xma8VWI wu38z6LB7HqZdkaOIyQB5pxwgDpRYifpn3PbgCLdgQXDUi7ijkv/FrfjN11EOtVFndfz hckhSlcF8NCzXg/gEeN7B/4lzL6iePLnAE4D91gnYNf74dTMgaFw8z0HNuzsoYvNkG9O nVnXFsROUCJeTYxOmylwjoHdXfipKgP+b5ky0gDEJ5URfvkXQmPKYNfamRa+r/m+VHv8 s29zuFHp2SIG8JPk9maGng2P9LH160J1KwCcVCRxSKhoYwGCBBtWCLdlkl2Ar5+mxhB4 1dTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=yhRReEY+J/cO+v33z4XAq8be3FtFKXoDngNZw8bFYwg=; b=NctYTHCRfyy/V16tl9FMZt8pMtz3otB3t1y9sORcTqs3CKDv4PIKyHMf8JUJje8Oqd nZsiNkOWV6hMjor1yKSOAOTdTNyvAJjgZ0B1P1spL/gYtl20k4LDmDIIx7cpSpvRdNfE F2QfydBpvxZEsv6OzAYbHfzcKxIMIKuQBpPn7p+M2l1jAjC5ubGQn1fwonsqPRpJQgl/ JvQ1gqcw/gZXue1h+Tsnb2p5EJi1WCcT1t+fHWWPZvFjpahw1SeQinBLufXz8YLioAgs 7wSGtuhmEH/sl67T9VE21H9BDhmQhLMNCSIhyvlZc7TE0dfVZjgYm/4dmJoJlT/s9J8j WjfA== X-Gm-Message-State: APt69E2ZkefYVyaMk4kIqVHiDwe8mYaDLEhogglIwY7TIn3NGyEN8456 ixNwxQRHwynrlRd1tHrmUhw= X-Received: by 2002:ac8:72d0:: with SMTP id o16-v6mr4027724qtp.7.1527791523574; Thu, 31 May 2018 11:32:03 -0700 (PDT) Received: from [192.168.1.54] (c-24-5-209-231.hsd1.ca.comcast.net. [24.5.209.231]) by smtp.gmail.com with ESMTPSA id o64-v6sm17276113qko.74.2018.05.31.11.32.01 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 31 May 2018 11:32:02 -0700 (PDT) Subject: Re: [PATCH] clk: vc5: Fix div-by-0 when rounding a rate of zero To: Marek Vasut , Michael Turquette , Stephen Boyd Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Steve Longerbeam References: <1527791036-11251-1-git-send-email-steve_longerbeam@mentor.com> <1084deae-ca55-aba1-ec08-7e1d976de7b7@gmail.com> From: Steve Longerbeam Message-ID: Date: Thu, 31 May 2018 11:32:00 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <1084deae-ca55-aba1-ec08-7e1d976de7b7@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Marek, On 05/31/2018 11:25 AM, Marek Vasut wrote: > On 05/31/2018 08:23 PM, Steve Longerbeam wrote: >> Just return zero for a rounded rate if requested rate is zero. >> >> This was caught by CONFIG_UBSAN: >> >> [ 192.266748] UBSAN: Undefined behaviour in drivers/clk/clk-versaclock5.c:513:17 >> [ 192.274050] division by zero >> [ 192.276976] CPU: 0 PID: 2579 Comm: vsp-unit-test-0 Tainted: G B WC 4.14.17-02752-g13fb96f #1 >> [ 192.286378] Hardware name: Renesas Salvator-X board based on r8a7795 ES2.0+ (DT) >> [ 192.293852] Call trace: >> [ 192.296343] [] dump_backtrace+0x0/0x390 >> [ 192.301807] [] show_stack+0x14/0x1c >> [ 192.306920] [] dump_stack+0x134/0x1a8 >> [ 192.312213] [] ubsan_epilogue+0x14/0x60 >> [ 192.317677] [] __ubsan_handle_divrem_overflow+0x11c/0x170 >> [ 192.324720] [] vc5_fod_round_rate+0x68/0x148 >> [ 192.330620] [] clk_calc_new_rates+0x238/0x3fc >> [ 192.336607] [] clk_calc_new_rates+0x29c/0x3fc >> [ 192.342595] [] clk_core_set_rate_nolock+0x48/0x11c >> [ 192.349019] [] clk_set_rate+0x34/0x4c >> [ 192.354307] [] rcar_du_pm_suspend+0x274/0x2f4 >> [ 192.360297] [] platform_pm_suspend+0x78/0xb8 >> [ 192.366198] [] dpm_run_callback+0x584/0xa18 >> [ 192.372010] [] __device_suspend+0x1a8/0x534 >> [ 192.377822] [] dpm_suspend+0x130/0xea0 >> [ 192.383197] [] dpm_suspend_start+0x130/0x138 >> [ 192.389099] [] suspend_devices_and_enter+0xf0/0x1778 >> [ 192.395700] [] pm_suspend+0x2408/0x245c >> [ 192.401162] [] state_store+0xf0/0x130 >> [ 192.406451] [] kobj_attr_store+0x5c/0x6c >> [ 192.412002] [] sysfs_kf_write+0xe8/0xfc >> [ 192.417466] [] kernfs_fop_write+0x22c/0x2e4 >> [ 192.423281] [] __vfs_write+0x104/0x34c >> [ 192.428656] [] vfs_write+0x134/0x2d8 >> [ 192.433857] [] SyS_write+0xbc/0x12c >> [ 192.438967] Exception stack(0xffff8006cd1cfec0 to 0xffff8006cd1d0000) >> [ 192.445480] fec0: 0000000000000001 000000001e303f00 0000000000000004 0000ffff959a5000 >> [ 192.453397] fee0: 0000000000000000 0000000155510004 0000000000000003 000000000000006d >> [ 192.461314] ff00: 0000000000000040 0000000000000000 0000ffffcc304800 0000000000000020 >> [ 192.469230] ff20: 0000000000000000 0000000000000000 0000000000000001 0000000000000008 >> [ 192.477148] ff40: 00000000004eb3b8 0000ffff958bb840 000000000000003d 0000000000000001 >> [ 192.485065] ff60: 000000001e303f00 0000ffff959a1508 0000000000000004 000000001e303f00 >> [ 192.492982] ff80: 0000000000000004 00000000004d4c68 0000000000000001 0000000000000000 >> [ 192.500899] ffa0: 000000001e30d5c0 0000ffffcc304820 0000ffff958bec64 0000ffffcc304820 >> [ 192.508816] ffc0: 0000ffff95912898 0000000020000000 0000000000000001 0000000000000040 >> [ 192.516733] ffe0: 0000000000000000 0000000000000000 0000000000000000 0000000000000000 >> [ 192.524650] [] el0_svc_naked+0x24/0x28 >> >> Signed-off-by: Steve Longerbeam >> --- >> drivers/clk/clk-versaclock5.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/clk/clk-versaclock5.c b/drivers/clk/clk-versaclock5.c >> index decffb3..113523d 100644 >> --- a/drivers/clk/clk-versaclock5.c >> +++ b/drivers/clk/clk-versaclock5.c >> @@ -509,6 +509,10 @@ static long vc5_fod_round_rate(struct clk_hw *hw, unsigned long rate, >> u32 div_int; >> u64 div_frc; >> >> + /* prevent div-by-0 */ >> + if (rate == 0) >> + return 0; >> + >> /* Determine integer part, which is 12 bit wide */ >> div_int = f_in / rate; >> /* >> > Can this actually happen ? We caught this using the Renesas 3.6.0 BSP release, when performing a suspend of rcar-du driver. The rcar_du_pm_suspend() in 3.6.0 BSP is modified from mainline version, including calling clk_set_rate() on the crtc clocks with a rate of zero. So this is not actually reproducible (yet) in mainline. Steve