Re: [PATCH v2] lkdtm/bugs: fix build error in lkdtm_EXHAUST_STACK

From: Kees Cook
Date: Wed Aug 28 2019 - 16:29:35 EST


On Tue, Aug 27, 2019 at 11:36:19AM -0600, Raul E Rangel wrote:
> lkdtm/bugs.c:94:2: error: format '%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [-Werror=format=]
> pr_info("Calling function with %d frame size to depth %d ...\n",
> ^
> THREAD_SIZE is defined as a unsigned long, cast CONFIG_FRAME_WARN to
> unsigned long as well.
>
> Fixes: 24cccab42c419 ("lkdtm/bugs: Adjust recursion test to avoid elision")
> Signed-off-by: Raul E Rangel <rrangel@xxxxxxxxxxxx>

Thanks for the update! (Greg, can you take this instead?)

Acked-by: Kees Cook <keescook@xxxxxxxxxxxx>

-Kees

> ---
>
> Changes in v2:
> - Correctly cast CONFIG_FRAME_WARN so the type is consistent.
>
> drivers/misc/lkdtm/bugs.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/misc/lkdtm/bugs.c b/drivers/misc/lkdtm/bugs.c
> index 1606658b9b7e..24245ccdba72 100644
> --- a/drivers/misc/lkdtm/bugs.c
> +++ b/drivers/misc/lkdtm/bugs.c
> @@ -22,7 +22,7 @@ struct lkdtm_list {
> * recurse past the end of THREAD_SIZE by default.
> */
> #if defined(CONFIG_FRAME_WARN) && (CONFIG_FRAME_WARN > 0)
> -#define REC_STACK_SIZE (CONFIG_FRAME_WARN / 2)
> +#define REC_STACK_SIZE (_AC(CONFIG_FRAME_WARN, UL) / 2)
> #else
> #define REC_STACK_SIZE (THREAD_SIZE / 8)
> #endif
> @@ -91,7 +91,7 @@ void lkdtm_LOOP(void)
>
> void lkdtm_EXHAUST_STACK(void)
> {
> - pr_info("Calling function with %d frame size to depth %d ...\n",
> + pr_info("Calling function with %lu frame size to depth %d ...\n",
> REC_STACK_SIZE, recur_count);
> recursive_loop(recur_count);
> pr_info("FAIL: survived without exhausting stack?!\n");
> --
> 2.23.0.187.g17f5b7556c-goog
>

--
Kees Cook