kni: fix possible memory leak
authorFerruh Yigit <ferruh.yigit@intel.com>
Tue, 18 Apr 2017 14:21:44 +0000 (15:21 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 20 Apr 2017 23:22:59 +0000 (01:22 +0200)
commit8eba5ebd181141f71115d01bf65fd2e9ad549210
treee6459758f6d9772874367f553a1843b6cd8a93d3
parent999b2ee0fe4511c44462b29566f264e8d9326e1b
kni: fix possible memory leak

alloc_q and rx_q fifos holds physical address of the mbufs, and not able
to free those mbufs explicitly.

But kernel thread reads from rx_q and puts used mbufs into free_q (with
their virtual addresses.) And kernel thread stopped when application
close the /dev/kni file on exit. So rx_q has time to be consumed by
kernel thread but leak is technically possible.

Another fifo, alloc_q has physical addresses too, but all those coming
from same mempool provided by application, when application quit, all
mempool already returned back, so this leak can be ignored.

Added check and wait logic for rx_q to be sure kernel consumed the fifo,
an error message printed after some ammount of wait, and an explicit
mempool free added for alloc_q.

Fixes: 8451269e6d7b ("kni: remove continuous memory restriction")
Cc: stable@dpdk.org
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_kni/rte_kni.c
lib/librte_kni/rte_kni_fifo.h