[PATCH 1/3] fib6: fix temporary tbl8 for byte-aligned prefixes

Thomas Monjalon thomas at monjalon.net
Mon Nov 2 15:00:04 CET 2026


20/10/2026 15:21, Vladimir Medvedkin:
> Currently, `install_to_dp()` builds one tbl8 level more than a route
> range needs when the range ends on a byte boundary. If the range
> spans a whole table at its first uncommon byte, e.g. a /32 or a /40,
> `build_common_root()` allocates a tbl8 one level too deep, all of
> its entries get the same next hop and `recycle_root_path()` frees it
> again. Below /24, an edge aligned on /24, e.g. of a /16, gets a tbl8 that
> `write_edge()` fills and recycles at once.
> 
> These temporary tbl8s are not covered by `rsvd_tbl8s`, which counts
> only the levels the route set keeps. With a nearly full pool, an add
> that passed the reservation check runs out of tbl8s in the middle of the
> install, the tbl8 already linked into the dataplane is leaked and a later
> add that fits is refused. A /32 can not be added to a pool of one tbl8,
> nor deleted from a full pool.
> 
> Fix it by not building these levels.
> 
> Bugzilla ID: 1970
> Fixes: c3e12e0f0354 ("fib: add dataplane algorithm for IPv6")
> Cc: stable at dpdk.org
> 
> Reported-by: Maxime Leroy <maxime at leroys.fr>
> Signed-off-by: Vladimir Medvedkin <vladimir.medvedkin at intel.com>

Series applies, thanks.





More information about the stable mailing list