linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Jules Irenge <jbi.octave@gmail.com>,
	Alexei Starovoitov <ast@kernel.org>
Subject: [PATCH 6.0 16/17] bpf: Fix resetting logic for unreferenced kptrs
Date: Mon, 10 Oct 2022 09:04:39 +0200	[thread overview]
Message-ID: <20221010070330.697203665@linuxfoundation.org> (raw)
In-Reply-To: <20221010070330.159911806@linuxfoundation.org>

From: Jules Irenge <jbi.octave@gmail.com>

commit 9fad7fe5b29803584c7f17a2abe6c2936fec6828 upstream.

Sparse reported a warning at bpf_map_free_kptrs()
"warning: Using plain integer as NULL pointer"
During the process of fixing this warning, it was discovered that the current
code erroneously writes to the pointer variable instead of deferencing and
writing to the actual kptr. Hence, Sparse tool accidentally helped to uncover
this problem. Fix this by doing WRITE_ONCE(*p, 0) instead of WRITE_ONCE(p, 0).

Note that the effect of this bug is that unreferenced kptrs will not be cleared
during check_and_free_fields. It is not a problem if the clearing is not done
during map_free stage, as there is nothing to free for them.

Fixes: 14a324f6a67e ("bpf: Wire up freeing of referenced kptr")
Signed-off-by: Jules Irenge <jbi.octave@gmail.com>
Link: https://lore.kernel.org/r/Yxi3pJaK6UDjVJSy@playground
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 kernel/bpf/syscall.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -598,7 +598,7 @@ void bpf_map_free_kptrs(struct bpf_map *
 		if (off_desc->type == BPF_KPTR_UNREF) {
 			u64 *p = (u64 *)btf_id_ptr;
 
-			WRITE_ONCE(p, 0);
+			WRITE_ONCE(*p, 0);
 			continue;
 		}
 		old_ptr = xchg(btf_id_ptr, 0);



  parent reply	other threads:[~2022-10-10  7:05 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-10  7:04 [PATCH 6.0 00/17] 6.0.1-rc1 review Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 01/17] xsk: Inherit need_wakeup flag for shared sockets Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 02/17] fs: fix UAF/GPF bug in nilfs_mdt_destroy Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 03/17] [brown paperbag] fix coredump breakage Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 04/17] sparc: Unbreak the build Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 05/17] Makefile.extrawarn: Move -Wcast-function-type-strict to W=1 Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 06/17] hardening: Remove Clangs enable flag for -ftrivial-auto-var-init=zero Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 07/17] docs: update mediator information in CoC docs Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 08/17] hwmon: (aquacomputer_d5next) Fix Quadro fan speed offsets Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 09/17] usb: mon: make mmapped memory read only Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 10/17] USB: serial: ftdi_sio: fix 300 bps rate for SIO Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 11/17] gpiolib: acpi: Add support to ignore programming an interrupt Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 12/17] gpiolib: acpi: Add a quirk for Asus UM325UAZ Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 13/17] RISC-V: Print SSTC in canonical order Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 14/17] bpf: Gate dynptr API behind CAP_BPF Greg Kroah-Hartman
2022-10-10  7:04 ` [PATCH 6.0 15/17] net: ethernet: mtk_eth_soc: fix state in __mtk_foe_entry_clear Greg Kroah-Hartman
2022-10-10  7:04 ` Greg Kroah-Hartman [this message]
2022-10-10  7:04 ` [PATCH 6.0 17/17] Bluetooth: use hdev->workqueue when queuing hdev->{cmd,ncmd}_timer works Greg Kroah-Hartman
2022-10-10  7:43 ` [PATCH 6.0 00/17] 6.0.1-rc1 review Luna Jernberg
2022-10-12  9:04   ` Pavel Machek
2022-10-12  9:13     ` Luna Jernberg
2022-10-10 14:03 ` Fenil Jain
2022-10-10 15:41 ` Naresh Kamboju
2022-10-10 17:07 ` Justin Forbes
2022-10-10 19:13 ` Florian Fainelli
2022-10-10 21:26 ` Shuah Khan
2022-10-11  0:59 ` Zan Aziz
2022-10-11  2:43 ` Slade Watkins
2022-10-11  3:18 ` Guenter Roeck
2022-10-11  8:10 ` Rudi Heitbaum
2022-10-11  8:58 ` Bagas Sanjaya
2022-10-11 16:12 ` Jon Hunter
2022-10-11 20:35 ` Sudip Mukherjee (Codethink)
2022-10-12  0:25 ` Ron Economos

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221010070330.697203665@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=ast@kernel.org \
    --cc=jbi.octave@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).