Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13335616ybl; Sun, 29 Dec 2019 09:33:25 -0800 (PST) X-Google-Smtp-Source: APXvYqwLgN0aeNHEJS1II+bnFDnyOEwebJrA6CnhEGUCjZw6+8QjVNED9FWpUe/iUM8OUlD8TyNH X-Received: by 2002:a9d:5c1:: with SMTP id 59mr70665601otd.192.1577640805924; Sun, 29 Dec 2019 09:33:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577640805; cv=none; d=google.com; s=arc-20160816; b=y4SsJ5ksW+4/INR4CzqcISoiPVLZEKD8Y3ZjrikxIMIziwf05S9ELdFhEQDx2OZeT0 cIsUDI8foLvG14J+RyxX/oZWeFNqfBTrDXvoM/XYQSi0oGQh4BBZeTiKeosjAM/aoXCG 0SCbKw9ZvviafPPHoYXn7lTyFHpL/8KSFmWtwdmIGs7Z9FKjdjGLhfR7+t22D+ZYnv3W MfXXdf54vsow1VWEROxycq1l/VcVgT/9NkzDB59u1zQjYp7a1xKezngYBQR9PZtkoFeJ 38DUrs/8/In29Y3JS1ssn9Uct79VjOi83b4CkfAG7oTGp0Dbb+JGBY1JWhecG8CJeqvN Bh0A== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=Yx4OEd3VZD06lK9LuskBRmir8mBYvTkZnBLzSWzPLAI=; b=wWMevmoPhbmy+q3pM7vLaYlLaeLA1pPOabD5ije7ix2oS7gFzxIV9inVysOoP8T9Yf kK0/HKRlVIzAZEiSD931zyLY6ofXW+H2RCzR686tsa9T/jC6ohq2XVNTURD3aXnGx4IS 5E7mAtKwn+HVuYBlW6B6souqCKUldYdh+CmgKPm9jBHzI2s8Se1dNnAI2qQ7mywn/BJx /Evvjf0WisWDMh+DHLxjbcDfwtzHs86niMtasllvdWSqtA+N3EmODgs+Dplg77C5DNQF TTiD/Lci1RgrFLHildsH8TibjUcsIC3gxoA51LPHCPJcZBZF7eoZAVSvl/BlhTvINB7q umzA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Jl7pYeCM; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w5si22044946otq.238.2019.12.29.09.33.14; Sun, 29 Dec 2019 09:33:25 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=Jl7pYeCM; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728564AbfL2RcF (ORCPT + 99 others); Sun, 29 Dec 2019 12:32:05 -0500 Received: from mail.kernel.org ([198.145.29.99]:60112 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729234AbfL2RcB (ORCPT ); Sun, 29 Dec 2019 12:32:01 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C6E1A21D7E; Sun, 29 Dec 2019 17:32:00 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640721; bh=b2lAYCsdQxVm++sV8rB0j0PrTWG0XRnBQ7ixlh3Ihrs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Jl7pYeCMzbDfZODgx4uHRlFOJZmHTKqfkRzubDsDP4Mb4p1yDPM+vcVVpMRIX49F7 PoX60Tgf6bGTmFMZElIDBhXjCUrIcxjbkZJpHd67AkW7jXRwtM+vkvUlQdActGpvot V7d4CygIo94gFSvt+VjbbdzU8UQLN+ovg+mY8bos= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , Alexei Starovoitov , Andrii Nakryiko , Sasha Levin Subject: [PATCH 4.19 111/219] libbpf: Fix error handling in bpf_map__reuse_fd() Date: Sun, 29 Dec 2019 18:18:33 +0100 Message-Id: <20191229162525.365128942@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162508.458551679@linuxfoundation.org> References: <20191229162508.458551679@linuxfoundation.org> User-Agent: quilt/0.66 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: Toke Høiland-Jørgensen [ Upstream commit d1b4574a4b86565325ef2e545eda8dfc9aa07c60 ] bpf_map__reuse_fd() was calling close() in the error path before returning an error value based on errno. However, close can change errno, so that can lead to potentially misleading error messages. Instead, explicitly store errno in the err variable before each goto. Signed-off-by: Toke Høiland-Jørgensen Signed-off-by: Alexei Starovoitov Acked-by: Andrii Nakryiko Link: https://lore.kernel.org/bpf/157269297769.394725.12634985106772698611.stgit@toke.dk Signed-off-by: Sasha Levin --- tools/lib/bpf/libbpf.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c index a62be78fc07b..249fa8d7376e 100644 --- a/tools/lib/bpf/libbpf.c +++ b/tools/lib/bpf/libbpf.c @@ -1073,16 +1073,22 @@ int bpf_map__reuse_fd(struct bpf_map *map, int fd) return -errno; new_fd = open("/", O_RDONLY | O_CLOEXEC); - if (new_fd < 0) + if (new_fd < 0) { + err = -errno; goto err_free_new_name; + } new_fd = dup3(fd, new_fd, O_CLOEXEC); - if (new_fd < 0) + if (new_fd < 0) { + err = -errno; goto err_close_new_fd; + } err = zclose(map->fd); - if (err) + if (err) { + err = -errno; goto err_close_new_fd; + } free(map->name); map->fd = new_fd; @@ -1101,7 +1107,7 @@ err_close_new_fd: close(new_fd); err_free_new_name: free(new_name); - return -errno; + return err; } static int -- 2.20.1