Fix aRFS (accelerated Receive Flow Steering) structures memory leak by
adding a checker to verify if aRFS memory is already allocated while
configuring VSI. aRFS objects are allocated in two cases:
- as part of VSI initialization (at probe), and
- as part of reset handling
However, VSI reconfiguration executed during reset involves memory
allocation one more time, without prior releasing already allocated
resources. This led to the memory leak with the following signature:
[root@os-delivery ~]# cat /sys/kernel/debug/kmemleak
unreferenced object 0xff3c1ca7252e6000 (size 8192):
comm "kworker/0:0", pid 8, jiffies
4296833052
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace (crc 0):
[<
ffffffff991ec485>] __kmalloc_cache_noprof+0x275/0x340
[<
ffffffffc0a6e06a>] ice_init_arfs+0x3a/0xe0 [ice]
[<
ffffffffc09f1027>] ice_vsi_cfg_def+0x607/0x850 [ice]
[<
ffffffffc09f244b>] ice_vsi_setup+0x5b/0x130 [ice]
[<
ffffffffc09c2131>] ice_init+0x1c1/0x460 [ice]
[<
ffffffffc09c64af>] ice_probe+0x2af/0x520 [ice]
[<
ffffffff994fbcd3>] local_pci_probe+0x43/0xa0
[<
ffffffff98f07103>] work_for_cpu_fn+0x13/0x20
[<
ffffffff98f0b6d9>] process_one_work+0x179/0x390
[<
ffffffff98f0c1e9>] worker_thread+0x239/0x340
[<
ffffffff98f14abc>] kthread+0xcc/0x100
[<
ffffffff98e45a6d>] ret_from_fork+0x2d/0x50
[<
ffffffff98e083ba>] ret_from_fork_asm+0x1a/0x30
...
Fixes: 28bf26724fdb ("ice: Implement aRFS")
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>