All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
@ 2024-08-15  0:04 Ivan Orlov
  2024-08-15  6:30 ` Erhard Furtner
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Ivan Orlov @ 2024-08-15  0:04 UTC (permalink / raw)
  To: akpm, kees, davidgow; +Cc: Ivan Orlov, kunit-dev, linux-kernel, erhard_f

The 'device_name' array doesn't exist out of the
'overflow_allocation_test' function scope. However, it is being used as
a driver name when calling 'kunit_driver_create' from
'kunit_device_register'. It produces the kernel panic with KASAN
enabled.

Since this variable is used in one place only, remove it and pass the
device name into kunit_device_register directly as an ascii string.

Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
---
 lib/overflow_kunit.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/lib/overflow_kunit.c b/lib/overflow_kunit.c
index f314a0c15a6d..2abc78367dd1 100644
--- a/lib/overflow_kunit.c
+++ b/lib/overflow_kunit.c
@@ -668,7 +668,6 @@ DEFINE_TEST_ALLOC(devm_kzalloc,  devm_kfree, 1, 1, 0);
 
 static void overflow_allocation_test(struct kunit *test)
 {
-	const char device_name[] = "overflow-test";
 	struct device *dev;
 	int count = 0;
 
@@ -678,7 +677,7 @@ static void overflow_allocation_test(struct kunit *test)
 } while (0)
 
 	/* Create dummy device for devm_kmalloc()-family tests. */
-	dev = kunit_device_register(test, device_name);
+	dev = kunit_device_register(test, "overflow-test");
 	KUNIT_ASSERT_FALSE_MSG(test, IS_ERR(dev),
 			       "Cannot register test device\n");
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
@ 2024-08-15  6:30 ` Erhard Furtner
  2024-08-15  6:39 ` David Gow
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Erhard Furtner @ 2024-08-15  6:30 UTC (permalink / raw)
  To: Ivan Orlov; +Cc: akpm, kees, davidgow, kunit-dev, linux-kernel

On Thu, 15 Aug 2024 01:04:31 +0100
Ivan Orlov <ivan.orlov0322@gmail.com> wrote:

> The 'device_name' array doesn't exist out of the
> 'overflow_allocation_test' function scope. However, it is being used as
> a driver name when calling 'kunit_driver_create' from
> 'kunit_device_register'. It produces the kernel panic with KASAN
> enabled.
> 
> Since this variable is used in one place only, remove it and pass the
> device name into kunit_device_register directly as an ascii string.
> 
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---
>  lib/overflow_kunit.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/lib/overflow_kunit.c b/lib/overflow_kunit.c
> index f314a0c15a6d..2abc78367dd1 100644
> --- a/lib/overflow_kunit.c
> +++ b/lib/overflow_kunit.c
> @@ -668,7 +668,6 @@ DEFINE_TEST_ALLOC(devm_kzalloc,  devm_kfree, 1, 1, 0);
>  
>  static void overflow_allocation_test(struct kunit *test)
>  {
> -	const char device_name[] = "overflow-test";
>  	struct device *dev;
>  	int count = 0;
>  
> @@ -678,7 +677,7 @@ static void overflow_allocation_test(struct kunit *test)
>  } while (0)
>  
>  	/* Create dummy device for devm_kmalloc()-family tests. */
> -	dev = kunit_device_register(test, device_name);
> +	dev = kunit_device_register(test, "overflow-test");
>  	KUNIT_ASSERT_FALSE_MSG(test, IS_ERR(dev),
>  			       "Cannot register test device\n");
>  
> -- 
> 2.34.1

Thanks Ivan!

I can confirm that your patch fixes the KASAN hit on ppc32 when the overflow_kunit test is built as a module and modprobed later.

Regards,
Erhard

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
  2024-08-15  6:30 ` Erhard Furtner
@ 2024-08-15  6:39 ` David Gow
  2024-08-15 16:28 ` Kees Cook
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: David Gow @ 2024-08-15  6:39 UTC (permalink / raw)
  To: Ivan Orlov; +Cc: akpm, kees, kunit-dev, linux-kernel, erhard_f

[-- Attachment #1: Type: text/plain, Size: 1751 bytes --]

On Thu, 15 Aug 2024 at 08:04, Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
>
> The 'device_name' array doesn't exist out of the
> 'overflow_allocation_test' function scope. However, it is being used as
> a driver name when calling 'kunit_driver_create' from
> 'kunit_device_register'. It produces the kernel panic with KASAN
> enabled.
>
> Since this variable is used in one place only, remove it and pass the
> device name into kunit_device_register directly as an ascii string.
>
> Signed-off-by: Ivan Orlov <ivan.orlov0322@gmail.com>
> ---

Thanks -- we've got plans to add support for non-constant strings
here, but the first version had some issues, and (Kees -- correct me
if I'm wrong) there doesn't seem to be any need to have this be
dynamically allocated.

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David

>  lib/overflow_kunit.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/lib/overflow_kunit.c b/lib/overflow_kunit.c
> index f314a0c15a6d..2abc78367dd1 100644
> --- a/lib/overflow_kunit.c
> +++ b/lib/overflow_kunit.c
> @@ -668,7 +668,6 @@ DEFINE_TEST_ALLOC(devm_kzalloc,  devm_kfree, 1, 1, 0);
>
>  static void overflow_allocation_test(struct kunit *test)
>  {
> -       const char device_name[] = "overflow-test";
>         struct device *dev;
>         int count = 0;
>
> @@ -678,7 +677,7 @@ static void overflow_allocation_test(struct kunit *test)
>  } while (0)
>
>         /* Create dummy device for devm_kmalloc()-family tests. */
> -       dev = kunit_device_register(test, device_name);
> +       dev = kunit_device_register(test, "overflow-test");
>         KUNIT_ASSERT_FALSE_MSG(test, IS_ERR(dev),
>                                "Cannot register test device\n");
>
> --
> 2.34.1
>

[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4014 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
  2024-08-15  6:30 ` Erhard Furtner
  2024-08-15  6:39 ` David Gow
@ 2024-08-15 16:28 ` Kees Cook
  2024-08-15 23:01 ` Andrew Morton
  2024-08-15 23:04 ` Andrew Morton
  4 siblings, 0 replies; 9+ messages in thread
From: Kees Cook @ 2024-08-15 16:28 UTC (permalink / raw)
  To: akpm, davidgow, Ivan Orlov; +Cc: Kees Cook, kunit-dev, linux-kernel, erhard_f

On Thu, 15 Aug 2024 01:04:31 +0100, Ivan Orlov wrote:
> The 'device_name' array doesn't exist out of the
> 'overflow_allocation_test' function scope. However, it is being used as
> a driver name when calling 'kunit_driver_create' from
> 'kunit_device_register'. It produces the kernel panic with KASAN
> enabled.
> 
> Since this variable is used in one place only, remove it and pass the
> device name into kunit_device_register directly as an ascii string.
> 
> [...]

Applied to for-linus/hardening, thanks!

[1/1] kunit/overflow: Fix UB in overflow_allocation_test
      https://git.kernel.org/kees/c/92e9bac18124

Take care,

-- 
Kees Cook


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
                   ` (2 preceding siblings ...)
  2024-08-15 16:28 ` Kees Cook
@ 2024-08-15 23:01 ` Andrew Morton
  2024-08-16  1:22   ` Ivan Orlov
  2024-08-16  3:36   ` Kees Cook
  2024-08-15 23:04 ` Andrew Morton
  4 siblings, 2 replies; 9+ messages in thread
From: Andrew Morton @ 2024-08-15 23:01 UTC (permalink / raw)
  To: Ivan Orlov; +Cc: kees, davidgow, kunit-dev, linux-kernel, erhard_f

On Thu, 15 Aug 2024 01:04:31 +0100 Ivan Orlov <ivan.orlov0322@gmail.com> wrote:

> The 'device_name' array doesn't exist out of the
> 'overflow_allocation_test' function scope. However, it is being used as
> a driver name when calling 'kunit_driver_create' from
> 'kunit_device_register'. It produces the kernel panic with KASAN
> enabled.
> 
> Since this variable is used in one place only, remove it and pass the
> device name into kunit_device_register directly as an ascii string.

Fixes: ca90800a91ba ("test_overflow: Add memory allocation overflow tests")
Cc: <stable@vger.kernel.org>

yes?


I'll grab it now, but perhaps Kees will handle this.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
                   ` (3 preceding siblings ...)
  2024-08-15 23:01 ` Andrew Morton
@ 2024-08-15 23:04 ` Andrew Morton
  2024-08-16  1:27   ` Ivan Orlov
  4 siblings, 1 reply; 9+ messages in thread
From: Andrew Morton @ 2024-08-15 23:04 UTC (permalink / raw)
  To: Ivan Orlov; +Cc: kees, davidgow, kunit-dev, linux-kernel, erhard_f

On Thu, 15 Aug 2024 01:04:31 +0100 Ivan Orlov <ivan.orlov0322@gmail.com> wrote:

> Subject: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test

What's "UB", btw?

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15 23:01 ` Andrew Morton
@ 2024-08-16  1:22   ` Ivan Orlov
  2024-08-16  3:36   ` Kees Cook
  1 sibling, 0 replies; 9+ messages in thread
From: Ivan Orlov @ 2024-08-16  1:22 UTC (permalink / raw)
  To: Andrew Morton; +Cc: kees, davidgow, kunit-dev, linux-kernel, erhard_f

On 8/16/24 00:01, Andrew Morton wrote:
> On Thu, 15 Aug 2024 01:04:31 +0100 Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
> 
>> The 'device_name' array doesn't exist out of the
>> 'overflow_allocation_test' function scope. However, it is being used as
>> a driver name when calling 'kunit_driver_create' from
>> 'kunit_device_register'. It produces the kernel panic with KASAN
>> enabled.
>>
>> Since this variable is used in one place only, remove it and pass the
>> device name into kunit_device_register directly as an ascii string.
> 
> Fixes: ca90800a91ba ("test_overflow: Add memory allocation overflow tests")
> Cc: <stable@vger.kernel.org>
> 
> yes?
> 

Ah, yes, sorry, I should've specified the fixes tag in the patch :(

> 
> I'll grab it now, but perhaps Kees will handle this.
> 

Thanks!

-- 
Kind regards,
Ivan Orlov

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15 23:04 ` Andrew Morton
@ 2024-08-16  1:27   ` Ivan Orlov
  0 siblings, 0 replies; 9+ messages in thread
From: Ivan Orlov @ 2024-08-16  1:27 UTC (permalink / raw)
  To: Andrew Morton; +Cc: kees, davidgow, kunit-dev, linux-kernel, erhard_f

On 8/16/24 00:04, Andrew Morton wrote:
> On Thu, 15 Aug 2024 01:04:31 +0100 Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
> 
>> Subject: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
> 
> What's "UB", btw?

UB in the patch title stands for "undefined behavior", since passing a 
pointer with such a short lifetime to kunit_device_register causes one.

I was not sure about how to call this type of issues (misallocation, 
probably?), so I decided to give it a generic name :)

-- 
Kind regards,
Ivan Orlov

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] kunit/overflow: Fix UB in overflow_allocation_test
  2024-08-15 23:01 ` Andrew Morton
  2024-08-16  1:22   ` Ivan Orlov
@ 2024-08-16  3:36   ` Kees Cook
  1 sibling, 0 replies; 9+ messages in thread
From: Kees Cook @ 2024-08-16  3:36 UTC (permalink / raw)
  To: Andrew Morton, Ivan Orlov; +Cc: davidgow, kunit-dev, linux-kernel, erhard_f



On August 15, 2024 4:01:48 PM PDT, Andrew Morton <akpm@linux-foundation.org> wrote:
>On Thu, 15 Aug 2024 01:04:31 +0100 Ivan Orlov <ivan.orlov0322@gmail.com> wrote:
>
>> The 'device_name' array doesn't exist out of the
>> 'overflow_allocation_test' function scope. However, it is being used as
>> a driver name when calling 'kunit_driver_create' from
>> 'kunit_device_register'. It produces the kernel panic with KASAN
>> enabled.
>> 
>> Since this variable is used in one place only, remove it and pass the
>> device name into kunit_device_register directly as an ascii string.
>
>Fixes: ca90800a91ba ("test_overflow: Add memory allocation overflow tests")
>Cc: <stable@vger.kernel.org>
>
>yes?
>
>
>I'll grab it now, but perhaps Kees will handle this.

I already grabbed it:
https://lore.kernel.org/lkml/172373928009.559695.8528767427266408069.b4-ty@kernel.org/

But I'll update the tags. Thanks!

-- 
Kees Cook

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2024-08-16  3:37 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-15  0:04 [PATCH] kunit/overflow: Fix UB in overflow_allocation_test Ivan Orlov
2024-08-15  6:30 ` Erhard Furtner
2024-08-15  6:39 ` David Gow
2024-08-15 16:28 ` Kees Cook
2024-08-15 23:01 ` Andrew Morton
2024-08-16  1:22   ` Ivan Orlov
2024-08-16  3:36   ` Kees Cook
2024-08-15 23:04 ` Andrew Morton
2024-08-16  1:27   ` Ivan Orlov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.