From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.5 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6A06C432C2 for ; Wed, 25 Sep 2019 23:04:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 99EBA21D7E for ; Wed, 25 Sep 2019 23:04:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="rGI5rPEV" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730797AbfIYXEZ (ORCPT ); Wed, 25 Sep 2019 19:04:25 -0400 Received: from mail-io1-f67.google.com ([209.85.166.67]:44554 "EHLO mail-io1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726206AbfIYXEZ (ORCPT ); Wed, 25 Sep 2019 19:04:25 -0400 Received: by mail-io1-f67.google.com with SMTP id j4so1256661iog.11; Wed, 25 Sep 2019 16:04:24 -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=HPeGGcQkwDZoIbx5ihbpL7zXBF5pHk94wt6ftwYDWM0=; b=rGI5rPEVpuUosM8L21N6Vw1ruIQDuRWtlpYz8o8Di4LEwQhHLwaBeMRY13l84KqOw7 8of4c7Xs8Kpndx7zZZvU1SU1aXkzjYI0IS3sK5X7hpAVr+bv2VUNwDQW7+qYFotggjGO UjMMk55FloQxab5Ua8sOB6/t30Pnxgksbp90hLPlNX1D03ZAwQ0pDdQLNjBNNj7ujGvx /T/J/70lLY2nQG/cbrkfGbwuzFzGcMMkZV+BUTVT+xCdX//RYQTsv26WlV2+mvuIXvEr EV08UFYht8DIymg8cq/n3eZjBrAee+46H/6Yo663b/2iPye/gWRPvC3zaDa8l4NjcvUc GdXw== 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=HPeGGcQkwDZoIbx5ihbpL7zXBF5pHk94wt6ftwYDWM0=; b=Nrfj7Q5TWqN+JXRRet2NQknYTVvV8dLvORXuyVBZyidLOpjDxP3sz8ta7MmRza5S7t nvlK8j6OuYGT0DustAYwS62+FOW9RL12ONILGpAlKkIHhJeIc0OQtTL4yzk5GCNUWOVb Q2rmObfvQatGImSN+QXA7Cq9YuwJ07MNaRqHEWTdgHJX+YbnsW3jJJLGHBa2ZT4+/TgG 39fNsPJiskF7LG6xEqXBmc4mqS311jybkGNj0qmXKVbHf15d2CBVHt0GDO529MsKNFuo leMbhm9dbwZFhc6WD7LzsfgT8maaK+CSakgcjRyAeFkE3IwDuFqYjUB4ytWw5Q+MOb0v PQmg== X-Gm-Message-State: APjAAAWybpbupDTSHzirUJJbBLTKYHHZLqvhOVl6GKZlCTQUXaIAehQi 18NCH0M5WFzLj4nzxKanXB8= X-Google-Smtp-Source: APXvYqyFN2qSCFDaAmyrOpJE2dX1zjYW9wVObb8wgz2k/1xxJSPjf9JL1Edo0wCVYEJk+/wfMwWB7A== X-Received: by 2002:a05:6638:294:: with SMTP id c20mr811214jaq.77.1569452664394; Wed, 25 Sep 2019 16:04:24 -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 t9sm63420iop.86.2019.09.25.16.04.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Sep 2019 16:04:23 -0700 (PDT) From: Navid Emamdoost Cc: emamd001@umn.edu, smccaman@umn.edu, kjlu@umn.edu, Navid Emamdoost , "David S. Miller" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] net: qrtr: fix memory leak in qrtr_tun_read_iter Date: Wed, 25 Sep 2019 18:04:13 -0500 Message-Id: <20190925230416.20126-1-navid.emamdoost@gmail.com> X-Mailer: git-send-email 2.17.1 To: unlisted-recipients:; (no To-header on input) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In qrtr_tun_read_iter we need an error handling path to appropriately release skb in cases of error. Signed-off-by: Navid Emamdoost --- net/qrtr/tun.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/net/qrtr/tun.c b/net/qrtr/tun.c index e35869e81766..0f6e6d1d2901 100644 --- a/net/qrtr/tun.c +++ b/net/qrtr/tun.c @@ -54,19 +54,24 @@ static ssize_t qrtr_tun_read_iter(struct kiocb *iocb, struct iov_iter *to) int count; while (!(skb = skb_dequeue(&tun->queue))) { - if (filp->f_flags & O_NONBLOCK) - return -EAGAIN; + if (filp->f_flags & O_NONBLOCK) { + count = -EAGAIN; + goto out; + } /* Wait until we get data or the endpoint goes away */ if (wait_event_interruptible(tun->readq, - !skb_queue_empty(&tun->queue))) - return -ERESTARTSYS; + !skb_queue_empty(&tun->queue))) { + count = -ERESTARTSYS; + goto out; + } } count = min_t(size_t, iov_iter_count(to), skb->len); if (copy_to_iter(skb->data, count, to) != count) count = -EFAULT; +out: kfree_skb(skb); return count; -- 2.17.1