From patchwork Sun May 20 13:08:57 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mathieu Xhonneux X-Patchwork-Id: 917129 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="eB25gbi6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40pfLK4ynLz9s3x for ; Sun, 20 May 2018 21:09:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751029AbeETLJH (ORCPT ); Sun, 20 May 2018 07:09:07 -0400 Received: from mail-wm0-f67.google.com ([74.125.82.67]:36330 "EHLO mail-wm0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750895AbeETLJG (ORCPT ); Sun, 20 May 2018 07:09:06 -0400 Received: by mail-wm0-f67.google.com with SMTP id n10-v6so21989218wmc.1 for ; Sun, 20 May 2018 04:09:05 -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=XpXj0ED8Tc7SU6rPk/11QULAP6SbgA+dLMt292iVKqI=; b=eB25gbi6v6fzFK9+QiHlECwhiyxPZqMMrM0PzS8nnICNQsgsmcTv0yVI1lMYHOkMVC uy5IYkR5k8sQ47buEnw9Lx4V/PCpdgoT3d83okOJJSTOaA20abLlducbjvw1gRoAiTQu 8MaOr2OpDSZfzGWR5ls/5tMdtyZ39xr5hIMkz51qLI+G5Bm7QjxYw4KIfROfnk03TTCD RuIMDi02+emcu+eiMzuYo5V9U/8Iwm3rqivlW/BKB4zSCI6YvN4PYLR1K7/KmMbqyn02 bAYwGu4Da8A5JnGu18Po339xk3CEh7+fkewKsL0bKSwNLokYfo1r47yDvAyw0zPYZdy2 W02w== 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=XpXj0ED8Tc7SU6rPk/11QULAP6SbgA+dLMt292iVKqI=; b=Kh4lF+EaL9gem5A6pXUQYZ1sMgfh2OZp8E/zzROGn+NGQ0ItaFkrJf//S6Mf3Hmd/R jBtc/THEIWLO9R7toBJsKFx5KFaKIfIyYn+pcw9FXCj/KTRftcG+vorqHgycKWWoXl4D pZh9pdlbBEhKvwPELfTHYeGCATzgEmQx0uI7K77GiktQRagjZrATzOgFGa955t1Mn+bm AVjIgsNvCoOxA+aU/l0DVmvfUGwYbrY+0SeakO8ZkJYhj20Uxe22udCMpzmvWzU2LCc0 TNrsvWbKDx368V9RTZfgD4sXfclIDko1nsmgtS9tcHD+vwiE8CM2oqwCwKYUFuKMa3VG pLpA== X-Gm-Message-State: ALKqPwcjJdb1eFTjss4JWDfj+TXrjFYjARosG9jDgRARPQilc2pUlegs KSPDcPntSh496Enxwm1zjwS3ig== X-Google-Smtp-Source: AB8JxZo/UrAcVRK37hVUIBC5ZWSDdulQPs2ebxeXIiidDCmhF5fgcZ5Jzj4db1TRvUbT3+94EotzTA== X-Received: by 2002:a50:fc0c:: with SMTP id i12-v6mr19135626edr.74.1526814545128; Sun, 20 May 2018 04:09:05 -0700 (PDT) Received: from trondheim.voo.be ([2a02:2788:7d4:17f1:3322:3b09:5c0a:74bb]) by smtp.googlemail.com with ESMTPSA id g7-v6sm5861234edf.90.2018.05.20.04.09.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 20 May 2018 04:09:04 -0700 (PDT) From: Mathieu Xhonneux To: netdev@vger.kernel.org Cc: daniel@iogearbox.net, alexei.starovoitov@gmail.com Subject: [PATCH] bpf: fix mem leak in error path of lwt bpf setup Date: Sun, 20 May 2018 14:08:57 +0100 Message-Id: <20180520130857.1278-1-m.xhonneux@gmail.com> X-Mailer: git-send-email 2.16.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In bpf_parse_prog, if bpf_prog_get_type fails, the function is immediately terminated without freeing the previously allocated prog->name. This patch adds a kfree before the return. Signed-off-by: Mathieu Xhonneux --- net/core/lwt_bpf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/core/lwt_bpf.c b/net/core/lwt_bpf.c index e7e626fb87bb..e142a7a32e46 100644 --- a/net/core/lwt_bpf.c +++ b/net/core/lwt_bpf.c @@ -223,8 +223,10 @@ static int bpf_parse_prog(struct nlattr *attr, struct bpf_lwt_prog *prog, fd = nla_get_u32(tb[LWT_BPF_PROG_FD]); p = bpf_prog_get_type(fd, type); - if (IS_ERR(p)) + if (IS_ERR(p)) { + kfree(prog->name); return PTR_ERR(p); + } prog->prog = p;