summaryrefslogtreecommitdiff
path: root/sysdep/unix/krt.c
diff options
context:
space:
mode:
authorPavel Tvrdik <pawel.tvrdik@gmail.com>2016-09-06 17:08:45 +0200
committerOndrej Zajicek (work) <santiago@crfreenet.org>2016-09-15 15:57:51 +0200
commita290da25a16b7c79d4a7a87f522b4068bca04979 (patch)
treec11f401192d57553db7f1da17f42f01d225d2194 /sysdep/unix/krt.c
parentbc00f058154bb4a630d24d64a55b5f181d235c63 (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/krt.c')
-rw-r--r--sysdep/unix/krt.c2
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;