From patchwork Fri Jun 9 08:57:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Walter Harms X-Patchwork-Id: 13273524 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A1374C7EE2E for ; Fri, 9 Jun 2023 09:06:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cbbVB+HF3t/gwGJFuoIVDOz6SZbE9pWcaaqI1+jTnGY=; b=0Kgx5FG46kU+LL A3zXZcN5td8CAq96eNg63n81ptRFLk3Nio6dbmIGWlpoMB3H/S8/YkA2p0pBXTezg8JqV5XwIAE93 JBibAHlbESHhyGZb3SBMaspP/Nwa6pvMR6iJR/hkTOgmrzaa9yDrX3k+mQgbJZA4CcRN6Xt2bO6UY XsW4V1RG5FY65xs/bdMOqVqQdgxRG7hw7k8M6GR5auP2sU25PdCeZQ6atRTN3ulmjB/JfoOTp+cJz AqINgDgMn5Ax1Mok5Uq0uVllhG8I+OuA7ZU7yyAi58Id5qM3CgKYO3+A7xyC1NR/zxeejv7Bnj+om NFM1aAM8irp8V1of70LQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1q7Y4Y-00CM1P-1C; Fri, 09 Jun 2023 09:06:18 +0000 Received: from mx01-sz.bfs.de ([194.94.69.67] helo=mx02-sz.bfs.de) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1q7Y4U-00CM07-27 for linux-arm-kernel@lists.infradead.org; Fri, 09 Jun 2023 09:06:16 +0000 Received: from SRVEX01-MUC.bfs.intern (unknown [10.161.90.31]) by mx02-sz.bfs.de (Postfix) with ESMTPS id D93582035C; Fri, 9 Jun 2023 10:57:14 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bfs.de; s=dkim201901; t=1686301034; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MQL6Xx7tBCSJf4MPKoKnpIlIJILrgf9XX+dLjaTtw4c=; b=Sr5UmuMUh1u2zY3oY4r+zC7ZXH+xVGLoYr30Y8ctLEWaupUXos8aN2M7p11/6rcs1nM+n9 x3LFAmIvl/Xlr1xwT8K50mUcHAOzFod0qnDceplCNOEFCbM/Xl+zIjQxyh+yA8SvwKIPYY DDpAnvRIyIjBXEeauBv+dUANrhxlFJrkSUja5wTbTNmfhClty2ieSoZo7UEl5WZrbML9os VL4Z21GwnHJASLXa5HHawZ/bS7YVEtZBnQNssypPUMhamEl8kHC8/l62fQBqihB2ll3IX/ X29mOmfV3N4zYsfGnf71N++3Vx0XcFsWFDaZ3MQvaAo1MKD3tm+nSbQum8os0A== Authentication-Results: mx02-sz.bfs.de; none Received: from SRVEX01-MUC.bfs.intern (10.161.90.31) by SRVEX01-MUC.bfs.intern (10.161.90.31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Fri, 9 Jun 2023 10:57:14 +0200 Received: from SRVEX01-MUC.bfs.intern ([fe80::e8ba:5ab1:557f:4aad]) by SRVEX01-MUC.bfs.intern ([fe80::e8ba:5ab1:557f:4aad%5]) with mapi id 15.01.2507.023; Fri, 9 Jun 2023 10:57:14 +0200 From: Walter Harms To: Christophe JAILLET , Krzysztof Kozlowski , Alim Akhtar , "Greg Kroah-Hartman" , Jiri Slaby , Thomas Abraham , "Kukjin Kim" CC: "linux-kernel@vger.kernel.org" , "kernel-janitors@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-samsung-soc@vger.kernel.org" , "linux-serial@vger.kernel.org" Subject: AW: [PATCH 2/2] tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk Thread-Topic: [PATCH 2/2] tty: serial: samsung_tty: Fix a memory leak in s3c24xx_serial_getclk() when iterating clk Thread-Index: AQHZmo1JZHtkpWXz3Ey2tC0FGDzZt6+CJSbA Date: Fri, 9 Jun 2023 08:57:14 +0000 Message-ID: References: ,<93bf8f574310256fcea50e5c5a62b5c37e20bb14.1686285892.git.christophe.jaillet@wanadoo.fr> In-Reply-To: <93bf8f574310256fcea50e5c5a62b5c37e20bb14.1686285892.git.christophe.jaillet@wanadoo.fr> Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.177.128.48] MIME-Version: 1.0 X-Spamd-Result: default: False [-18.00 / 7.00]; WHITELIST_LOCAL_IP(-15.00)[10.161.90.31]; BAYES_HAM(-3.00)[99.98%]; MIME_GOOD(-0.10)[text/plain]; RCVD_NO_TLS_LAST(0.10)[]; MIME_TRACE(0.00)[0:+]; RCVD_COUNT_TWO(0.00)[2]; FROM_EQ_ENVFROM(0.00)[]; NEURAL_HAM(-0.00)[-1.000]; FREEMAIL_TO(0.00)[wanadoo.fr,linaro.org,samsung.com,linuxfoundation.org,kernel.org]; MID_RHS_MATCH_FROM(0.00)[]; RCPT_COUNT_TWELVE(0.00)[12]; FREEMAIL_ENVRCPT(0.00)[wanadoo.fr]; HAS_XOIP(0.00)[]; TO_DN_EQ_ADDR_SOME(0.00)[]; DKIM_SIGNED(0.00)[bfs.de:s=dkim201901]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; TO_DN_SOME(0.00)[]; ARC_NA(0.00)[] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230609_020614_991499_3CB3FEBB X-CRM114-Status: GOOD ( 18.28 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org while we are here .... perhaps INT_MAX from kernel.h ? int deviation = (1 << 30) - 1; the part before looks a bit strange if (ourport->info->has_divslot) { unsigned long div = rate / req_baud; /* The UDIVSLOT register on the newer UARTs allows us to * get a divisor adjustment of 1/16th on the baud clock. * * We don't keep the UDIVSLOT value (the 16ths we * calculated by not multiplying the baud by 16) as it * is easy enough to recalculate. */ quot = div / 16; baud = rate / div; because baud=rate/rate/req_baud = req_baud can this be simplyfied ? (or is the numeric required ?) Homebrew abs() kernel.h has a abs() can we use it here ? if (calc_deviation < 0) calc_deviation = -calc_deviation; to the patch: + /* + * If we find a better clk, release the previous one, if + * any. + */ + if (!IS_ERR(*best_clk)) + clk_put(*best_clk); the intentions are good. *best_clk is user supplied (and should be NULL) filled & released in the next round but IMHO must be valid (is clk). so no need to check. (ntl clk_put seems to handle NULL and ERR ) if (!clk || WARN_ON_ONCE(IS_ERR(clk))) return; JM2C wh diff --git a/drivers/tty/serial/samsung_tty.c b/drivers/tty/serial/samsung_tty.c index dd751e7010e3..c07877dd25fa 100644 --- a/drivers/tty/serial/samsung_tty.c +++ b/drivers/tty/serial/samsung_tty.c @@ -1488,10 +1488,18 @@ static unsigned int s3c24xx_serial_getclk(struct s3c24xx_uart_port *ourport, calc_deviation = -calc_deviation; if (calc_deviation < deviation) { + /* + * If we find a better clk, release the previous one, if + * any. + */ + if (!IS_ERR(*best_clk)) + clk_put(*best_clk); *best_clk = clk; best_quot = quot; *clk_num = cnt; deviation = calc_deviation; + } else { + clk_put(clk); } }