summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorDan Carpenter <dan.carpenter@oracle.com>2019-11-04 12:15:36 +0300
committerDaniel Borkmann <daniel@iogearbox.net>2019-11-07 02:20:27 +0300
commitd0fbb51dfaa612f960519b798387be436e8f83c5 (patch)
tree70a0334af7e0f3f426222f0cb9aa935fdbc34cb6 /kernel
parent2836654a2735d3bc0479edd3ca7457d909b007ed (diff)
downloadlinux-d0fbb51dfaa612f960519b798387be436e8f83c5.tar.xz
bpf, offload: Unlock on error in bpf_offload_dev_create()
We need to drop the bpf_devs_lock on error before returning. Fixes: 9fd7c5559165 ("bpf: offload: aggregate offloads per-device") Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Jakub Kicinski <jakub.kicinski@netronome.com> Link: https://lore.kernel.org/bpf/20191104091536.GB31509@mwanda
Diffstat (limited to 'kernel')
-rw-r--r--kernel/bpf/offload.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/bpf/offload.c b/kernel/bpf/offload.c
index ba635209ae9a..5b9da0954a27 100644
--- a/kernel/bpf/offload.c
+++ b/kernel/bpf/offload.c
@@ -678,8 +678,10 @@ bpf_offload_dev_create(const struct bpf_prog_offload_ops *ops, void *priv)
down_write(&bpf_devs_lock);
if (!offdevs_inited) {
err = rhashtable_init(&offdevs, &offdevs_params);
- if (err)
+ if (err) {
+ up_write(&bpf_devs_lock);
return ERR_PTR(err);
+ }
offdevs_inited = true;
}
up_write(&bpf_devs_lock);