Received: by 2002:a25:c593:0:0:0:0:0 with SMTP id v141csp6421168ybe; Wed, 18 Sep 2019 03:14:12 -0700 (PDT) X-Google-Smtp-Source: APXvYqyb7fOiPKaZIHQT6hcZsFga+GsJo2GSTbOcF9+2b7B0sZTLOxZ59oXIQxQDrCDyzfzK16eZ X-Received: by 2002:a05:6402:1f4:: with SMTP id i20mr9387471edy.137.1568801652425; Wed, 18 Sep 2019 03:14:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1568801652; cv=none; d=google.com; s=arc-20160816; b=fMVsA16kUv9TrTnSK1BUsi05ngMwDKWv8uzKOFASvO22PI6A9uRVCKd6D/RD5wUROB Zrm6b/zinvY9hfti+VQlwlq0vQDoa6IqFcyZiXOmdCgYwxWZTRte+hyaUCRGf+XT3E1N +DMpl7YJ/FSqjvCd/92pOoB69mNOxzpFlBCke6VkbwZa2dKyR4VwpPsyQ1Hxx2Yvdrp7 BIl6CyCB/xgJn8yo2F3B0XwOvsm1iKoyaL+ShEQ0AvJRmhymRAVe1idM1Kxi24rOwO4u TVOpD4WeEzKwxHTkNvpgs4EERoLvSD0nNCfOdyJazdUPVL3wIgW9uilNgZ5JfkZTna0y g4JA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=j8GDS5NyEBfolyfJ6dHZQ6KPe8qKEx9HBQfoxQ39cCc=; b=cyIKhj6pUgND31kxrCsgxlRsVsHk/oj1dcX9GkI30MDcZDC2dmfTiuc+faUfC0kpgm gnF3eV+VnyXNRlz3MseFMh1sg9qJt2iGhHPZv6P1CO+VXgg1RIJtoezdT3FB+uPbWTMZ XEaGGV6Saj3HQwjMxjBlpgkq0KWzOh6qpDUmXCXEhBX5t1/OibZZhKTiS834dt6TQ/gK SqCmmwvV7nAHv3fxRwcXEOk+M+CD1mNgb6oCubuI2MHH92NpIA2j7YEORFR269CQdSV5 h6dBUKpO/UAJ3VaoxV7iBrcvuvHa3IeXmApsjdv4d8obrtumFY3879MEw+p9QDofHyjI zBag== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u8si2328913ejo.287.2019.09.18.03.13.48; Wed, 18 Sep 2019 03:14:12 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729482AbfIRKMB (ORCPT + 99 others); Wed, 18 Sep 2019 06:12:01 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:44519 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728672AbfIRKMB (ORCPT ); Wed, 18 Sep 2019 06:12:01 -0400 Received: from 1.general.cking.uk.vpn ([10.172.193.212] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1iAWwG-0002Zr-Ek; Wed, 18 Sep 2019 10:11:56 +0000 From: Colin King To: Robin van der Gracht , Oleksij Rempel , Pengutronix Kernel Team , Oliver Hartkopp , Marc Kleine-Budde , "David S . Miller" , linux-can@vger.kernel.org, netdev@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next] can: fix resource leak of skb on error return paths Date: Wed, 18 Sep 2019 11:11:56 +0100 Message-Id: <20190918101156.24370-1-colin.king@canonical.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Colin Ian King Currently the error return paths do not free skb and this results in a memory leak. Fix this by freeing them before the return. Addresses-Coverity: ("Resource leak") Fixes: 9d71dd0c7009 ("can: add support of SAE J1939 protocol") Signed-off-by: Colin Ian King --- net/can/j1939/socket.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/net/can/j1939/socket.c b/net/can/j1939/socket.c index 37c1040bcb9c..5c6eabcb5df1 100644 --- a/net/can/j1939/socket.c +++ b/net/can/j1939/socket.c @@ -909,8 +909,10 @@ void j1939_sk_errqueue(struct j1939_session *session, memset(serr, 0, sizeof(*serr)); switch (type) { case J1939_ERRQUEUE_ACK: - if (!(sk->sk_tsflags & SOF_TIMESTAMPING_TX_ACK)) + if (!(sk->sk_tsflags & SOF_TIMESTAMPING_TX_ACK)) { + kfree_skb(skb); return; + } serr->ee.ee_errno = ENOMSG; serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING; @@ -918,8 +920,10 @@ void j1939_sk_errqueue(struct j1939_session *session, state = "ACK"; break; case J1939_ERRQUEUE_SCHED: - if (!(sk->sk_tsflags & SOF_TIMESTAMPING_TX_SCHED)) + if (!(sk->sk_tsflags & SOF_TIMESTAMPING_TX_SCHED)) { + kfree_skb(skb); return; + } serr->ee.ee_errno = ENOMSG; serr->ee.ee_origin = SO_EE_ORIGIN_TIMESTAMPING; -- 2.20.1