Subject: Re: linux-next: Tree for Aug 22 (evm)

From: Mimi Zohar <[email-masked]>
Date: Fri, 26 Aug 2011 08:39:02 -0400

On Tue, 2011-08-23 at 22:10 -0400, Arnaud Lacombe wrote:
> Hi,
> 
> On Tue, Aug 23, 2011 at 7:40 PM, Randy Dunlap <[email-masked]> wrote:
> > I think that you are going to need to do something like Arnaud suggested
> > and use "depends on TCG_TPM=y" instead of just "depends on TCG_TPM",
> > unless you can convince someone that this is a kconfig bug.
> >
> dammit... I guess there is...
> 
> If you consider the following Kconfig:
> 
> config MOD
>         bool
>         default y
>         option modules
> 
> config EXPERIMENTAL
>         bool
>         default y
> 
> menuconfig A
>         tristate "A"
>         depends on EXPERIMENTAL
> 
> config B
>         bool "B"
> 
> config B0
>         bool
> 
> config C
>         tristate "C"
>         depends on B
> 
> config C0
>         tristate
> 
> config D
>         boolean "D"
>         depends on A && B
>         select C
>         select C0
> 
> config E
>         tristate "E"
> 
> config F
>         tristate "F"
>         select E
> 
> B (KEYS) allows to set C (TRUSTED_KEYS). Also, B (KEYS) and A
> (TCG_TPM) allows to set D (EVM), which will select (C). Now,
> menuconfig highlight the problem very well. Proceeding as following
> A=m, B=y, C=m, E=y, F=y, we ends up having:
> 
>  <M> A  --->
>  [*] B
>  {M} C
>  [*] D
>  -*- E
>  <*> F
> 
> which translate in the following config:
> 
> CONFIG_MOD=y
> CONFIG_EXPERIMENTAL=y
> CONFIG_A=m
> CONFIG_B=y
> CONFIG_C=m
> CONFIG_C0=m
> CONFIG_D=y
> CONFIG_E=y
> CONFIG_F=y
> 
> I would have expected CONFIG_C and CONFIG_C0 to be 'y', just as 'E'.
> If you remove D's dependency on 'A', everything works as expected. So
> it would seem direct dependency state influence the state of reverse
> dependencies...
> 
> Will have a look...
> 
>  - Arnaud

Thanks for looking into this!  Instead of changing 'TCG_TPM' to
'TCG_TPM=y', the dependency should be on 'TRUSTED_KEYS=y'.  Then when
I've refactored ENCRYPTED_KEYS, removing the ENCRYPTED_KEYS dependency
on TRUSTED_KEYS, the EVM dependency would be '(TRUSTED_KEYS=y ||
TRUSTED_KEYS=n)'.  Do you want a temporary fix for now?

thanks,

Mimi