Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc3b8ae9 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Daniel Borkmann
Browse files

bpf: avoid -Wmaybe-uninitialized warning



The stack_map_get_build_id_offset() function is too long for gcc to track
whether 'work' may or may not be initialized at the end of it, leading
to a false-positive warning:

kernel/bpf/stackmap.c: In function 'stack_map_get_build_id_offset':
kernel/bpf/stackmap.c:334:13: error: 'work' may be used uninitialized in this function [-Werror=maybe-uninitialized]

This removes the 'in_nmi_ctx' flag and uses the state of that variable
itself to see if it got initialized.

Fixes: bae77c5e ("bpf: enable stackmap with build_id in nmi context")
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Acked-by: default avatarSong Liu <songliubraving@fb.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 53c8036c
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -285,11 +285,10 @@ static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs,
{
	int i;
	struct vm_area_struct *vma;
	bool in_nmi_ctx = in_nmi();
	bool irq_work_busy = false;
	struct stack_map_irq_work *work;
	struct stack_map_irq_work *work = NULL;

	if (in_nmi_ctx) {
	if (in_nmi()) {
		work = this_cpu_ptr(&up_read_work);
		if (work->irq_work.flags & IRQ_WORK_BUSY)
			/* cannot queue more up_read, fallback */
@@ -328,7 +327,7 @@ static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs,
		id_offs[i].status = BPF_STACK_BUILD_ID_VALID;
	}

	if (!in_nmi_ctx) {
	if (!work) {
		up_read(&current->mm->mmap_sem);
	} else {
		work->sem = &current->mm->mmap_sem;