Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp1323902ybl; Fri, 24 Jan 2020 21:13:48 -0800 (PST) X-Google-Smtp-Source: APXvYqwOpaclU8VEd4dAB/czrRldfzEoGGQROdlio10FdLN3zHbPhqPonM/R1KVAf1ftyC4z4e9o X-Received: by 2002:a05:6830:13d3:: with SMTP id e19mr5336130otq.135.1579929228179; Fri, 24 Jan 2020 21:13:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579929228; cv=none; d=google.com; s=arc-20160816; b=cFjCEO3m+g94ZoGt1O7cclNtPp1WI2u20jllTtyHhiPEA2p9ZTQlIIG2aDKNPFatBp 7QzCaPBGZllf5jhN5gYGI6zy55T7TcOGXdU87wQ0b5qOcAiF71sR5dbVlS7gg/FhXBtU ahmCsBbVZJOyZwcciGYQxWlgC6U+isG0wgF9CWGuiLzIbzyejIwwOOZO0uOrLIVTlY0r muEpXDziOMjcInNixNZimjQSRLee1sAi9lRu8elqBtRx5BDCHjjGFIYA4lC2ZrBrbSdo ZfgP4sLBJr7uqmv4DPLb6xpQLhabZjIF0FgY64H0k/z0STMstqDHFMT3MnFQG3KO7IkX tWUA== 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; bh=I4SiUS67rHafeLAY0jP3WSeq1NEslNf2PNyQbRkh05o=; b=vHKDWgPq0Okq800toDrg9DkmJdjIDAYLxieh5FEB6BgtzLpbDO2qaNCzdXXkkFPHm0 gHMWyCP8Dp7zH2+Oo1NySwZKQU2NsmPlFy2PbivzFrldQ+LxbO1Yi2lyTKXUGpki1Vb6 S3qnWCmHRJ0G49Kq0PyzPoVMSi8JVfXJwM8xC3Hdx51BOac1cL/4jrkhhuAM/PC1pcid m+n0Ysx3JmMWlx4BaWzYJTBBbajINGw5RmSR5eiw80MK4GY6Vw7ZmjS9V+v+lS6Tltew l3GaXiCSqJZrwwx0cI0JYn7rcXLzam5RHefGV9OT9QUTuGqpBD1H62FuIg2Fb0/av2df eW5g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x6si2725890ota.322.2020.01.24.21.13.33; Fri, 24 Jan 2020 21:13:48 -0800 (PST) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729110AbgAYFL6 (ORCPT + 99 others); Sat, 25 Jan 2020 00:11:58 -0500 Received: from mail-yb1-f195.google.com ([209.85.219.195]:35038 "EHLO mail-yb1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728449AbgAYFL5 (ORCPT ); Sat, 25 Jan 2020 00:11:57 -0500 Received: by mail-yb1-f195.google.com with SMTP id q190so2112078ybq.2; Fri, 24 Jan 2020 21:11:57 -0800 (PST) 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=I4SiUS67rHafeLAY0jP3WSeq1NEslNf2PNyQbRkh05o=; b=fjmCYgvnjJtvkyvZSIXvmvd8FjjciVXIVQj6RpU7x+gFvLFPUsz3w1tZ6usfoUxUVx 1Jxqkj0ZSJJR+XUMdd79/HMPksKgcZXOhxch7jKKSiY1NsHycYC+JFHcKUYYQlMifyNJ ajONuHjC0vvamQ96wTve/QbjLkDVv4YLxju4b6S9OUGVu37b3rM8iHHsbMTc0hNWwNO9 B9M6F86iIfdN3NJz0sTSVdGvDup154qMlUQFJusKTRUtulMjoMMS2HV93RXPS5oB/X5U cb89jAf7qxvzUr8/T/NgxPPujTr7oFcNr2v3Bjp+iLfI7cbl5/Rmbtj1qUNNiMtU2gag 7EkA== X-Gm-Message-State: APjAAAXd90P278R82ROR3Q3cC0QVIrtcdFJ5PD1DvGmV/FTVUlRaJ2RG lQWl0YSr4x0EgA1GjG9Ejbs= X-Received: by 2002:a25:cf49:: with SMTP id f70mr5555367ybg.11.1579929116743; Fri, 24 Jan 2020 21:11:56 -0800 (PST) Received: from localhost.localdomain (h198-137-20-41.xnet.uga.edu. [198.137.20.41]) by smtp.gmail.com with ESMTPSA id z12sm3276887ywl.27.2020.01.24.21.11.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2020 21:11:56 -0800 (PST) From: Wenwen Wang To: Wenwen Wang Cc: Chas Williams <3chas3@gmail.com>, linux-atm-general@lists.sourceforge.net (moderated list:ATM), netdev@vger.kernel.org (open list:ATM), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] firestream: fix memory leaks Date: Sat, 25 Jan 2020 05:11:34 +0000 Message-Id: <20200125051134.11557-1-wenwen@cs.uga.edu> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In fs_open(), 'vcc' is allocated through kmalloc() and assigned to 'atm_vcc->dev_data.' In the following execution, if there is no more free channel, the error code EBUSY will be returned. However, 'vcc' is not deallocated, leading to memory leaks. Note that, in normal cases where fs_open() returns 0, 'vcc' will be deallocated in fs_close(). But, if fs_open() fails, there is no guarantee that fs_close() will be invoked. To fix this issue, deallocate 'vcc' before EBUSY is returned. Signed-off-by: Wenwen Wang --- drivers/atm/firestream.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/atm/firestream.c b/drivers/atm/firestream.c index aad00d2b28f5..093712e34de7 100644 --- a/drivers/atm/firestream.c +++ b/drivers/atm/firestream.c @@ -912,6 +912,7 @@ static int fs_open(struct atm_vcc *atm_vcc) } if (!to) { printk ("No more free channels for FS50..\n"); + kfree(vcc); return -EBUSY; } vcc->channo = dev->channo; @@ -922,6 +923,7 @@ static int fs_open(struct atm_vcc *atm_vcc) if (((DO_DIRECTION(rxtp) && dev->atm_vccs[vcc->channo])) || ( DO_DIRECTION(txtp) && test_bit (vcc->channo, dev->tx_inuse))) { printk ("Channel is in use for FS155.\n"); + kfree(vcc); return -EBUSY; } } -- 2.17.1