Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp711108ybg; Wed, 23 Oct 2019 04:53:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqzyYmeBOwHqMdPD6xMFgoV11tDy+qXEviX2bx67YULNvHcGlJbWMcyKm+FjuZjaZBsY4nwy X-Received: by 2002:a17:906:f258:: with SMTP id gy24mr33150701ejb.25.1571831602926; Wed, 23 Oct 2019 04:53:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571831602; cv=none; d=google.com; s=arc-20160816; b=Kfc+u5LjI8o7cBo49l0GB+F+aoXkbrAPqve5kbAtGVBNWU1AN6zbvTgtpb2nfAMUpe ORTZTEuFfrFfS8EYIdDRu4+uQnb5q9393JZRnZg4OroN93O2JQFuphOwWN0B/eDijUnd HRA1MmnTaWsV5fhkjDQh983myozpeJ5i84JBY6OSP9MquTKaUibRC3oSI+g1TewJtzUq Mg8VUhYhe7U7j4pww+yodGl9kDtILc+J699G611A5FlGel5zuYSeO779YeaimMGskVYl DQfRPOr+OLfSnkR28K/oZc57aTJQNUwXX7rkmBAb6C+CzXvz7dzDdEYjnme91H5UcHE5 6YQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature; bh=8s5Hu4KyRljjB6EbA5uq0pBLzHLqE6KU1oX4tmploss=; b=biFuwcXuvFWQiDyw+6/XCuajf5jbV+wy2NbioUAmO5CMyksPKfKLT8gVpjZz/dRcdi qQjXl8slku2leo49OP9owvQ2mi5QFT06Mu1fZIzTXhMLWBlysjYda8LOEL9xwIu/O7+L SZGLCqtJJa9TryLMeKvvXoq1eNwrfjD06nfr2eMYoVA3n6Le79F9V4XQO/WDDbnhOM2m /+sBMLFdCPW6nb4rK2my8yqQggfcgz1x2RxV43ExJm7dR7AmEe2o63xlvnoj8b582DIp lGi5x3Z5aw2ki3fTphNHI/+Zoa5+GxXHeqGQoR8A202wS0u5vUndrqCbJmIzlDxpmaRf b0lw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=u1Lus7UD; 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 qc28si2770685ejb.175.2019.10.23.04.52.47; Wed, 23 Oct 2019 04:53:22 -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=u1Lus7UD; 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 S1732471AbfJWErt (ORCPT + 99 others); Wed, 23 Oct 2019 00:47:49 -0400 Received: from mail-io1-f65.google.com ([209.85.166.65]:45888 "EHLO mail-io1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732261AbfJWErs (ORCPT ); Wed, 23 Oct 2019 00:47:48 -0400 Received: by mail-io1-f65.google.com with SMTP id c25so23260116iot.12 for ; Tue, 22 Oct 2019 21:47:48 -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:in-reply-to:references; bh=8s5Hu4KyRljjB6EbA5uq0pBLzHLqE6KU1oX4tmploss=; b=u1Lus7UDOm+SKfnoGFsmG4wfwjvs5p3bXbMjvCxR7fedthqKhDjCwwriDAqYJFE4bM Znl+41N+UHVA5B3MkXhRLKrrzW9vu9PPQnUX1h5i/06G4J6HtV4y37L1z6vVr6qQGNoe X2D2eaC14k6KgoNDvg/ldAJZbULZADk2Hc14X0yooUdVwleGQa7xcfuJdMyS301ttxdW UvAWlIll6fRjY/igwPTJk8U1K82ovfELMBORqGZW2o/Op0bMN5eYKAaI1VXmzvRBtPT4 PTWn7HXSJly/B1DTQ21bSumX+9/qGVfQLKxwQ2CPzKjx3ZmF5JmzJsrhe4K5s87bpIfO B2Sg== 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:in-reply-to :references; bh=8s5Hu4KyRljjB6EbA5uq0pBLzHLqE6KU1oX4tmploss=; b=Op3euRmAmjkpqBfZ9SQz852O8sTyza6foy79mRweRukeKFNVK11C11Z8jV+pSffoAu 6EKBZniqL3vM4N67DCJwvyigppAYmseXZOo5URj2FxPavDR536Rz/EoS2hgiUptTX3dv VKOMj1eCIXMe9jCcb8qrC836yt/xBWGoZDR8A2puZ8A98DFgPvqcu1KJAJteZQiY9yBr RLQT4s0BG+vOpx2qFehPOLVRecnshE1nJxLq4BoBTLk3AFw2Wv4T1rSbmKL4u1FUtX0p womJNYLBD9rxVF4Scl8/3gxXsJIF5CRucuh8uGlRNhIOuflCLd/4jfVIPhidWojHBAbg GL6Q== X-Gm-Message-State: APjAAAUK6i9oz3DqlDNoE87RK1f7NzR69GL2VK1k2/JRzr/ovNFjIPp6 cbiK+aEtAyKpEd87GWr2lck= X-Received: by 2002:a6b:510f:: with SMTP id f15mr1393656iob.116.1571806067822; Tue, 22 Oct 2019 21:47:47 -0700 (PDT) Received: from cs-dulles.cs.umn.edu (cs-dulles.cs.umn.edu. [128.101.35.54]) by smtp.googlemail.com with ESMTPSA id k22sm3049563iom.38.2019.10.22.21.47.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 22 Oct 2019 21:47:47 -0700 (PDT) From: Navid Emamdoost To: michal.simek@xilinx.com Cc: emamd001@umn.edu, smccaman@umn.edu, kjlu@umn.edu, Markus.Elfring@web.de, Navid Emamdoost , Daniel Lezcano , Thomas Gleixner , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH] clocksource/drivers: Fix error handling in ttc_setup_clocksource Date: Tue, 22 Oct 2019 23:47:36 -0500 Message-Id: <20191023044737.2824-1-navid.emamdoost@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <2a6cdb63-397b-280a-7379-740e8f43ddf6@xilinx.com> References: <2a6cdb63-397b-280a-7379-740e8f43ddf6@xilinx.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In the implementation of ttc_setup_clocksource() when clk_notifier_register() fails the execution should go to error handling. Additionally, to avoid memory leak the allocated memory for ttccs should be released, too. So, goto error handling to release the memory and return. Fixes: e932900a3279 ("arm: zynq: Use standard timer binding") Signed-off-by: Navid Emamdoost --- drivers/clocksource/timer-cadence-ttc.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/drivers/clocksource/timer-cadence-ttc.c b/drivers/clocksource/timer-cadence-ttc.c index 88fe2e9ba9a3..035e16bc17d3 100644 --- a/drivers/clocksource/timer-cadence-ttc.c +++ b/drivers/clocksource/timer-cadence-ttc.c @@ -328,10 +328,8 @@ static int __init ttc_setup_clocksource(struct clk *clk, void __iomem *base, ttccs->ttc.clk = clk; err = clk_prepare_enable(ttccs->ttc.clk); - if (err) { - kfree(ttccs); - return err; - } + if (err) + goto release_ttccs; ttccs->ttc.freq = clk_get_rate(ttccs->ttc.clk); @@ -341,8 +339,10 @@ static int __init ttc_setup_clocksource(struct clk *clk, void __iomem *base, err = clk_notifier_register(ttccs->ttc.clk, &ttccs->ttc.clk_rate_change_nb); - if (err) + if (err) { pr_warn("Unable to register clock notifier.\n"); + goto release_ttccs; + } ttccs->ttc.base_addr = base; ttccs->cs.name = "ttc_clocksource"; @@ -363,16 +363,18 @@ static int __init ttc_setup_clocksource(struct clk *clk, void __iomem *base, ttccs->ttc.base_addr + TTC_CNT_CNTRL_OFFSET); err = clocksource_register_hz(&ttccs->cs, ttccs->ttc.freq / PRESCALE); - if (err) { - kfree(ttccs); - return err; - } + if (err) + goto release_ttccs; ttc_sched_clock_val_reg = base + TTC_COUNT_VAL_OFFSET; sched_clock_register(ttc_sched_clock_read, timer_width, ttccs->ttc.freq / PRESCALE); return 0; + +release_ttccs: + kfree(ttccs); + return err; } static int ttc_rate_change_clockevent_cb(struct notifier_block *nb, -- 2.17.1