summaryrefslogtreecommitdiff
path: root/kernel/bpf/syscall.c
diff options
context:
space:
mode:
authorAnay Wadhera <awadhera@berkeley.edu>2021-05-20 21:58:41 -0700
committerMichael Bestas <mkbestas@lineageos.org>2022-04-19 00:49:48 +0300
commit82e0685e29ea16d29ee0a6a8455acf6a769c9b4c (patch)
tree131be73f2db39e6d93716369ec310834809f2d20 /kernel/bpf/syscall.c
parent323182b631c37a6d6ce2d86f50bed3b9da07fae3 (diff)
Revert "bpf: fix refcnt overflow"
This reverts commit 3899251bdb9c2b31fc73d4cc132f52d3710101de. Signed-off-by: Chatur27 <jasonbright2709@gmail.com>
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r--kernel/bpf/syscall.c24
1 files changed, 4 insertions, 20 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 063c08616e1d..a2f2afdf3fd7 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -183,18 +183,11 @@ struct bpf_map *__bpf_map_get(struct fd f)
return f.file->private_data;
}
-/* prog's and map's refcnt limit */
-#define BPF_MAX_REFCNT 32768
-
-struct bpf_map *bpf_map_inc(struct bpf_map *map, bool uref)
+void bpf_map_inc(struct bpf_map *map, bool uref)
{
- if (atomic_inc_return(&map->refcnt) > BPF_MAX_REFCNT) {
- atomic_dec(&map->refcnt);
- return ERR_PTR(-EBUSY);
- }
+ atomic_inc(&map->refcnt);
if (uref)
atomic_inc(&map->usercnt);
- return map;
}
struct bpf_map *bpf_map_get_with_uref(u32 ufd)
@@ -206,7 +199,7 @@ struct bpf_map *bpf_map_get_with_uref(u32 ufd)
if (IS_ERR(map))
return map;
- map = bpf_map_inc(map, true);
+ bpf_map_inc(map, true);
fdput(f);
return map;
@@ -589,15 +582,6 @@ static struct bpf_prog *__bpf_prog_get(struct fd f)
return f.file->private_data;
}
-struct bpf_prog *bpf_prog_inc(struct bpf_prog *prog)
-{
- if (atomic_inc_return(&prog->aux->refcnt) > BPF_MAX_REFCNT) {
- atomic_dec(&prog->aux->refcnt);
- return ERR_PTR(-EBUSY);
- }
- return prog;
-}
-
/* called by sockets/tracing/seccomp before attaching program to an event
* pairs with bpf_prog_put()
*/
@@ -610,7 +594,7 @@ struct bpf_prog *bpf_prog_get(u32 ufd)
if (IS_ERR(prog))
return prog;
- prog = bpf_prog_inc(prog);
+ atomic_inc(&prog->aux->refcnt);
fdput(f);
return prog;