RE: [PATCH net-next] lib: packing: catch kunit_kzalloc() failure in the pack() test

From: Keller, Jacob E
Date: Wed Oct 09 2024 - 16:52:27 EST




> -----Original Message-----
> From: Kitszel, Przemyslaw <przemyslaw.kitszel@xxxxxxxxx>
> Sent: Wednesday, October 9, 2024 3:21 AM
> To: Keller, Jacob E <jacob.e.keller@xxxxxxxxx>; Vladimir Oltean
> <vladimir.oltean@xxxxxxx>
> Cc: David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet
> <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni
> <pabeni@xxxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH net-next] lib: packing: catch kunit_kzalloc() failure in the pack()
> test
>
> On 10/4/24 21:20, Keller, Jacob E wrote:
> >
> >
> >> -----Original Message-----
> >> From: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> >> Sent: Friday, October 4, 2024 4:00 AM
> >> To: netdev@xxxxxxxxxxxxxxx
> >> Cc: David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet
> >> <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni
> >> <pabeni@xxxxxxxxxx>; Keller, Jacob E <jacob.e.keller@xxxxxxxxx>; Kitszel,
> >> Przemyslaw <przemyslaw.kitszel@xxxxxxxxx>; linux-kernel@xxxxxxxxxxxxxxx
> >> Subject: [PATCH net-next] lib: packing: catch kunit_kzalloc() failure in the pack()
> >> test
> >>
> >> kunit_kzalloc() may fail. Other call sites verify that this is the case,
> >> either using a direct comparison with the NULL pointer, or the
> >> KUNIT_ASSERT_NOT_NULL() or KUNIT_ASSERT_NOT_ERR_OR_NULL().
> >>
> >> Pick KUNIT_ASSERT_NOT_NULL() as the error handling method that made most
> >> sense to me. It's an unlikely thing to happen, but at least we call
> >> __kunit_abort() instead of dereferencing this NULL pointer.
> >>
> >> Fixes: e9502ea6db8a ("lib: packing: add KUnit tests adapted from selftests")
> >> Signed-off-by: Vladimir Oltean <vladimir.oltean@xxxxxxx>
> >> ---
> >> lib/packing_test.c | 1 +
> >> 1 file changed, 1 insertion(+)
> >>
> >> diff --git a/lib/packing_test.c b/lib/packing_test.c
> >> index 015ad1180d23..b38ea43c03fd 100644
> >> --- a/lib/packing_test.c
> >> +++ b/lib/packing_test.c
> >> @@ -375,6 +375,7 @@ static void packing_test_pack(struct kunit *test)
> >> int err;
> >>
> >> pbuf = kunit_kzalloc(test, params->pbuf_size, GFP_KERNEL);
> >> + KUNIT_ASSERT_NOT_NULL(test, pbuf);
> >>
> >> err = pack(pbuf, params->uval, params->start_bit, params->end_bit,
> >> params->pbuf_size, params->quirks);
> >> --
> >> 2.43.0
> >
> > Oh good catch! I guess I had assumed that kunit_kzalloc would itself detect and
> fail instead of continuing....
>
> that would be great
>
> kunit_*alloc gives kunit-managed resources though

Yep, just a misunderstanding on my part 😊