• Jinjie Ruan's avatar
    net: microchip: sparx5: Fix possible memory leaks in vcap_api_kunit · 2a2dffd9
    Jinjie Ruan authored
    Inject fault while probing kunit-example-test.ko, the duprule which
    is allocated by kzalloc in vcap_dup_rule() of
    test_vcap_xn_rule_creator() is not freed, and it cause the memory leaks
    below. Use vcap_del_rule() to free them as other functions do it.
    
    unreferenced object 0xffff6eb4846f6180 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895522 (age 880.004s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 0a 00 00 00 f4 01 00 00  .'..............
        00 00 00 00 00 00 00 00 98 61 6f 84 b4 6e ff ff  .........ao..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000d2ac4ccb>] vcap_api_rule_insert_in_order_test+0xa4/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f6240 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 90 01 00 00  .'..............
        00 00 00 00 00 00 00 00 58 62 6f 84 b4 6e ff ff  ........Xbo..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<0000000052e6ad35>] vcap_api_rule_insert_in_order_test+0xbc/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f6300 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 879.996s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 18 63 6f 84 b4 6e ff ff  .........co..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<000000001b0895d4>] vcap_api_rule_insert_in_order_test+0xd4/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4846f63c0 (size 192):
      comm "kunit_try_catch", pid 405, jiffies 4294895524 (age 880.012s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
        00 00 00 00 00 00 00 00 d8 63 6f 84 b4 6e ff ff  .........co..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000134c151f>] vcap_api_rule_insert_in_order_test+0xec/0x114
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc180 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 14 00 00 00 c8 00 00 00  .'..............
        00 00 00 00 00 00 00 00 98 c1 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000fa5f64d3>] vcap_api_rule_insert_reverse_order_test+0xc8/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc240 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 58 c2 5f 84 b4 6e ff ff  ........X._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000a7db42de>] vcap_api_rule_insert_reverse_order_test+0x108/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc300 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.000s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 90 01 00 00  .'......(.......
        00 00 00 00 00 00 00 00 18 c3 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000ea416c94>] vcap_api_rule_insert_reverse_order_test+0x150/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb4845fc3c0 (size 192):
      comm "kunit_try_catch", pid 407, jiffies 4294895527 (age 880.020s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 32 00 00 00 f4 01 00 00  .'......2.......
        00 00 00 00 00 00 00 00 d8 c3 5f 84 b4 6e ff ff  .........._..n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000453dcd80>] vcap_add_rule+0x134/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<00000000764a39b4>] vcap_api_rule_insert_reverse_order_test+0x198/0x600
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb484cd4240 (size 192):
      comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 1e 00 00 00 2c 01 00 00  .'..........,...
        00 00 00 00 00 00 00 00 58 42 cd 84 b4 6e ff ff  ........XB...n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<0000000023976dd4>] vcap_api_rule_remove_in_front_test+0x158/0x658
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    unreferenced object 0xffff6eb484cd4300 (size 192):
      comm "kunit_try_catch", pid 413, jiffies 4294895543 (age 879.956s)
      hex dump (first 32 bytes):
        10 27 00 00 04 00 00 00 28 00 00 00 c8 00 00 00  .'......(.......
        00 00 00 00 00 00 00 00 18 43 cd 84 b4 6e ff ff  .........C...n..
      backtrace:
        [<00000000f1b5b86e>] slab_post_alloc_hook+0xb8/0x368
        [<00000000c56cdd9a>] __kmem_cache_alloc_node+0x174/0x290
        [<0000000046ef1b64>] kmalloc_trace+0x40/0x164
        [<000000008565145b>] vcap_dup_rule+0x38/0x210
        [<00000000bd9e1f12>] vcap_add_rule+0x29c/0x32c
        [<0000000070a539b1>] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
        [<000000000b4760ff>] vcap_api_rule_remove_in_front_test+0x170/0x658
        [<000000000f88f9cb>] kunit_try_run_case+0x50/0xac
        [<00000000e848de5a>] kunit_generic_run_threadfn_adapter+0x20/0x2c
        [<0000000058a88b6b>] kthread+0x124/0x130
        [<00000000891cf28a>] ret_from_fork+0x10/0x20
    
    Fixes: dccc30cc ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
    Signed-off-by: default avatarJinjie Ruan <ruanjinjie@huawei.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    2a2dffd9
vcap_api_kunit.c 67.9 KB