I have the same issue, and I dump the vmcore, and find dst cache, hope it has some help. this leaked dst is in dst_busy_list, except dst_busy_list, nowhere I can find it in ============================== First case:
crash> rtable 0xffff880036fbba00 -x struct rtable { dst = { callback_head = { next = 0xffff880036fbb300, func = 0x0 }, child = 0x0, dev = 0xffff8817f15c3000, ops = 0xffffffff8191f2c0 <ipv4_dst_ops>, _metrics = 0xffffffff815ef7d1, expires = 0x0, path = 0xffff880036fbba00, from = 0x0, xfrm = 0x0, input = 0xffffffff8149f777 <dst_discard>, { output = 0xffffffff8149f762 <dst_discard_sk>, __UNIQUE_ID_rh_kabi_hide29 = { output = 0xffffffff8149f762 <dst_discard_sk> }, {<No data fields>} }, flags = 0x0, pending_confirm = 0x0, error = 0x0, obsolete = 0x2, header_len = 0x0, trailer_len = 0x0, tclassid = 0x0, __pad_to_align_refcnt = {0xe, 0x8006000000000}, __refcnt = { counter = 0x1 }, __use = 0x0, lastuse = 0x1000860b0, { next = 0xffff882fdaaa9800, rt_next = 0xffff882fdaaa9800, rt6_next = 0xffff882fdaaa9800, dn_next = 0xffff882fdaaa9800 }, rh_reserved1 = 0x2, rh_reserved2 = 0x85987845, rh_reserved3 = 0x0, rh_reserved4 = 0x0 }, rt_genid = 0x11, rt_flags = 0x80000000, rt_type = 0x2, rt_is_input = 0x1, rt_uses_gateway = 0x0, rt_iif = 0x0, rt_gateway = 0x0, rt_pmtu = 0x0, rt_uncached = { next = 0xffff880036fbbac0, prev = 0xffff880036fbbac0 } } crash> ========================= seconds case: crash> rtable ffff8807ec0d9a00 -x struct rtable { dst = { callback_head = { next = 0xffff8807ec0db900, func = 0xffffffff8119e250 <file_free_rcu> }, child = 0x0, dev = 0xffff8817ed384800, ops = 0xffffffff81b18bc0 <ipv4_dst_ops>, _metrics = 0xffffffff817ca681, expires = 0x0, path = 0xffff8807ec0d9a00, from = 0x0, xfrm = 0x0, input = 0xffffffff8162b200 <dst_discard>, { output = 0xffffffff8162b1e0 <dst_discard_sk>, __UNIQUE_ID_rh_kabi_hide29 = { output = 0xffffffff8162b1e0 <dst_discard_sk> }, {<No data fields>} }, flags = 0x6, pending_confirm = 0x0, error = 0x0, obsolete = 0x2, header_len = 0x0, trailer_len = 0x0, tclassid = 0x0, __pad_to_align_refcnt = {0xffff880f6df8fec0, 0x0}, __refcnt = { counter = 0x1 }, __use = 0x0, lastuse = 0x1fcce9056, { next = 0xffff880404f49400, rt_next = 0xffff880404f49400, rt6_next = 0xffff880404f49400, dn_next = 0xffff880404f49400 }, rh_reserved1 = 0x0, rh_reserved2 = 0x0, rh_reserved3 = 0x0, rh_reserved4 = 0x0 }, rt_genid = 0x16, rt_flags = 0x80000000, rt_type = 0x2, rt_is_input = 0x0, rt_uses_gateway = 0x0, rt_iif = 0x0, rt_gateway = 0x0, rt_pmtu = 0x0, rt_uncached = { next = 0xffff8807ec0d9ac0, prev = 0xffff8807ec0d9ac0 } } crash>
I have the same issue, and I dump the vmcore, and find dst cache, hope it has some help. ======= ======= ======= ==
this leaked dst is in dst_busy_list, except dst_busy_list, nowhere I can find it in
=======
First case:
crash> rtable 0xffff880036fbba00 -x _UNIQUE_ ID_rh_kabi_ hide29 = { to_align_ refcnt = {0xe, 0x8006000000000}, ======= ======= ==== _UNIQUE_ ID_rh_kabi_ hide29 = { to_align_ refcnt = {0xffff880f6df8 fec0, 0x0},
struct rtable {
dst = {
callback_head = {
next = 0xffff880036fbb300,
func = 0x0
},
child = 0x0,
dev = 0xffff8817f15c3000,
ops = 0xffffffff8191f2c0 <ipv4_dst_ops>,
_metrics = 0xffffffff815ef7d1,
expires = 0x0,
path = 0xffff880036fbba00,
from = 0x0,
xfrm = 0x0,
input = 0xffffffff8149f777 <dst_discard>,
{
output = 0xffffffff8149f762 <dst_discard_sk>,
_
output = 0xffffffff8149f762 <dst_discard_sk>
},
{<No data fields>}
},
flags = 0x0,
pending_confirm = 0x0,
error = 0x0,
obsolete = 0x2,
header_len = 0x0,
trailer_len = 0x0,
tclassid = 0x0,
__pad_
__refcnt = {
counter = 0x1
},
__use = 0x0,
lastuse = 0x1000860b0,
{
next = 0xffff882fdaaa9800,
rt_next = 0xffff882fdaaa9800,
rt6_next = 0xffff882fdaaa9800,
dn_next = 0xffff882fdaaa9800
},
rh_reserved1 = 0x2,
rh_reserved2 = 0x85987845,
rh_reserved3 = 0x0,
rh_reserved4 = 0x0
},
rt_genid = 0x11,
rt_flags = 0x80000000,
rt_type = 0x2,
rt_is_input = 0x1,
rt_uses_gateway = 0x0,
rt_iif = 0x0,
rt_gateway = 0x0,
rt_pmtu = 0x0,
rt_uncached = {
next = 0xffff880036fbbac0,
prev = 0xffff880036fbbac0
}
}
crash>
=======
seconds case:
crash> rtable ffff8807ec0d9a00 -x
struct rtable {
dst = {
callback_head = {
next = 0xffff8807ec0db900,
func = 0xffffffff8119e250 <file_free_rcu>
},
child = 0x0,
dev = 0xffff8817ed384800,
ops = 0xffffffff81b18bc0 <ipv4_dst_ops>,
_metrics = 0xffffffff817ca681,
expires = 0x0,
path = 0xffff8807ec0d9a00,
from = 0x0,
xfrm = 0x0,
input = 0xffffffff8162b200 <dst_discard>,
{
output = 0xffffffff8162b1e0 <dst_discard_sk>,
_
output = 0xffffffff8162b1e0 <dst_discard_sk>
},
{<No data fields>}
},
flags = 0x6,
pending_confirm = 0x0,
error = 0x0,
obsolete = 0x2,
header_len = 0x0,
trailer_len = 0x0,
tclassid = 0x0,
__pad_
__refcnt = {
counter = 0x1
},
__use = 0x0,
lastuse = 0x1fcce9056,
{
next = 0xffff880404f49400,
rt_next = 0xffff880404f49400,
rt6_next = 0xffff880404f49400,
dn_next = 0xffff880404f49400
},
rh_reserved1 = 0x0,
rh_reserved2 = 0x0,
rh_reserved3 = 0x0,
rh_reserved4 = 0x0
},
rt_genid = 0x16,
rt_flags = 0x80000000,
rt_type = 0x2,
rt_is_input = 0x0,
rt_uses_gateway = 0x0,
rt_iif = 0x0,
rt_gateway = 0x0,
rt_pmtu = 0x0,
rt_uncached = {
next = 0xffff8807ec0d9ac0,
prev = 0xffff8807ec0d9ac0
}
}
crash>