<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c, branch linux-6.18.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.</subtitle>
<id>https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-6.18.y</id>
<link rel='self' href='https://universe.0xinfinity.dev/distro/kernel/atom?h=linux-6.18.y'/>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/'/>
<updated>2024-11-25T00:52:13Z</updated>
<entry>
<title>net: microchip: vcap: Add typegroup table terminators in kunit tests</title>
<updated>2024-11-25T00:52:13Z</updated>
<author>
<name>Guenter Roeck</name>
<email>linux@roeck-us.net</email>
</author>
<published>2024-11-19T21:32:02Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=f164b296638d1eb1fb1c537e93ab5c8b49966546'/>
<id>urn:sha1:f164b296638d1eb1fb1c537e93ab5c8b49966546</id>
<content type='text'>
VCAP API unit tests fail randomly with errors such as

   # vcap_api_iterator_init_test: EXPECTATION FAILED at drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c:387
   Expected 134 + 7 == iter.offset, but
       134 + 7 == 141 (0x8d)
       iter.offset == 17214 (0x433e)
   # vcap_api_iterator_init_test: EXPECTATION FAILED at drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c:388
   Expected 5 == iter.reg_idx, but
       iter.reg_idx == 702 (0x2be)
   # vcap_api_iterator_init_test: EXPECTATION FAILED at drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c:389
   Expected 11 == iter.reg_bitpos, but
       iter.reg_bitpos == 15 (0xf)
   # vcap_api_iterator_init_test: pass:0 fail:1 skip:0 total:1

Comments in the code state that "A typegroup table ends with an all-zero
terminator". Add the missing terminators.

Some of the typegroups did have a terminator of ".offset = 0, .width = 0,
.value = 0,". Replace those terminators with "{ }" (no trailing ',') for
consistency and to excplicitly state "this is a terminator".

Fixes: 67d637516fa9 ("net: microchip: sparx5: Adding KUNIT test for the VCAP API")
Cc: Steen Hegelund &lt;steen.hegelund@microchip.com&gt;
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Reviewed-by: Daniel Machon &lt;daniel.machon@microchip.com&gt;
Reviewed-by: Jacob Keller &lt;jacob.e.keller@intel.com&gt;
Link: https://patch.msgid.link/20241119213202.2884639-1-linux@roeck-us.net
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: microchip: vcap api: Fix memory leaks in vcap_api_encode_rule_test()</title>
<updated>2024-10-16T01:39:00Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2024-10-14T12:19:22Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=217a3d98d1e9891a8b1438a27dfbc64ddf01f691'/>
<id>urn:sha1:217a3d98d1e9891a8b1438a27dfbc64ddf01f691</id>
<content type='text'>
Commit a3c1e45156ad ("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):
	    [&lt;0000000052a0be73&gt;] kmemleak_alloc+0x34/0x40
	    [&lt;0000000043605459&gt;] __kmalloc_cache_noprof+0x26c/0x2f4
	    [&lt;0000000040a01b8d&gt;] vcap_alloc_rule+0x3cc/0x9c4
	    [&lt;000000003fe86110&gt;] vcap_api_encode_rule_test+0x1ac/0x16b0
	    [&lt;00000000b3595fc4&gt;] kunit_try_run_case+0x13c/0x3ac
	    [&lt;0000000010f5d2bf&gt;] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [&lt;00000000c5d82c9a&gt;] kthread+0x2e8/0x374
	    [&lt;00000000f4287308&gt;] 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):
	    [&lt;0000000052a0be73&gt;] kmemleak_alloc+0x34/0x40
	    [&lt;0000000043605459&gt;] __kmalloc_cache_noprof+0x26c/0x2f4
	    [&lt;000000000ff63fd4&gt;] vcap_rule_add_key+0x2cc/0x528
	    [&lt;00000000dfdb1e81&gt;] vcap_api_encode_rule_test+0x224/0x16b0
	    [&lt;00000000b3595fc4&gt;] kunit_try_run_case+0x13c/0x3ac
	    [&lt;0000000010f5d2bf&gt;] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [&lt;00000000c5d82c9a&gt;] kthread+0x2e8/0x374
	    [&lt;00000000f4287308&gt;] 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  &lt;......../......
	  backtrace (crc 8d877792):
	    [&lt;0000000052a0be73&gt;] kmemleak_alloc+0x34/0x40
	    [&lt;0000000043605459&gt;] __kmalloc_cache_noprof+0x26c/0x2f4
	    [&lt;000000006eadfab7&gt;] vcap_rule_add_action+0x2d0/0x52c
	    [&lt;00000000323475d1&gt;] vcap_api_encode_rule_test+0x4d4/0x16b0
	    [&lt;00000000b3595fc4&gt;] kunit_try_run_case+0x13c/0x3ac
	    [&lt;0000000010f5d2bf&gt;] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [&lt;00000000c5d82c9a&gt;] kthread+0x2e8/0x374
	    [&lt;00000000f4287308&gt;] 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):
	    [&lt;0000000052a0be73&gt;] kmemleak_alloc+0x34/0x40
	    [&lt;0000000043605459&gt;] __kmalloc_cache_noprof+0x26c/0x2f4
	    [&lt;000000000ff63fd4&gt;] vcap_rule_add_key+0x2cc/0x528
	    [&lt;00000000991e3564&gt;] vcap_val_rule+0xcf0/0x13e8
	    [&lt;00000000fc9868e5&gt;] vcap_api_encode_rule_test+0x678/0x16b0
	    [&lt;00000000b3595fc4&gt;] kunit_try_run_case+0x13c/0x3ac
	    [&lt;0000000010f5d2bf&gt;] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [&lt;00000000c5d82c9a&gt;] kthread+0x2e8/0x374
	    [&lt;00000000f4287308&gt;] 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):
	    [&lt;0000000052a0be73&gt;] kmemleak_alloc+0x34/0x40
	    [&lt;0000000043605459&gt;] __kmalloc_cache_noprof+0x26c/0x2f4
	    [&lt;000000000ff63fd4&gt;] vcap_rule_add_key+0x2cc/0x528
	    [&lt;000000001396a1a2&gt;] test_add_def_fields+0xb0/0x100
	    [&lt;000000006e7621f0&gt;] vcap_val_rule+0xa98/0x13e8
	    [&lt;00000000fc9868e5&gt;] vcap_api_encode_rule_test+0x678/0x16b0
	    [&lt;00000000b3595fc4&gt;] kunit_try_run_case+0x13c/0x3ac
	    [&lt;0000000010f5d2bf&gt;] kunit_generic_run_threadfn_adapter+0x80/0xec
	    [&lt;00000000c5d82c9a&gt;] kthread+0x2e8/0x374
	    [&lt;00000000f4287308&gt;] ret_from_fork+0x10/0x20
	......

Cc: stable@vger.kernel.org
Fixes: a3c1e45156ad ("net: microchip: vcap: Fix use-after-free error in kunit test")
Reviewed-by: Simon Horman &lt;horms@kernel.org&gt;
Reviewed-by: Jens Emil Schulz Østergaard &lt;jensemil.schulzostergaard@microchip.com&gt;
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Link: https://patch.msgid.link/20241014121922.1280583-1-ruanjinjie@huawei.com
Signed-off-by: Jakub Kicinski &lt;kuba@kernel.org&gt;
</content>
</entry>
<entry>
<title>net: microchip: vcap: Fix use-after-free error in kunit test</title>
<updated>2024-09-02T09:35:17Z</updated>
<author>
<name>Jens Emil Schulz Østergaard</name>
<email>jensemil.schulzostergaard@microchip.com</email>
</author>
<published>2024-08-29T09:52:54Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=a3c1e45156ad39f225cd7ddae0f81230a3b1e657'/>
<id>urn:sha1:a3c1e45156ad39f225cd7ddae0f81230a3b1e657</id>
<content type='text'>
This is a clear use-after-free error. We remove it, and rely on checking
the return code of vcap_del_rule.

Reported-by: Dan Carpenter &lt;error27@gmail.com&gt;
Closes: https://lore.kernel.org/kernel-janitors/7bffefc6-219a-4f71-baa0-ad4526e5c198@kili.mountain/
Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
Signed-off-by: Jens Emil Schulz Østergaard &lt;jensemil.schulzostergaard@microchip.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: Constify struct vcap_operations</title>
<updated>2024-06-18T13:26:39Z</updated>
<author>
<name>Christophe JAILLET</name>
<email>christophe.jaillet@wanadoo.fr</email>
</author>
<published>2024-06-16T07:57:56Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=8c379e3ce404347acf35fbb4cf8694dd8d35f2a0'/>
<id>urn:sha1:8c379e3ce404347acf35fbb4cf8694dd8d35f2a0</id>
<content type='text'>
"struct vcap_operations" are not modified in these drivers.

Constifying this structure moves some data to a read-only section, so
increase overall security.

In order to do it, "struct vcap_control" also needs to be adjusted to this
new const qualifier.

As an example, on a x86_64, with allmodconfig:
Before:
======
   text	   data	    bss	    dec	    hex	filename
  15176	   1094	     16	  16286	   3f9e	drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.o

After:
=====
   text	   data	    bss	    dec	    hex	filename
  15268	    998	     16	  16282	   3f9a	drivers/net/ethernet/microchip/lan966x/lan966x_vcap_impl.o

Signed-off-by: Christophe JAILLET &lt;christophe.jaillet@wanadoo.fr&gt;
Reviewed-by: Daniel Machon &lt;daniel.machon@microchip.com&gt;
Link: https://lore.kernel.org/r/d8e76094d2e98ebb5bfc8205799b3a9db0b46220.1718524644.git.christophe.jaillet@wanadoo.fr
Signed-off-by: Paolo Abeni &lt;pabeni@redhat.com&gt;

</content>
</entry>
<entry>
<title>net: microchip: sparx5: Fix possible memory leaks in vcap_api_kunit</title>
<updated>2023-09-15T06:32:35Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2023-09-12T11:03:10Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=2a2dffd911d4139258b828b9c5056cb64b826758'/>
<id>urn:sha1:2a2dffd911d4139258b828b9c5056cb64b826758</id>
<content type='text'>
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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000d2ac4ccb&gt;] vcap_api_rule_insert_in_order_test+0xa4/0x114
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;0000000052e6ad35&gt;] vcap_api_rule_insert_in_order_test+0xbc/0x114
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;000000001b0895d4&gt;] vcap_api_rule_insert_in_order_test+0xd4/0x114
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000134c151f&gt;] vcap_api_rule_insert_in_order_test+0xec/0x114
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000fa5f64d3&gt;] vcap_api_rule_insert_reverse_order_test+0xc8/0x600
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000453dcd80&gt;] vcap_add_rule+0x134/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000a7db42de&gt;] vcap_api_rule_insert_reverse_order_test+0x108/0x600
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000453dcd80&gt;] vcap_add_rule+0x134/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000ea416c94&gt;] vcap_api_rule_insert_reverse_order_test+0x150/0x600
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000453dcd80&gt;] vcap_add_rule+0x134/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;00000000764a39b4&gt;] vcap_api_rule_insert_reverse_order_test+0x198/0x600
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;0000000023976dd4&gt;] vcap_api_rule_remove_in_front_test+0x158/0x658
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] 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:
    [&lt;00000000f1b5b86e&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000c56cdd9a&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000046ef1b64&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008565145b&gt;] vcap_dup_rule+0x38/0x210
    [&lt;00000000bd9e1f12&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000070a539b1&gt;] test_vcap_xn_rule_creator.constprop.43+0x120/0x330
    [&lt;000000000b4760ff&gt;] vcap_api_rule_remove_in_front_test+0x170/0x658
    [&lt;000000000f88f9cb&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000e848de5a&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000058a88b6b&gt;] kthread+0x124/0x130
    [&lt;00000000891cf28a&gt;] ret_from_fork+0x10/0x20

Fixes: dccc30cc4906 ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: sparx5: Fix possible memory leaks in test_vcap_xn_rule_creator()</title>
<updated>2023-09-15T06:32:35Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2023-09-12T11:03:09Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=20146fa73ab8db2ab9f4916bbaf4610646787a09'/>
<id>urn:sha1:20146fa73ab8db2ab9f4916bbaf4610646787a09</id>
<content type='text'>
Inject fault while probing kunit-example-test.ko, the rule which
is allocated by kzalloc in vcap_alloc_rule(), the field which is
allocated by kzalloc in vcap_rule_add_action() and
vcap_rule_add_key() is not freed, and it cause the memory leaks
below. Use vcap_free_rule() to free them as other drivers do it.

And since the return rule of test_vcap_xn_rule_creator() is not
used, remove it and switch to void.

unreferenced object 0xffff058383334240 (size 192):
  comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
  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 00 81 93 84 83 05 ff ff  ................
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000648fefae&gt;] vcap_alloc_rule+0x17c/0x26c
    [&lt;000000004da16164&gt;] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
    [&lt;00000000231b1097&gt;] vcap_api_rule_insert_in_order_test+0xcc/0x184
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0583849380c0 (size 64):
  comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
  hex dump (first 32 bytes):
    40 81 93 84 83 05 ff ff 68 42 33 83 83 05 ff ff  @.......hB3.....
    22 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00  "...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000ee41df9e&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000001cc1bb38&gt;] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
    [&lt;00000000231b1097&gt;] vcap_api_rule_insert_in_order_test+0xcc/0x184
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff058384938100 (size 64):
  comm "kunit_try_catch", pid 309, jiffies 4294894222 (age 639.800s)
  hex dump (first 32 bytes):
    80 81 93 84 83 05 ff ff 58 42 33 83 83 05 ff ff  ........XB3.....
    7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000043c78991&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000ba73cfbe&gt;] vcap_add_type_keyfield+0xfc/0x128
    [&lt;000000002b00f7df&gt;] vcap_val_rule+0x274/0x3e8
    [&lt;00000000e67d2ff5&gt;] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
    [&lt;00000000231b1097&gt;] vcap_api_rule_insert_in_order_test+0xcc/0x184
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20

unreferenced object 0xffff0583833b6240 (size 192):
  comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
  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 40 91 8f 84 83 05 ff ff  ........@.......
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000648fefae&gt;] vcap_alloc_rule+0x17c/0x26c
    [&lt;000000004da16164&gt;] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
    [&lt;00000000509de3f4&gt;] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0583848f9100 (size 64):
  comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
  hex dump (first 32 bytes):
    80 91 8f 84 83 05 ff ff 68 62 3b 83 83 05 ff ff  ........hb;.....
    22 00 00 00 01 00 00 00 00 00 00 00 a5 b4 ff ff  "...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000ee41df9e&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000001cc1bb38&gt;] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
    [&lt;00000000509de3f4&gt;] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0583848f9140 (size 64):
  comm "kunit_try_catch", pid 311, jiffies 4294894225 (age 639.844s)
  hex dump (first 32 bytes):
    c0 91 8f 84 83 05 ff ff 58 62 3b 83 83 05 ff ff  ........Xb;.....
    7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000043c78991&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000ba73cfbe&gt;] vcap_add_type_keyfield+0xfc/0x128
    [&lt;000000002b00f7df&gt;] vcap_val_rule+0x274/0x3e8
    [&lt;00000000e67d2ff5&gt;] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
    [&lt;00000000509de3f4&gt;] vcap_api_rule_insert_reverse_order_test+0x10c/0x654
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20

unreferenced object 0xffff05838264e0c0 (size 192):
  comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
  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 40 3a 97 84 83 05 ff ff  ........@:......
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000648fefae&gt;] vcap_alloc_rule+0x17c/0x26c
    [&lt;000000004da16164&gt;] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
    [&lt;00000000a29794d8&gt;] vcap_api_rule_remove_at_end_test+0xbc/0xb48
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff058384973a80 (size 64):
  comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.864s)
  hex dump (first 32 bytes):
    e8 e0 64 82 83 05 ff ff e8 e0 64 82 83 05 ff ff  ..d.......d.....
    22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000ee41df9e&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000001cc1bb38&gt;] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
    [&lt;00000000a29794d8&gt;] vcap_api_rule_remove_at_end_test+0xbc/0xb48
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff058384973a40 (size 64):
  comm "kunit_try_catch", pid 313, jiffies 4294894230 (age 639.880s)
  hex dump (first 32 bytes):
    80 39 97 84 83 05 ff ff d8 e0 64 82 83 05 ff ff  .9........d.....
    7d 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00  }...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000043c78991&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;0000000094335477&gt;] vcap_add_type_keyfield+0xbc/0x128
    [&lt;000000002b00f7df&gt;] vcap_val_rule+0x274/0x3e8
    [&lt;00000000e67d2ff5&gt;] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
    [&lt;00000000a29794d8&gt;] vcap_api_rule_remove_at_end_test+0xbc/0xb48
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20

unreferenced object 0xffff0583832fa240 (size 192):
  comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
  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 00 a1 8b 84 83 05 ff ff  ................
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000648fefae&gt;] vcap_alloc_rule+0x17c/0x26c
    [&lt;000000004da16164&gt;] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
    [&lt;00000000be638a45&gt;] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0583848ba0c0 (size 64):
  comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
  hex dump (first 32 bytes):
    40 a1 8b 84 83 05 ff ff 68 a2 2f 83 83 05 ff ff  @.......h./.....
    22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000ee41df9e&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000001cc1bb38&gt;] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
    [&lt;00000000be638a45&gt;] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0583848ba100 (size 64):
  comm "kunit_try_catch", pid 315, jiffies 4294894233 (age 639.920s)
  hex dump (first 32 bytes):
    80 a1 8b 84 83 05 ff ff 58 a2 2f 83 83 05 ff ff  ........X./.....
    7d 00 00 00 01 00 00 00 02 00 00 00 ff 00 00 00  }...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000043c78991&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000ba73cfbe&gt;] vcap_add_type_keyfield+0xfc/0x128
    [&lt;000000002b00f7df&gt;] vcap_val_rule+0x274/0x3e8
    [&lt;00000000e67d2ff5&gt;] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
    [&lt;00000000be638a45&gt;] vcap_api_rule_remove_in_middle_test+0xc4/0xb80
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20

unreferenced object 0xffff0583827d2180 (size 192):
  comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
  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 00 e1 06 83 83 05 ff ff  ................
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000648fefae&gt;] vcap_alloc_rule+0x17c/0x26c
    [&lt;000000004da16164&gt;] test_vcap_xn_rule_creator.constprop.43+0xac/0x328
    [&lt;00000000e1ed8350&gt;] vcap_api_rule_remove_in_front_test+0x144/0x6c0
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff05838306e0c0 (size 64):
  comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.956s)
  hex dump (first 32 bytes):
    40 e1 06 83 83 05 ff ff a8 21 7d 82 83 05 ff ff  @........!}.....
    22 00 00 00 01 00 00 00 00 00 00 00 00 80 ff ff  "...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000ee41df9e&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000001cc1bb38&gt;] test_vcap_xn_rule_creator.constprop.43+0xd8/0x328
    [&lt;00000000e1ed8350&gt;] vcap_api_rule_remove_in_front_test+0x144/0x6c0
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff05838306e180 (size 64):
  comm "kunit_try_catch", pid 317, jiffies 4294894238 (age 639.968s)
  hex dump (first 32 bytes):
    98 21 7d 82 83 05 ff ff 00 e1 06 83 83 05 ff ff  .!}.............
    67 00 00 00 00 00 00 00 01 01 00 00 ff 00 00 00  g...............
  backtrace:
    [&lt;000000008585a8f7&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000795eba12&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000061886991&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000043c78991&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;000000006ce4945d&gt;] test_add_def_fields+0x84/0x8c
    [&lt;00000000507e0ab6&gt;] vcap_val_rule+0x294/0x3e8
    [&lt;00000000e67d2ff5&gt;] test_vcap_xn_rule_creator.constprop.43+0xf0/0x328
    [&lt;00000000e1ed8350&gt;] vcap_api_rule_remove_in_front_test+0x144/0x6c0
    [&lt;00000000548b559e&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000663f0105&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;00000000e646f120&gt;] kthread+0x124/0x130
    [&lt;000000005257599e&gt;] ret_from_fork+0x10/0x20

Fixes: dccc30cc4906 ("net: microchip: sparx5: Add KUNIT test of counters and sorted rules")
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Reported-by: kernel test robot &lt;lkp@intel.com&gt;
Closes: https://lore.kernel.org/oe-kbuild-all/202309090950.uOTEKQq3-lkp@intel.com/
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: sparx5: Fix possible memory leak in vcap_api_encode_rule_test()</title>
<updated>2023-09-15T06:32:35Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2023-09-12T11:03:08Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=89e3af0277388f32d56915a6715c735e4afae5d6'/>
<id>urn:sha1:89e3af0277388f32d56915a6715c735e4afae5d6</id>
<content type='text'>
Inject fault while probing kunit-example-test.ko, the duprule which
is allocated in vcap_dup_rule() and the vcap enabled port which
is allocated in vcap_enable() of vcap_enable_lookups in
vcap_api_encode_rule_test() is not freed, and it cause the memory
leaks below.

Use vcap_enable_lookups() with false arg to free the vcap enabled
port as other drivers do it. And use vcap_del_rule() to
free the duprule.

unreferenced object 0xffff677a0278bb00 (size 64):
  comm "kunit_try_catch", pid 388, jiffies 4294895987 (age 1101.840s)
  hex dump (first 32 bytes):
    18 bd a5 82 00 80 ff ff 18 bd a5 82 00 80 ff ff  ................
    40 fe c8 0e be c6 ff ff 00 00 00 00 00 00 00 00  @...............
  backtrace:
    [&lt;000000007d53023a&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;0000000076e3f654&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000034d76721&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000013380a5&gt;] vcap_enable_lookups+0x1c8/0x70c
    [&lt;00000000bbec496b&gt;] vcap_api_encode_rule_test+0x2f8/0xb18
    [&lt;000000002c2bfb7b&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000ff74642b&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;000000004af845ca&gt;] kthread+0x124/0x130
    [&lt;0000000038a000ca&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff677a027803c0 (size 192):
  comm "kunit_try_catch", pid 388, jiffies 4294895988 (age 1101.836s)
  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 d8 03 78 02 7a 67 ff ff  ..........x.zg..
  backtrace:
    [&lt;000000007d53023a&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;0000000076e3f654&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;0000000034d76721&gt;] kmalloc_trace+0x40/0x164
    [&lt;00000000c1010131&gt;] vcap_dup_rule+0x34/0x14c
    [&lt;00000000d43c54a4&gt;] vcap_add_rule+0x29c/0x32c
    [&lt;0000000073f1c26d&gt;] vcap_api_encode_rule_test+0x304/0xb18
    [&lt;000000002c2bfb7b&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000ff74642b&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;000000004af845ca&gt;] kthread+0x124/0x130
    [&lt;0000000038a000ca&gt;] ret_from_fork+0x10/0x20

Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_actionvalue_test()</title>
<updated>2023-09-15T06:32:35Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2023-09-12T11:03:07Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=39d0ccc185315408e7cecfcaf06d167927b51052'/>
<id>urn:sha1:39d0ccc185315408e7cecfcaf06d167927b51052</id>
<content type='text'>
Inject fault while probing kunit-example-test.ko, the field which
is allocated by kzalloc in vcap_rule_add_action() of
vcap_rule_add_action_bit/u32() is not freed, and it cause
the memory leaks below.

unreferenced object 0xffff0276c496b300 (size 64):
  comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
  hex dump (first 32 bytes):
    68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h&lt;b.....h&lt;b.....
    3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  &lt;...............
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008b41c84d&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;00000000ae66c16c&gt;] vcap_api_rule_add_actionvalue_test+0xa4/0x990
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c496b2c0 (size 64):
  comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
  hex dump (first 32 bytes):
    68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h&lt;b.....h&lt;b.....
    3c 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00  &lt;...............
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008b41c84d&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;00000000607782aa&gt;] vcap_api_rule_add_actionvalue_test+0x100/0x990
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c496b280 (size 64):
  comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.072s)
  hex dump (first 32 bytes):
    68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h&lt;b.....h&lt;b.....
    3c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  &lt;...............
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008b41c84d&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;000000004e640602&gt;] vcap_api_rule_add_actionvalue_test+0x15c/0x990
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c496b240 (size 64):
  comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
  hex dump (first 32 bytes):
    68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h&lt;b.....h&lt;b.....
    5a 00 00 00 01 00 00 00 32 54 76 98 00 00 00 00  Z.......2Tv.....
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008b41c84d&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;0000000011141bf8&gt;] vcap_api_rule_add_actionvalue_test+0x1bc/0x990
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c496b200 (size 64):
  comm "kunit_try_catch", pid 286, jiffies 4294894224 (age 920.092s)
  hex dump (first 32 bytes):
    68 3c 62 82 00 80 ff ff 68 3c 62 82 00 80 ff ff  h&lt;b.....h&lt;b.....
    28 00 00 00 01 00 00 00 dd cc bb aa 00 00 00 00  (...............
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;000000008b41c84d&gt;] vcap_rule_add_action+0x104/0x178
    [&lt;00000000d5ed3088&gt;] vcap_api_rule_add_actionvalue_test+0x22c/0x990
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20

Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: sparx5: Fix memory leak for vcap_api_rule_add_keyvalue_test()</title>
<updated>2023-09-15T06:32:35Z</updated>
<author>
<name>Jinjie Ruan</name>
<email>ruanjinjie@huawei.com</email>
</author>
<published>2023-09-12T11:03:06Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=f037fc9905ffa6fa19b89bfbc86946798cede071'/>
<id>urn:sha1:f037fc9905ffa6fa19b89bfbc86946798cede071</id>
<content type='text'>
Inject fault while probing kunit-example-test.ko, the field which
is allocated by kzalloc in vcap_rule_add_key() of
vcap_rule_add_key_bit/u32/u128() is not freed, and it cause
the memory leaks below.

unreferenced object 0xffff0276c14b7240 (size 64):
  comm "kunit_try_catch", pid 284, jiffies 4294894220 (age 920.072s)
  hex dump (first 32 bytes):
    28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (&lt;a.....(&lt;a.....
    67 00 00 00 00 00 00 00 00 01 37 2b af ab ff ff  g.........7+....
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000059ad6bcd&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000ff8002d3&gt;] vcap_api_rule_add_keyvalue_test+0x100/0xba8
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c14b7280 (size 64):
  comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
  hex dump (first 32 bytes):
    28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (&lt;a.....(&lt;a.....
    67 00 00 00 00 00 00 00 01 01 37 2b af ab ff ff  g.........7+....
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000059ad6bcd&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000f5ac9dc7&gt;] vcap_api_rule_add_keyvalue_test+0x168/0xba8
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c14b72c0 (size 64):
  comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.068s)
  hex dump (first 32 bytes):
    28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (&lt;a.....(&lt;a.....
    67 00 00 00 00 00 00 00 00 00 37 2b af ab ff ff  g.........7+....
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000059ad6bcd&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;00000000c918ae7f&gt;] vcap_api_rule_add_keyvalue_test+0x1d0/0xba8
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c14b7300 (size 64):
  comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
  hex dump (first 32 bytes):
    28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (&lt;a.....(&lt;a.....
    7d 00 00 00 01 00 00 00 32 54 76 98 ab ff 00 ff  }.......2Tv.....
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000059ad6bcd&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;0000000003352814&gt;] vcap_api_rule_add_keyvalue_test+0x240/0xba8
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20
unreferenced object 0xffff0276c14b7340 (size 64):
  comm "kunit_try_catch", pid 284, jiffies 4294894221 (age 920.084s)
  hex dump (first 32 bytes):
    28 3c 61 82 00 80 ff ff 28 3c 61 82 00 80 ff ff  (&lt;a.....(&lt;a.....
    51 00 00 00 07 00 00 00 17 26 35 44 63 62 71 00  Q........&amp;5Dcbq.
  backtrace:
    [&lt;0000000028f08898&gt;] slab_post_alloc_hook+0xb8/0x368
    [&lt;00000000514b9b37&gt;] __kmem_cache_alloc_node+0x174/0x290
    [&lt;000000004620684a&gt;] kmalloc_trace+0x40/0x164
    [&lt;0000000059ad6bcd&gt;] vcap_rule_add_key+0x104/0x180
    [&lt;000000001516f109&gt;] vcap_api_rule_add_keyvalue_test+0x2cc/0xba8
    [&lt;00000000fcc5326c&gt;] kunit_try_run_case+0x50/0xac
    [&lt;00000000f5f45b20&gt;] kunit_generic_run_threadfn_adapter+0x20/0x2c
    [&lt;0000000026284079&gt;] kthread+0x124/0x130
    [&lt;0000000024d4a996&gt;] ret_from_fork+0x10/0x20

Fixes: c956b9b318d9 ("net: microchip: sparx5: Adding KUNIT tests of key/action values in VCAP API")
Signed-off-by: Jinjie Ruan &lt;ruanjinjie@huawei.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
<entry>
<title>net: microchip: sparx5: reduce stack usage</title>
<updated>2023-02-20T10:50:47Z</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2023-02-17T09:58:06Z</published>
<link rel='alternate' type='text/html' href='https://universe.0xinfinity.dev/distro/kernel/commit/?id=129ff4de58ff0ca981b833834d8b9bddb71d4bfe'/>
<id>urn:sha1:129ff4de58ff0ca981b833834d8b9bddb71d4bfe</id>
<content type='text'>
The vcap_admin structures in vcap_api_next_lookup_advanced_test()
take several hundred bytes of stack frame, but when CONFIG_KASAN_STACK
is enabled, each one of them also has extra padding before and after
it, which ends up blowing the warning limit:

In file included from drivers/net/ethernet/microchip/vcap/vcap_api.c:3521:
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c: In function 'vcap_api_next_lookup_advanced_test':
drivers/net/ethernet/microchip/vcap/vcap_api_kunit.c:1954:1: error: the frame size of 1448 bytes is larger than 1400 bytes [-Werror=frame-larger-than=]
 1954 | }

Reduce the total stack usage by replacing the five structures with
an array that only needs one pair of padding areas.

Fixes: 1f741f001160 ("net: microchip: sparx5: Add KUNIT tests for enabling/disabling chains")
Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Alexander Lobakin &lt;aleksander.lobakin@intel.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
</entry>
</feed>
