Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp903669imm; Thu, 31 May 2018 11:25:59 -0700 (PDT) X-Google-Smtp-Source: ADUXVKKLzVTjyK8vsmg9IEQv3x+84/Egv6cte7uFKvqi2fgfyO7ERIW//RkYBOE1kMTAViZVMhTG X-Received: by 2002:a17:902:7008:: with SMTP id y8-v6mr7884955plk.141.1527791159608; Thu, 31 May 2018 11:25:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527791159; cv=none; d=google.com; s=arc-20160816; b=sAe9FqYL5yijq9dIEvBUBpe6fV9O3xjeyGBqolo3XnC9qfiI9dKQ6op0FIseGNI89B 0MHF/DsM4IBLgYkyKO06fUOhX00eQUgAmGkhkexE/UsDHhtzaiww/6ozlMpGLCMXF1hi UyeApDyp9th/M9wvrWO7NOg6K1rFHQQTXgvaaoownIn9vIliz5FRhQQWuJ1F0Rgn1pd9 sSz4SR5mHGOtp0XOA+ljnq0GqfSITWYd7ExhgvjfnlTffO43rux85D1I5J66pWANxM6Q edKcosZpUtj2sEdUokumRfBVhjmVKpEeY6/jcEqo8ck56fGcTFHOgyD/1tDhGwscvFsX KAGQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=jCNbjYoE0dh81mKz2paArE0+QYBEOFei2QgHyOcx8uA=; b=HwwhO8pZwybYVEnXTtF1sW2bVo0y2Otv5E/JJqSkda60b1uoTK7vRE2d9FIJ42gJCG 3MJ46CYkqr0a8HSG+txE/5YSO0UK4Jp1gvWv8qk1muHTd0/rYy2NLi6k2GtrGFAOZNUY U+Rx5x6mJlwJwI2GOWAgsUW9kmakYFkmXKshh99mBOBc83e8f4kLa/wBHu9SZmAegThP PrT+K/cWwR25P3/ucuIHXO2qgLNctGfCfFLaZy9oTLmZ4X0IcBoeZRgjds5ejySgesAc 9H9QC8qwDgXuQfsjUf/+3SKYkhM2q4lnBilk53BWHnFdbt2OZqM2WJ1JnB5DPeOXmkhD sDbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=qX2lIPko; 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 65-v6si39231650plb.301.2018.05.31.11.25.44; Thu, 31 May 2018 11:25:59 -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=qX2lIPko; 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 S1755974AbeEaSYJ (ORCPT + 99 others); Thu, 31 May 2018 14:24:09 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:32882 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755848AbeEaSYF (ORCPT ); Thu, 31 May 2018 14:24:05 -0400 Received: by mail-pl0-f68.google.com with SMTP id n10-v6so13709564plp.0; Thu, 31 May 2018 11:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=jCNbjYoE0dh81mKz2paArE0+QYBEOFei2QgHyOcx8uA=; b=qX2lIPko9e12cSFQ0HeSo6+M54sCv3aHgbutS57Yds//xIwvVcIozhWDKLYEypCnRU bea+xP/efRK6ogq8STIp//X7uf9oNSM7KL0vppQbpX/ncOIPb3lBhWxISNt3KFWAbSXK ybO/UXEo+bl0nlIO8c8LRy2tdx5nZWr9UuM21WJBaAB8+AgS5oemGhZdUa230mTWDwQD mh2FiLZq0spCtT6ToOcEYfnBAl622rdl6TcxVy5jKj8PrRmSikZp5PRlM/7nYCvAtbXc eI4JHOhbnh7sJNHvIGQa64RmacQIwvrcx4fOZ79JZGzEhNsX4ExE+kI2Ve2rDbOGCVgX jtbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=jCNbjYoE0dh81mKz2paArE0+QYBEOFei2QgHyOcx8uA=; b=SqYIJms2Hd2KcTGZnT/n98P+QmFyG/mUFh196GTW0lHklpqL8ILA6fk0xgjkV2pMoS QbsYIdobDCZb+ItYh5idIobCaU4bxUYfYv45X1AMT7wOQXfew0/4Dr+RcANXBASMIBkQ 6KhRXsHFN8gD1U6wEZ/zGWT9RMCXqLpaxbQFVEyHdrEmQn/a8DM+u/FFT+qshNfpVYvo 3/4P8HwgdGsd7aWvziJR2eu+h1ywaFX8oUGTSEQqOjpiwrikq86qkKnRNMbIIVa4LMXT GDqmAOVlL1aYxrPE617PYG26RNxpAr3eIjt61OP25uIqP23TcL3AR6eIT1Eb7KwTpmcw ZEOA== X-Gm-Message-State: ALKqPwecLaaHSssvevqC+VXx1yFCV451kM/Y2bW4xp4/EWvCAJxqANOK lWku/sezD7LmvQDDrcNwv/M= X-Received: by 2002:a17:902:bb84:: with SMTP id m4-v6mr7887331pls.339.1527791044876; Thu, 31 May 2018 11:24:04 -0700 (PDT) Received: from mappy.world.mentorg.com (c-24-5-209-231.hsd1.ca.comcast.net. [24.5.209.231]) by smtp.googlemail.com with ESMTPSA id f17-v6sm49015708pgt.71.2018.05.31.11.24.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 31 May 2018 11:24:04 -0700 (PDT) From: Steve Longerbeam X-Google-Original-From: Steve Longerbeam To: Marek Vasut , Michael Turquette , Stephen Boyd Cc: linux-clk@vger.kernel.org, linux-kernel@vger.kernel.org, Steve Longerbeam Subject: [PATCH] clk: vc5: Fix div-by-0 when rounding a rate of zero Date: Thu, 31 May 2018 11:23:56 -0700 Message-Id: <1527791036-11251-1-git-send-email-steve_longerbeam@mentor.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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; /* -- 2.7.4