net/tap: fix eBPF file descriptors leakage
authorOphir Munk <ophirmu@mellanox.com>
Tue, 30 Jan 2018 16:00:28 +0000 (16:00 +0000)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 31 Jan 2018 19:57:29 +0000 (20:57 +0100)
commitda8841a71346e6d4032b1273d09951370d1d8392
tree163c2fb286df23e46b8ca1c7c33c454278cb920a
parente6acdc77382111f5944e24efe569038e22077838
net/tap: fix eBPF file descriptors leakage

When a user creates an RSS rule, the tap PMD dynamically allocates
a 'flow' data structure, and uploads BPF programs (represented by file
descriptors) to the kernel.
The kernel might reject the rule (due to filters overlap, for example)
in which case, flow memory should be freed and BPF file descriptors
should be closed.
In the corrupted code there were scenarios where BPF file descriptors
were not closed.
The fix is to add a new function - tap_flow_free(), which will make sure
to always close BPF file descriptors before freeing the flow allocated
memory.

Fixes: 036d721a8229 ("net/tap: implement RSS using eBPF")

Signed-off-by: Ophir Munk <ophirmu@mellanox.com>
Acked-by: Pascal Mazon <pascal.mazon@6wind.com>
drivers/net/tap/tap_flow.c