net: filter: fix possible memory leak in __sk_prepare_filter()
__sk_prepare_filter() was reworked in commitbd4cf0ed3
(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:bd4cf0ed33
("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…
Reference in New Issue
Block a user