powerpc/msi: Remove VLA usage
PATCH 1/1 powerpc/msi: Remove VLA usage
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
--- arch/powerpc/sysdev/msi_bitmap.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
arch/powerpc/sysdev/msi_bitmap.c +8 -7
@@ -225,22 +225,23 @@ static void __init test_of_node(void)struct device_node of_node;struct property prop;struct msi_bitmap bmp; -int size =256 ; -DECLARE_BITMAP (expected, size); +#define SIZE_EXPECTED 256 +DECLARE_BITMAP (expected,SIZE_EXPECTED );/* There should really be a struct device_node allocator */ memset (&of_node,0 ,sizeof (of_node));of_node_init (&of_node); of_node.full_name = node_name; -WARN_ON (msi_bitmap_alloc (&bmp, size, &of_node)); +WARN_ON (msi_bitmap_alloc (&bmp,SIZE_EXPECTED , &of_node));/* No msi-available-ranges, so expect > 0 */ WARN_ON (msi_bitmap_reserve_dt_hwirqs (&bmp) <=0 );/* Should all still be free */ -WARN_ON (bitmap_find_free_region (bmp.bitmap, size,get_count_order (size))); -bitmap_release_region (bmp.bitmap,0 ,get_count_order (size)); +WARN_ON (bitmap_find_free_region (bmp.bitmap,SIZE_EXPECTED , +get_count_order (SIZE_EXPECTED ))); +bitmap_release_region (bmp.bitmap,0 ,get_count_order (SIZE_EXPECTED ));/* Now create a fake msi-available-ranges property */
@@ -256,8 +257,8 @@ static void __init test_of_node(void)WARN_ON (msi_bitmap_reserve_dt_hwirqs (&bmp));/* Check we got the expected result */ -WARN_ON (bitmap_parselist (expected_str, expected, size)); -WARN_ON (!bitmap_equal (expected, bmp.bitmap, size)); +WARN_ON (bitmap_parselist (expected_str, expected,SIZE_EXPECTED )); +WARN_ON (!bitmap_equal (expected, bmp.bitmap,SIZE_EXPECTED ));msi_bitmap_free (&bmp);kfree (bmp.bitmap);
Signature · 6 lines
2.17.1 -- Kees Cook Pixel Security
Quoted 7 lines · Kees Cook
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Signed-off-by Kees Cook <[email protected]>
Friendly ping! Michael, can you take this?
-Kees
Quoted 55 lines
--- arch/powerpc/sysdev/msi_bitmap.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)arch/powerpc/sysdev/msi_bitmap.c +8
-8@@ -225,22 +225,23 @@ static void __init test_of_node(void)struct device_node of_node;struct property prop;struct msi_bitmap bmp; -int size =256 ; -DECLARE_BITMAP (expected, size); +#define SIZE_EXPECTED 256 +DECLARE_BITMAP (expected,SIZE_EXPECTED );/* There should really be a struct device_node allocator */ memset (&of_node,0 ,sizeof (of_node));of_node_init (&of_node); of_node.full_name = node_name; -WARN_ON (msi_bitmap_alloc (&bmp, size, &of_node)); +WARN_ON (msi_bitmap_alloc (&bmp,SIZE_EXPECTED , &of_node));/* No msi-available-ranges, so expect > 0 */ WARN_ON (msi_bitmap_reserve_dt_hwirqs (&bmp) <=0 );/* Should all still be free */ -WARN_ON (bitmap_find_free_region (bmp.bitmap, size,get_count_order (size))); -bitmap_release_region (bmp.bitmap,0 ,get_count_order (size)); +WARN_ON (bitmap_find_free_region (bmp.bitmap,SIZE_EXPECTED , +get_count_order (SIZE_EXPECTED ))); +bitmap_release_region (bmp.bitmap,0 ,get_count_order (SIZE_EXPECTED ));/* Now create a fake msi-available-ranges property */ @@ -256,8 +257,8 @@ static void __init test_of_node(void)WARN_ON (msi_bitmap_reserve_dt_hwirqs (&bmp));/* Check we got the expected result */ -WARN_ON (bitmap_parselist (expected_str, expected, size)); -WARN_ON (!bitmap_equal (expected, bmp.bitmap, size)); +WARN_ON (bitmap_parselist (expected_str, expected,SIZE_EXPECTED )); +WARN_ON (!bitmap_equal (expected, bmp.bitmap,SIZE_EXPECTED ));msi_bitmap_free (&bmp);kfree (bmp.bitmap); --2.17.1
--
Kees Cook
Pixel Security
Signature · 2 lines
Kees Cook Pixel Security
Quoted 16 lines · Kees Cook
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Cc Benjamin Herrenschmidt <[email protected]>Cc Paul Mackerras <[email protected]>Cc Michael Ellerman <[email protected]>Cc Andrew Morton <[email protected]>Cc Randy Dunlap <[email protected]>Cc Tyrel Datwyler <[email protected]>Cc Rob Herring <[email protected]>Cc Ingo Molnar <[email protected]>Signed-off-by Kees Cook <[email protected]>
Quoted 1 line
---
Michael Ellerman
AppliedQuoted 6 lines · Kees Cook
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Quoted 10 lines
Cc Benjamin Herrenschmidt <[email protected]>Cc Paul Mackerras <[email protected]>Cc Michael Ellerman <[email protected]>Cc Andrew Morton <[email protected]>Cc Randy Dunlap <[email protected]>Cc Tyrel Datwyler <[email protected]>Cc Rob Herring <[email protected]>Cc Ingo Molnar <[email protected]>Signed-off-by Kees Cook <[email protected]>
Applied to powerpc next, thanks.
https://git.kernel.org/powerpc/c/1b80ac648483189e45f60d4ddbb54b
cheers
Michael Ellerman
reviewerQuoted 10 lines · Kees Cook
Quoted 7 lines · Kees Cook
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Signed-off-by Kees Cook <[email protected]>Friendly ping! Michael, can you take this?
Yep, sorry. I actually applied it weeks ago but hadn't pushed.
cheers
Quoted 7 lines · Michael Ellerman
Quoted 5 lines · Kees Cook
Quoted 4 lines · Kees Cook
In the quest to remove all stack VLA usage from the kernel[1], this switches from an unchanging variable to a constant expression to eliminate the VLA generation.
Quoted 7 lines
Quoted 5 lines
Quoted 3 lines
[1] https://lkml.kernel.org/r/CA+55aFzCG-zNmZwX4A2FQpadafLfEzK6CC=qPXydAacU1RqZWA@mail.gmail.com
Signed-off-by Kees Cook <[email protected]>Friendly ping! Michael, can you take this?
Yep, sorry. I actually applied it weeks ago but hadn't pushed.
No worries! Thanks! :)
-Kees
Signature · 2 lines
Kees Cook Pixel Security