linux-next: manual merge of the kspp tree with the char-misc tree

Stephen Rothwell posted 1 patch 3 years, 12 months ago
linux-next: manual merge of the kspp tree with the char-misc tree
Posted by Stephen Rothwell 3 years, 12 months ago
Hi all,

Today's linux-next merge of the kspp tree got a conflict in:

  drivers/misc/lkdtm/stackleak.c

between commit:

  73f62e60d80c ("lkdtm: Move crashtype definitions into each category")

from the char-misc tree and commits:

  c393c0b98d75 ("lkdtm/stackleak: prevent unexpected stack usage")
  932c12ae7963 ("lkdtm/stackleak: fix CONFIG_GCC_PLUGIN_STACKLEAK=n")

from the kspp tree.

I fixed it up (see below) and can carry the fix as necessary. This
is now fixed as far as linux-next is concerned, but any non trivial
conflicts should be mentioned to your upstream maintainer when your tree
is submitted for merging.  You may also want to consider cooperating
with the maintainer of the conflicting tree to minimise any particularly
complex conflicts.

-- 
Cheers,
Stephen Rothwell

diff --cc drivers/misc/lkdtm/stackleak.c
index 210c84dfe1d2,82369c6f889e..000000000000
--- a/drivers/misc/lkdtm/stackleak.c
+++ b/drivers/misc/lkdtm/stackleak.c
@@@ -81,11 -115,21 +115,29 @@@ out
  	}
  }
  
 -void lkdtm_STACKLEAK_ERASING(void)
++static void lkdtm_STACKLEAK_ERASING(void)
+ {
+ 	unsigned long flags;
+ 
+ 	local_irq_save(flags);
+ 	check_stackleak_irqoff();
+ 	local_irq_restore(flags);
+ }
+ #else /* defined(CONFIG_GCC_PLUGIN_STACKLEAK) */
 -void lkdtm_STACKLEAK_ERASING(void)
++static void lkdtm_STACKLEAK_ERASING(void)
+ {
+ 	if (IS_ENABLED(CONFIG_HAVE_ARCH_STACKLEAK)) {
+ 		pr_err("XFAIL: stackleak is not enabled (CONFIG_GCC_PLUGIN_STACKLEAK=n)\n");
+ 	} else {
+ 		pr_err("XFAIL: stackleak is not supported on this arch (HAVE_ARCH_STACKLEAK=n)\n");
+ 	}
+ }
+ #endif /* defined(CONFIG_GCC_PLUGIN_STACKLEAK) */
 +static struct crashtype crashtypes[] = {
 +	CRASHTYPE(STACKLEAK_ERASING),
 +};
 +
 +struct crashtype_category stackleak_crashtypes = {
 +	.crashtypes = crashtypes,
 +	.len	    = ARRAY_SIZE(crashtypes),
 +};
Re: linux-next: manual merge of the kspp tree with the char-misc tree
Posted by Kees Cook 3 years, 12 months ago
On Mon, May 09, 2022 at 06:53:44PM +1000, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the kspp tree got a conflict in:
> 
>   drivers/misc/lkdtm/stackleak.c
> 
> between commit:
> 
>   73f62e60d80c ("lkdtm: Move crashtype definitions into each category")
> 
> from the char-misc tree and commits:
> 
>   c393c0b98d75 ("lkdtm/stackleak: prevent unexpected stack usage")
>   932c12ae7963 ("lkdtm/stackleak: fix CONFIG_GCC_PLUGIN_STACKLEAK=n")
> 
> from the kspp tree.
> 
> I fixed it up (see below) and can carry the fix as necessary. This
> is now fixed as far as linux-next is concerned, but any non trivial
> conflicts should be mentioned to your upstream maintainer when your tree
> is submitted for merging.  You may also want to consider cooperating
> with the maintainer of the conflicting tree to minimise any particularly
> complex conflicts.
> 
> -- 
> Cheers,
> Stephen Rothwell
> 
> diff --cc drivers/misc/lkdtm/stackleak.c
> index 210c84dfe1d2,82369c6f889e..000000000000
> --- a/drivers/misc/lkdtm/stackleak.c
> +++ b/drivers/misc/lkdtm/stackleak.c
> @@@ -81,11 -115,21 +115,29 @@@ out
>   	}
>   }
>   
>  -void lkdtm_STACKLEAK_ERASING(void)
> ++static void lkdtm_STACKLEAK_ERASING(void)
> + {
> + 	unsigned long flags;
> + 
> + 	local_irq_save(flags);
> + 	check_stackleak_irqoff();
> + 	local_irq_restore(flags);
> + }
> + #else /* defined(CONFIG_GCC_PLUGIN_STACKLEAK) */
>  -void lkdtm_STACKLEAK_ERASING(void)
> ++static void lkdtm_STACKLEAK_ERASING(void)
> + {
> + 	if (IS_ENABLED(CONFIG_HAVE_ARCH_STACKLEAK)) {
> + 		pr_err("XFAIL: stackleak is not enabled (CONFIG_GCC_PLUGIN_STACKLEAK=n)\n");
> + 	} else {
> + 		pr_err("XFAIL: stackleak is not supported on this arch (HAVE_ARCH_STACKLEAK=n)\n");
> + 	}
> + }
> + #endif /* defined(CONFIG_GCC_PLUGIN_STACKLEAK) */
>  +static struct crashtype crashtypes[] = {
>  +	CRASHTYPE(STACKLEAK_ERASING),
>  +};
>  +
>  +struct crashtype_category stackleak_crashtypes = {
>  +	.crashtypes = crashtypes,
>  +	.len	    = ARRAY_SIZE(crashtypes),
>  +};

Thanks! Yes, this looks correct. The "tricky" bit here is making sure
both lkdtm_STACKLEAK_ERASING instances are static, which you did. :)

-Kees

-- 
Kees Cook