• Jinjie Ruan's avatar
    net: microchip: vcap api: Fix memory leaks in vcap_api_encode_rule_test() · 217a3d98
    Jinjie Ruan authored
    Commit a3c1e451 ("net: microchip: vcap: Fix use-after-free error in
    kunit test") fixed the use-after-free error, but introduced below
    memory leaks by removing necessary vcap_free_rule(), add it to fix it.
    
    	unreferenced object 0xffffff80ca58b700 (size 192):
    	  comm "kunit_try_catch", pid 1215, jiffies 4294898264
    	  hex dump (first 32 bytes):
    	    00 12 7a 00 05 00 00 00 0a 00 00 00 64 00 00 00  ..z.........d...
    	    00 00 00 00 00 00 00 00 00 04 0b cc 80 ff ff ff  ................
    	  backtrace (crc 9c09c3fe):
    	    [<0000000052a0be73>] kmemleak_alloc+0x34/0x40
    	    [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4
    	    [<0000000040a01b8d>] vcap_alloc_rule+0x3cc/0x9c4
    	    [<000000003fe86110>] vcap_api_encode_rule_test+0x1ac/0x16b0
    	    [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac
    	    [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec
    	    [<00000000c5d82c9a>] kthread+0x2e8/0x374
    	    [<00000000f4287308>] ret_from_fork+0x10/0x20
    	unreferenced object 0xffffff80cc0b0400 (size 64):
    	  comm "kunit_try_catch", pid 1215, jiffies 4294898265
    	  hex dump (first 32 bytes):
    	    80 04 0b cc 80 ff ff ff 18 b7 58 ca 80 ff ff ff  ..........X.....
    	    39 00 00 00 02 00 00 00 06 05 04 03 02 01 ff ff  9...............
    	  backtrace (crc daf014e9):
    	    [<0000000052a0be73>] kmemleak_alloc+0x34/0x40
    	    [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4
    	    [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528
    	    [<00000000dfdb1e81>] vcap_api_encode_rule_test+0x224/0x16b0
    	    [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac
    	    [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec
    	    [<00000000c5d82c9a>] kthread+0x2e8/0x374
    	    [<00000000f4287308>] ret_from_fork+0x10/0x20
    	unreferenced object 0xffffff80cc0b0700 (size 64):
    	  comm "kunit_try_catch", pid 1215, jiffies 4294898265
    	  hex dump (first 32 bytes):
    	    80 07 0b cc 80 ff ff ff 28 b7 58 ca 80 ff ff ff  ........(.X.....
    	    3c 00 00 00 00 00 00 00 01 2f 03 b3 ec ff ff ff  <......../......
    	  backtrace (crc 8d877792):
    	    [<0000000052a0be73>] kmemleak_alloc+0x34/0x40
    	    [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4
    	    [<000000006eadfab7>] vcap_rule_add_action+0x2d0/0x52c
    	    [<00000000323475d1>] vcap_api_encode_rule_test+0x4d4/0x16b0
    	    [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac
    	    [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec
    	    [<00000000c5d82c9a>] kthread+0x2e8/0x374
    	    [<00000000f4287308>] ret_from_fork+0x10/0x20
    	unreferenced object 0xffffff80cc0b0900 (size 64):
    	  comm "kunit_try_catch", pid 1215, jiffies 4294898266
    	  hex dump (first 32 bytes):
    	    80 09 0b cc 80 ff ff ff 80 06 0b cc 80 ff ff ff  ................
    	    7d 00 00 00 01 00 00 00 00 00 00 00 ff 00 00 00  }...............
    	  backtrace (crc 34181e56):
    	    [<0000000052a0be73>] kmemleak_alloc+0x34/0x40
    	    [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4
    	    [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528
    	    [<00000000991e3564>] vcap_val_rule+0xcf0/0x13e8
    	    [<00000000fc9868e5>] vcap_api_encode_rule_test+0x678/0x16b0
    	    [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac
    	    [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec
    	    [<00000000c5d82c9a>] kthread+0x2e8/0x374
    	    [<00000000f4287308>] ret_from_fork+0x10/0x20
    	unreferenced object 0xffffff80cc0b0980 (size 64):
    	  comm "kunit_try_catch", pid 1215, jiffies 4294898266
    	  hex dump (first 32 bytes):
    	    18 b7 58 ca 80 ff ff ff 00 09 0b cc 80 ff ff ff  ..X.............
    	    67 00 00 00 00 00 00 00 01 01 74 88 c0 ff ff ff  g.........t.....
    	  backtrace (crc 275fd9be):
    	    [<0000000052a0be73>] kmemleak_alloc+0x34/0x40
    	    [<0000000043605459>] __kmalloc_cache_noprof+0x26c/0x2f4
    	    [<000000000ff63fd4>] vcap_rule_add_key+0x2cc/0x528
    	    [<000000001396a1a2>] test_add_def_fields+0xb0/0x100
    	    [<000000006e7621f0>] vcap_val_rule+0xa98/0x13e8
    	    [<00000000fc9868e5>] vcap_api_encode_rule_test+0x678/0x16b0
    	    [<00000000b3595fc4>] kunit_try_run_case+0x13c/0x3ac
    	    [<0000000010f5d2bf>] kunit_generic_run_threadfn_adapter+0x80/0xec
    	    [<00000000c5d82c9a>] kthread+0x2e8/0x374
    	    [<00000000f4287308>] ret_from_fork+0x10/0x20
    	......
    
    Cc: stable@vger.kernel.org
    Fixes: a3c1e451 ("net: microchip: vcap: Fix use-after-free error in kunit test")
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Reviewed-by: default avatarJens Emil Schulz Østergaard <jensemil.schulzostergaard@microchip.com>
    Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
    Link: https://patch.msgid.link/20241014121922.1280583-1-ruanjinjie@huawei.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    217a3d98
vcap_api_kunit.c 67.7 KB