diff options
author | Borislav Petkov <bp@suse.de> | 2021-10-04 17:37:22 +0200 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2021-10-04 17:37:22 +0200 |
commit | c7419a6e1aa3219ff62045ab6e56e37d5ad2d292 (patch) | |
tree | a5145db864629e50196ba0f13e0b1c80f7d4331a /kernel/bpf/stackmap.c | |
parent | 7fae4c24a2b84a66c7be399727aca11e7a888462 (diff) | |
parent | e9d1d2bb75b2d5d4b426769c5aae0ce8cef3558f (diff) |
Merge branch x86/cc into x86/core
Pick up dependent cc_platform_has() changes.
Signed-off-by: Borislav Petkov <bp@suse.de>
Diffstat (limited to 'kernel/bpf/stackmap.c')
-rw-r--r-- | kernel/bpf/stackmap.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/kernel/bpf/stackmap.c b/kernel/bpf/stackmap.c index e8eefdf8cf3e..09a3fd97d329 100644 --- a/kernel/bpf/stackmap.c +++ b/kernel/bpf/stackmap.c @@ -179,7 +179,7 @@ static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs, * with build_id. */ if (!user || !current || !current->mm || irq_work_busy || - !mmap_read_trylock_non_owner(current->mm)) { + !mmap_read_trylock(current->mm)) { /* cannot access current->mm, fall back to ips */ for (i = 0; i < trace_nr; i++) { id_offs[i].status = BPF_STACK_BUILD_ID_IP; @@ -204,9 +204,15 @@ static void stack_map_get_build_id_offset(struct bpf_stack_build_id *id_offs, } if (!work) { - mmap_read_unlock_non_owner(current->mm); + mmap_read_unlock(current->mm); } else { work->mm = current->mm; + + /* The lock will be released once we're out of interrupt + * context. Tell lockdep that we've released it now so + * it doesn't complain that we forgot to release it. + */ + rwsem_release(¤t->mm->mmap_lock.dep_map, _RET_IP_); irq_work_queue(&work->irq_work); } } |