From patchwork Thu Apr 14 09:49:35 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Axel Lin X-Patchwork-Id: 610406 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3qlwr75Fjkz9s9Z for ; Thu, 14 Apr 2016 19:49:43 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=ingics-com.20150623.gappssmtp.com header.i=@ingics-com.20150623.gappssmtp.com header.b=UQHS4J5K; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751987AbcDNJtl (ORCPT ); Thu, 14 Apr 2016 05:49:41 -0400 Received: from mail-pa0-f68.google.com ([209.85.220.68]:34609 "EHLO mail-pa0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751205AbcDNJtk (ORCPT ); Thu, 14 Apr 2016 05:49:40 -0400 Received: by mail-pa0-f68.google.com with SMTP id hb4so6416498pac.1 for ; Thu, 14 Apr 2016 02:49:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ingics-com.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:mime-version :content-transfer-encoding; bh=FWjBfydbddJDtkFcxl+xi+1nH6Sk2tzxv5smpoX7nVA=; b=UQHS4J5KCG2aneUgWFGPfdx5d8kfQZsZVC9/vc9SXdm/ZpNFjK+vbiHeWc7QvOUOLD l6bJJHsV56VoH5rmfbBHskMAgnIU+ZVp041UkSapfMFUXy2vxkb0JzKsEqbRDZ7JpJeh bN1wJipVBffBSt5JA+IxrJSig4Kya2OYSIFim1Tdf5Sc4tweeFj7OnRQf2n64ekcikW3 2m64HW6MzT/gV6//ITBQhmH1u3jvtWR/lVe+aup8OY0JmTAnMuHFuh/q2vQ15G5NUJ3O BbhGJGc+n7CSEg0oFFDhptC1zfxqUoNX6qPKNJecozzT6K/YRfNal0ZMtaHygI2Rl6TM WWtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:message-id:subject:from:to:cc:date:mime-version :content-transfer-encoding; bh=FWjBfydbddJDtkFcxl+xi+1nH6Sk2tzxv5smpoX7nVA=; b=Lxub24vfcusUONHcY/GZGJiQ9/92AOKnlkT4EcKvXVWt13drLSMS8TAtfsKSagK1GY cOaRpVaE/Uiq1O+KR2Y5m9B0Zk02CMwS+QNgESS23B3hFtpuVOJb82cQaaj3FXzxSOHI vs4oc3h8DFlW/OlOp5VLVsF6dXQ3D+KrW7TWUSSrPYJY/a6BgNeNaE1bpJTU8Y7f2GSk r/4IQtVKHaHXRyw00P2wp0WDjfaMrhrTaCEnNqwcOq3VwGr8fyufJEBsA8761vZf7s6z 50QaZ322SGWnoLZ27b+4QG6JEg0tMQiUzJRPsvXkPIL6Ji1K5FWCYFRl8BnUzJ9eefUL GZ9A== X-Gm-Message-State: AOPr4FWmKh72GhFRShqsjhzUD+c2l9qMq8NOzuNQycvOF6177S9+z3Z/hs45RD7puhaHJA== X-Received: by 10.66.122.100 with SMTP id lr4mr18914933pab.99.1460627379471; Thu, 14 Apr 2016 02:49:39 -0700 (PDT) Received: from [192.168.1.168] (118-167-9-168.dynamic.hinet.net. [118.167.9.168]) by smtp.gmail.com with ESMTPSA id ch2sm56789139pad.28.2016.04.14.02.49.37 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Apr 2016 02:49:38 -0700 (PDT) Message-ID: <1460627375.17638.1.camel@ingics.com> Subject: [PATCH v2] i2c: efm32: Prevent potential division by zero From: Axel Lin To: Wolfram Sang Cc: Uwe =?ISO-8859-1?Q?Kleine-K=F6nig?= , linux-i2c@vger.kernel.org Date: Thu, 14 Apr 2016 17:49:35 +0800 X-Mailer: Evolution 3.16.5-1ubuntu3.1 Mime-Version: 1.0 Sender: linux-i2c-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-i2c@vger.kernel.org Make sure we don't OOPS in case clock-frequency is set to 0 in a DT. The variable set here is later used as a divisor. Signed-off-by: Axel Lin --- Hi Uwe, If my understand is correct, you prefer to make it return error rather than using default frequency setting if DT setting is wrong. v2: Make probe return error instead of using default frequency. drivers/i2c/busses/i2c-efm32.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/i2c/busses/i2c-efm32.c b/drivers/i2c/busses/i2c-efm32.c index 8eff627..7c0636e 100644 --- a/drivers/i2c/busses/i2c-efm32.c +++ b/drivers/i2c/busses/i2c-efm32.c @@ -395,6 +395,13 @@ static int efm32_i2c_probe(struct platform_device *pdev) frequency = 100000; dev_info(&pdev->dev, "defaulting to 100 kHz\n"); } + + if (frequency == 0) { + dev_err(&pdev->dev, "Invalid clock-frequency\n"); + ret = -EINVAL; + goto err_disable_clk; + } + ddata->frequency = frequency; rate = clk_get_rate(ddata->clk);