On Thu, Mar 24, 2022 at 6:32 PM Ilya Maximets <[email protected]> wrote: > > On 3/24/22 05:17, Wentao Jia wrote: > > > > > > on destroy flow table instance, referenced flow mask may be released > > too. fuction ovs_flow_tbl_destroy(), release flow mask first and then > > destroy flow table instance. this will trigger kernel panic on detroy > > datapath > > > > > > [ 377.647756] kernel BUG at .../datapath/linux/flow_table.c:272! > > [ 377.653794] invalid opcode: 0000 [#1] SMP PTI > > [ 377.666827] RIP: 0010:table_instance_flow_free.isra.7+0x148/0x150 > > [ 377.711465] Call Trace: > > [ 377.715238] <IRQ> > > [ 377.718964] table_instance_destroy+0xbe/0x160 [openvswitch] > > [ 377.722793] destroy_dp_rcu+0x12/0x40 [openvswitch] > > [ 377.726651] rcu_process_callbacks+0x297/0x460 > > [ 377.736795] __do_softirq+0xe3/0x30a > > [ 377.740654] ? ktime_get+0x36/0xa0 > > [ 377.744490] irq_exit+0x100/0x110 > > [ 377.748514] smp_apic_timer_interrupt+0x74/0x140 > > [ 377.752817] apic_timer_interrupt+0xf/0x20 > > [ 377.758802] </IRQ> > > > > > > Fixes: 6d1cf7f3e ("datapath: fix possible memleak on destroy > > flow-table") for linux upstream, fix tag: Fixes: 50b0e61b32ee ("net: openvswitch: fix possible memleak on destroy flow-table") > > > > Signed-off-by: Wentao Jia <[email protected]> > > Signed-off-by: Chuanjie Zeng <[email protected]> > > --- > > Hi, Wentao Jia. Thanks for the patch! > > Please, send it to the mainline linux kernel ('netdev' mailing list, > keeping the ovs-dev in CC) using the linux kernel process for > submitting patches. > > When it is accepted to the upstream kernel, it can be backported to > the OOT kernel module in OVS repository. > > Best regards, Ilya Maximets. > > > datapath/flow_table.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/datapath/flow_table.c b/datapath/flow_table.c > > index 650338fb0..b2f4b1108 100644 > > --- a/datapath/flow_table.c > > +++ b/datapath/flow_table.c > > @@ -415,8 +415,8 @@ void ovs_flow_tbl_destroy(struct flow_table *table) > > struct table_instance *ufid_ti = > > rcu_dereference_raw(table->ufid_ti); > > > > > > free_percpu(table->mask_cache); > > - kfree(rcu_dereference_raw(table->mask_array)); > > table_instance_destroy(table, ti, ufid_ti, false); > > + kfree(rcu_dereference_raw(table->mask_array)); > > } >
-- Best regards, Tonghao _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
