[Bug 256882] cc(4): Panic on DELL R630 with Chelsio T62100-SO-CR) lagg0 and vlans in VNET jails (VNET): ip_tryforward / ip_findroute
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 07 Sep 2021 21:14:02 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256882
--- Comment #21 from commit-hook@FreeBSD.org ---
A commit in branch stable/13 references this bug:
URL:
https://cgit.FreeBSD.org/src/commit/?id=5007bc4e13906104163ca78440ffcefb5c126548
commit 5007bc4e13906104163ca78440ffcefb5c126548
Author: Alexander V. Chernikov <melifaro@FreeBSD.org>
AuthorDate: 2021-08-15 22:25:21 +0000
Commit: Alexander V. Chernikov <melifaro@FreeBSD.org>
CommitDate: 2021-09-07 21:02:58 +0000
routing: Fix crashes with dpdk_lpm[46] algo.
When a prefix gets deleted from the RIB, dpdk_lpm algo needs to know
the nexthop of the "parent" prefix to update its internal state.
The glue code, which utilises RIB as a backing route store, uses
fib[46]_lookup_rt() for the prefix destination after its deletion
to fetch the desired nexthop.
This approach does not work when deleting less-specific prefixes
with most-specific ones are still present. For example, if
10.0.0.0/24, 10.0.0.0/23 and 10.0.0.0/22 exist in RIB, deleting
10.0.0.0/23 would result in 10.0.0.0/24 being returned as a search
result instead of 10.0.0.0/22. This, in turn, results in the failed
datastructure update: part of the deleted /23 prefix will still
contain the reference to an old nexthop. This leads to the
use-after-free behaviour, ending with the eventual crashes.
Fix the logic flaw by properly fetching the prefix "parent" via
newly-created rt_get_inet[6]_parent() helpers.
Differential Revision: https://reviews.freebsd.org/D31546
PR: 256882,256833
(cherry picked from commit 36e15b717eec80047fe7442898b5752101f2fbca)
sys/contrib/dpdk_rte_lpm/dpdk_lpm.c | 32 ++++----
sys/contrib/dpdk_rte_lpm/dpdk_lpm6.c | 42 +++++-----
sys/net/radix.c | 14 ++++
sys/net/radix.h | 1 +
sys/net/route/route_ctl.h | 3 +
sys/net/route/route_helpers.c | 150 +++++++++++++++++++++++++++++++++++
6 files changed, 208 insertions(+), 34 deletions(-)
--
You are receiving this mail because:
You are on the CC list for the bug.