Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp333486pxb; Mon, 16 Aug 2021 06:32:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxur587z4RQXC2ZvqJCg3h9YnU5IEHk8DObBjlaOBTM46p6wjDBcZ0DSA8/ymy2VrUMm/PW X-Received: by 2002:a17:906:551:: with SMTP id k17mr16122032eja.391.1629120749710; Mon, 16 Aug 2021 06:32:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629120749; cv=none; d=google.com; s=arc-20160816; b=baaaNP+gcKPAsZEgnyFrLpjnbo2rN4tdBTtiXN20VbTNCf4AVi2u6LwyczKZdrzfae siq6Fns6ANq4XdrVJZCON8NOCNzuG6uoBXa9cN6k5c3bjRcs7r3X7o5/1zeqaQYjjE0q CwfBR0AE2CWQXn4FsRsbh7qgFmjEZ/6SMAq1ScKF2OtuC4uwNUXrEoYWPWUl6cBe6dvl 1w7Kuuuz4OmZdz8yj3V3fe0ogN87wXNIqYlD3cI4UDtaIXY3xp/9yuii47LJr/xna+zx C3EUnBd3lkRLL07xET41Lbi42VL5Cc+FwM5ojaJZGUgHU9AzD+E8SOnkQSMgj/Ei7zLq IAoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=2E0sqFP5GzCkClv9VBXS8uLM8kraPfZ40Gj9Qf2Nvz8=; b=xQHA4x+/C9Af381+Qw70pdNZdSLDraS1UzIU9Ea9jJMSex0fXy6s+eUuzSptxgYJ2F Y8dKh+n4Sssq99eCLhg6tFbmTpjc4PZOgwPPRNKOq0JWf/i7LZpsDiDxFphPd1gaopE8 toHGHy+k1gA/YxI3BBPdA78pjcOQTKJfvP52CIwmiJpkue4277CPJuY6fipNaivft2Af 9gpaw0M315eSwbJtEFXnyrnkPQOw+/0zy9LxeHGmkBO6Me0NERo8Abu/QvztbEDKVZHk g0DbH/OOX3O9hu9Cu2YwX5ZsuSwhrzhTGsnMjj1Pbt75nd55NjvFuEIJ7VTez+k8qjMu +9mA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wwt8LDpn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gf2si11807768ejb.500.2021.08.16.06.32.06; Mon, 16 Aug 2021 06:32:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=wwt8LDpn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239009AbhHPN07 (ORCPT + 99 others); Mon, 16 Aug 2021 09:26:59 -0400 Received: from mail.kernel.org ([198.145.29.99]:39406 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240392AbhHPNQp (ORCPT ); Mon, 16 Aug 2021 09:16:45 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 454F4632F5; Mon, 16 Aug 2021 13:13:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1629119619; bh=AFSoulhYUMNVBK6Gyldb72HJbX4q6DqARrNVCvnHzeo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=wwt8LDpn8i0zvaYSvPh3mjGtLa0uKN8mOmQev0DphN0W6hUTSFwGLUZNJ85twM050 MX51eo7BLvKArAu4s4GYqVikhoPc/+QNArF6X69lXoDs5j0U2cH981ekKYQ1crg3YL C0zYd1D4Fy2LueCJz/BVOROnu47oZxxwk81MSNH8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Daniel Xu , Andrii Nakryiko , Daniel Borkmann , Yonghong Song , Sasha Levin Subject: [PATCH 5.13 063/151] libbpf: Do not close un-owned FD 0 on errors Date: Mon, 16 Aug 2021 15:01:33 +0200 Message-Id: <20210816125446.143295347@linuxfoundation.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210816125444.082226187@linuxfoundation.org> References: <20210816125444.082226187@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Daniel Xu [ Upstream commit c34c338a40e4f3b6f80889cd17fd9281784d1c32 ] Before this patch, btf_new() was liable to close an arbitrary FD 0 if BTF parsing failed. This was because: * btf->fd was initialized to 0 through the calloc() * btf__free() (in the `done` label) closed any FDs >= 0 * btf->fd is left at 0 if parsing fails This issue was discovered on a system using libbpf v0.3 (without BTF_KIND_FLOAT support) but with a kernel that had BTF_KIND_FLOAT types in BTF. Thus, parsing fails. While this patch technically doesn't fix any issues b/c upstream libbpf has BTF_KIND_FLOAT support, it'll help prevent issues in the future if more BTF types are added. It also allow the fix to be backported to older libbpf's. Fixes: 3289959b97ca ("libbpf: Support BTF loading and raw data output in both endianness") Signed-off-by: Daniel Xu Signed-off-by: Andrii Nakryiko Signed-off-by: Daniel Borkmann Acked-by: Yonghong Song Link: https://lore.kernel.org/bpf/5969bb991adedb03c6ae93e051fd2a00d293cf25.1627513670.git.dxu@dxuuu.xyz Signed-off-by: Sasha Levin --- tools/lib/bpf/btf.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/lib/bpf/btf.c b/tools/lib/bpf/btf.c index d57e13a13798..1d9e5b35524c 100644 --- a/tools/lib/bpf/btf.c +++ b/tools/lib/bpf/btf.c @@ -805,6 +805,7 @@ static struct btf *btf_new(const void *data, __u32 size, struct btf *base_btf) btf->nr_types = 0; btf->start_id = 1; btf->start_str_off = 0; + btf->fd = -1; if (base_btf) { btf->base_btf = base_btf; @@ -833,8 +834,6 @@ static struct btf *btf_new(const void *data, __u32 size, struct btf *base_btf) if (err) goto done; - btf->fd = -1; - done: if (err) { btf__free(btf); -- 2.30.2