diff options
author | Pavel Tvrdik <pawel.tvrdik@gmail.com> | 2016-09-06 17:08:45 +0200 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-09-15 15:57:51 +0200 |
commit | a290da25a16b7c79d4a7a87f522b4068bca04979 (patch) | |
tree | c11f401192d57553db7f1da17f42f01d225d2194 /sysdep/unix | |
parent | bc00f058154bb4a630d24d64a55b5f181d235c63 (diff) |
rt-table: Fix kernel protocol export filter memory bug
Kernel protocol calls rt_export_merged(), which used @rte_update_pool for
temporary allocations, supposing it is called from other functions from
rt-table.c that handles locking and flushing of the linpool. Therefore,
linpool was not flushed properly and memory leaked.
Add linpool argument to rt_export_merged() and use @krt_filter_lp when
called from kernel protocol.
Thanks to Justin Cattle and Alexander Frolkin for the bugreport.
(Commit squashed and updated by Ondrej Zajicek)
Diffstat (limited to 'sysdep/unix')
-rw-r--r-- | sysdep/unix/krt.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c index f5dee877..ef98cb3a 100644 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@ -613,7 +613,7 @@ krt_export_net(struct krt_proto *p, net *net, rte **rt_free, ea_list **tmpa) rte *rt; if (p->p.accept_ra_types == RA_MERGED) - return rt_export_merged(ah, net, rt_free, tmpa, 1); + return rt_export_merged(ah, net, rt_free, tmpa, krt_filter_lp, 1); rt = net->routes; *rt_free = NULL; |