mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-09 22:50:41 +00:00
net: filter: fix possible memory leak in __sk_prepare_filter()
__sk_prepare_filter() was reworked in commit bd4cf0ed3 (net: filter: rework/optimize internal BPF interpreter's instruction set) so that it should have uncharged memory once things went wrong. However that work isn't complete. Error is handled only in __sk_migrate_filter() while memory can still leak in the error path right after sk_chk_filter(). Fixes: bd4cf0ed331a ("net: filter: rework/optimize internal BPF interpreter's instruction set") Signed-off-by: Leon Yu <chianglungyu@gmail.com> Acked-by: Alexei Starovoitov <ast@plumgrid.com> Tested-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3aab01d800
commit
418c96ac15
@ -1559,8 +1559,13 @@ static struct sk_filter *__sk_prepare_filter(struct sk_filter *fp,
|
||||
fp->jited = 0;
|
||||
|
||||
err = sk_chk_filter(fp->insns, fp->len);
|
||||
if (err)
|
||||
if (err) {
|
||||
if (sk != NULL)
|
||||
sk_filter_uncharge(sk, fp);
|
||||
else
|
||||
kfree(fp);
|
||||
return ERR_PTR(err);
|
||||
}
|
||||
|
||||
/* Probe if we can JIT compile the filter and if so, do
|
||||
* the compilation of the filter.
|
||||
|
Loading…
x
Reference in New Issue
Block a user