From patchwork Fri Mar 8 04:03:31 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 1053357 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=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="vD5nGOji"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44Fv4Z1PzCz9s7h for ; Fri, 8 Mar 2019 15:03:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726329AbfCHEDk (ORCPT ); Thu, 7 Mar 2019 23:03:40 -0500 Received: from mail-pg1-f195.google.com ([209.85.215.195]:35950 "EHLO mail-pg1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726319AbfCHEDj (ORCPT ); Thu, 7 Mar 2019 23:03:39 -0500 Received: by mail-pg1-f195.google.com with SMTP id r124so13032433pgr.3 for ; Thu, 07 Mar 2019 20:03:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=5McwMXAUJCm+lKK9/e8r7hfwxDBzKNEgLX1UpYf7K3s=; b=vD5nGOjiIvlJGhVmUGd4tIhbD5i06+dOMCAvQ+Ey1zSWbWcGXlRHSU0SRDsgiJEQfK dC7c3WaV347jKZfR/wZWNEB6uptwiyrXcDOvWmyEvvefTTiWw9Hi/SQkBai9h6mxF9vz qgvTxESFOaH4Cksi9AzBkMuR+6g0Al5cUVamTywzaBbHx3U8GZf5Yb4Z/V43zKND4Z0P yaU3mq4YS/xYXYky+KyOTT3DdHk5CmsuKflBsRvRT4ZAA2j2ESFYHWXi+NReOFRMIECT VKSxw9sO4m1hZgg9xgMvOE3Ko1FYVxi9+Hh/v/2ywgz0Up3ut1ttf30KDbBI7PzkV6kp HVeg== 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=5McwMXAUJCm+lKK9/e8r7hfwxDBzKNEgLX1UpYf7K3s=; b=MSZfPHFL1EnVwBjXxfns1h6JsoAspokTpwnVCeIf0k2MebTnd23yjuP4jjPfsWI9hG RJ1LSfbtTI10xv7/YW36uCWhBCNLNIHF344Ra25Aw+qUEC/gDIo1PgUxJJOZpG7HM0lX JDPpwziIMmQ1w4Wnt59W2G42alFw+kR4l791fnEhYTCZm34uB8cx/INhwhYUVg/Yp85t 5B4mzaBcTmVDgcJ6mH7+CFo3fnZOhYgYiguX/B3fhwdeyLv7Ccw2RC12sF4nnZoKXTJw sZq422qkWX+H27ZzKc8PIcvCrRoThUI/VXGRRO8+hrIljQYP8QCWVaQxIUidX+alt+6n 8Yeg== X-Gm-Message-State: APjAAAWM4cxqEL8VvRocLKtKiVVYAfgARb7gMO1irsmVDmGXVuuvkjkd bO7TX6amCkt+E3Z29tR++v32WXjWcTwLuw== X-Google-Smtp-Source: APXvYqwr1zf5eQz2Hf/K7liisL4Mg+QQDeBCwt/JfkZHoqK/SAKu67M4t/CExnNdSUa7Sr4M0w/r4Q== X-Received: by 2002:aa7:8a0a:: with SMTP id m10mr16258975pfa.129.1552017818949; Thu, 07 Mar 2019 20:03:38 -0800 (PST) Received: from localhost.localdomain ([2601:647:4203:d720::1]) by smtp.gmail.com with ESMTPSA id n6sm8616847pfa.3.2019.03.07.20.03.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 07 Mar 2019 20:03:38 -0800 (PST) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Yonghong Song Cc: netdev@vger.kernel.org, "Nikita V . Shirokov" Subject: [PATCH v2 bpf]: libbpf: fixing leak when kernel does not support btf Date: Fri, 8 Mar 2019 04:03:31 +0000 Message-Id: <20190308040331.18774-1-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.17.1 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org we could end up in situation when we have object file w/ all btf info but kernel does not support btf yet. in this situation currently libbpf just set obj->btf to NULL w/o freeing it first. this patch if fixing it by making sure to run btf__free first v1->v2: - adding netdev to cc Signed-off-by: Nikita V. Shirokov --- tools/lib/bpf/libbpf.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index f5eb60379c8d..d5b830d60601 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -838,6 +838,8 @@ static int bpf_object__elf_collect(struct bpf_object *obj, int flags) if (IS_ERR(obj->btf) || btf__load(obj->btf)) { pr_warning("Error loading ELF section %s: %ld. Ignored and continue.\n", BTF_ELF_SEC, PTR_ERR(obj->btf)); + if (!IS_ERR(obj->btf)) + btf__free(obj->btf); obj->btf = NULL; } } else if (strcmp(name, BTF_EXT_ELF_SEC) == 0) {