mbox series

[0/1] Add explicit error for missing CONFIG_ASN1

Message ID 20200922155341.17906-1-James.Bottomley@HansenPartnership.com (mailing list archive)
Headers show
Series Add explicit error for missing CONFIG_ASN1 | expand

Message

James Bottomley Sept. 22, 2020, 3:53 p.m. UTC
I recently ran into this as an error from 0day.  On x86 it's pretty
much impossible to build a configuration where CONFIG_ASN1 isn't set,
so you rarely notice a problem using the ASN.1 compiler because
something else has selected it.  However, this compiler is never built
if CONFIG_ASN1 isn't set and the error you get from kbuild is
particularly unhelpful:

   make[4]: *** No rule to make target 'security/keys/trusted-keys/tpm2key.asn1.o', needed by 'security/keys/trusted-keys/built-in.a'.
   make[4]: *** [scripts/Makefile.build:283: security/keys/trusted-keys/trusted_tpm2.o] Error 1
   make[4]: Target '__build' not remade because of errors.

This patch changes the above error to the much easier to diagnose:

   scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined for the asn1_compiler.  Stop.
   make[3]: *** [scripts/Makefile.build:505: security/keys/trusted-keys] Error 2

James

---

James Bottomley (1):
  Makefile.build: Add an explicit error for missing ASN.1 compiler

 scripts/Makefile.build | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Randy Dunlap Sept. 22, 2020, 6:54 p.m. UTC | #1
On 9/22/20 8:53 AM, James Bottomley wrote:
> I recently ran into this as an error from 0day.  On x86 it's pretty
> much impossible to build a configuration where CONFIG_ASN1 isn't set,
> so you rarely notice a problem using the ASN.1 compiler because
> something else has selected it.  However, this compiler is never built
> if CONFIG_ASN1 isn't set and the error you get from kbuild is
> particularly unhelpful:
> 
>    make[4]: *** No rule to make target 'security/keys/trusted-keys/tpm2key.asn1.o', needed by 'security/keys/trusted-keys/built-in.a'.
>    make[4]: *** [scripts/Makefile.build:283: security/keys/trusted-keys/trusted_tpm2.o] Error 1
>    make[4]: Target '__build' not remade because of errors.
> 
> This patch changes the above error to the much easier to diagnose:
> 
>    scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined for the asn1_compiler.  Stop.
>    make[3]: *** [scripts/Makefile.build:505: security/keys/trusted-keys] Error 2
> 
> James
> 
> ---
> 
> James Bottomley (1):
>   Makefile.build: Add an explicit error for missing ASN.1 compiler
> 
>  scripts/Makefile.build | 5 +++++
>  1 file changed, 5 insertions(+)

Is there a missing
	select ASN1
somewhere?
James Bottomley Sept. 22, 2020, 7:19 p.m. UTC | #2
On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
> On 9/22/20 8:53 AM, James Bottomley wrote:
> > I recently ran into this as an error from 0day.  On x86 it's pretty
> > much impossible to build a configuration where CONFIG_ASN1 isn't
> > set, so you rarely notice a problem using the ASN.1 compiler
> > because something else has selected it.  However, this compiler is
> > never built if CONFIG_ASN1 isn't set and the error you get from
> > kbuild is particularly unhelpful:
> > 
> >    make[4]: *** No rule to make target 'security/keys/trusted-
> > keys/tpm2key.asn1.o', needed by 'security/keys/trusted-keys/built-
> > in.a'.
> >    make[4]: *** [scripts/Makefile.build:283: security/keys/trusted-
> > keys/trusted_tpm2.o] Error 1
> >    make[4]: Target '__build' not remade because of errors.
> > 
> > This patch changes the above error to the much easier to diagnose:
> > 
> >    scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined for
> > the asn1_compiler.  Stop.
> >    make[3]: *** [scripts/Makefile.build:505: security/keys/trusted-
> > keys] Error 2
> > 
> > James
> > 
> > ---
> > 
> > James Bottomley (1):
> >   Makefile.build: Add an explicit error for missing ASN.1 compiler
> > 
> >  scripts/Makefile.build | 5 +++++
> >  1 file changed, 5 insertions(+)
> 
> Is there a missing
> 	select ASN1
> somewhere?

You mean in the build used to produce the errors above?  Yes, so the
patch is to make the problem more explicit.

James
Randy Dunlap Sept. 22, 2020, 7:38 p.m. UTC | #3
On 9/22/20 12:19 PM, James Bottomley wrote:
> On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
>> On 9/22/20 8:53 AM, James Bottomley wrote:
>>> I recently ran into this as an error from 0day.  On x86 it's pretty
>>> much impossible to build a configuration where CONFIG_ASN1 isn't
>>> set, so you rarely notice a problem using the ASN.1 compiler
>>> because something else has selected it.  However, this compiler is
>>> never built if CONFIG_ASN1 isn't set and the error you get from
>>> kbuild is particularly unhelpful:
>>>
>>>    make[4]: *** No rule to make target 'security/keys/trusted-
>>> keys/tpm2key.asn1.o', needed by 'security/keys/trusted-keys/built-
>>> in.a'.
>>>    make[4]: *** [scripts/Makefile.build:283: security/keys/trusted-
>>> keys/trusted_tpm2.o] Error 1
>>>    make[4]: Target '__build' not remade because of errors.
>>>
>>> This patch changes the above error to the much easier to diagnose:
>>>
>>>    scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined for
>>> the asn1_compiler.  Stop.
>>>    make[3]: *** [scripts/Makefile.build:505: security/keys/trusted-
>>> keys] Error 2
>>>
>>> James
>>>
>>> ---
>>>
>>> James Bottomley (1):
>>>   Makefile.build: Add an explicit error for missing ASN.1 compiler
>>>
>>>  scripts/Makefile.build | 5 +++++
>>>  1 file changed, 5 insertions(+)
>>
>> Is there a missing
>> 	select ASN1
>> somewhere?
> 
> You mean in the build used to produce the errors above?  Yes, so the
> patch is to make the problem more explicit.

I appreciate that the message can be improved, but it seems possible
that some Kconfig could also be improved.
James Bottomley Sept. 22, 2020, 7:44 p.m. UTC | #4
On Tue, 2020-09-22 at 12:38 -0700, Randy Dunlap wrote:
> On 9/22/20 12:19 PM, James Bottomley wrote:
> > On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
> > > On 9/22/20 8:53 AM, James Bottomley wrote:
> > > > I recently ran into this as an error from 0day.  On x86 it's
> > > > pretty
> > > > much impossible to build a configuration where CONFIG_ASN1
> > > > isn't
> > > > set, so you rarely notice a problem using the ASN.1 compiler
> > > > because something else has selected it.  However, this compiler
> > > > is
> > > > never built if CONFIG_ASN1 isn't set and the error you get from
> > > > kbuild is particularly unhelpful:
> > > > 
> > > >    make[4]: *** No rule to make target 'security/keys/trusted-
> > > > keys/tpm2key.asn1.o', needed by 'security/keys/trusted-
> > > > keys/built-
> > > > in.a'.
> > > >    make[4]: *** [scripts/Makefile.build:283:
> > > > security/keys/trusted-
> > > > keys/trusted_tpm2.o] Error 1
> > > >    make[4]: Target '__build' not remade because of errors.
> > > > 
> > > > This patch changes the above error to the much easier to
> > > > diagnose:
> > > > 
> > > >    scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined
> > > > for
> > > > the asn1_compiler.  Stop.
> > > >    make[3]: *** [scripts/Makefile.build:505:
> > > > security/keys/trusted-
> > > > keys] Error 2
> > > > 
> > > > James
> > > > 
> > > > ---
> > > > 
> > > > James Bottomley (1):
> > > >   Makefile.build: Add an explicit error for missing ASN.1
> > > > compiler
> > > > 
> > > >  scripts/Makefile.build | 5 +++++
> > > >  1 file changed, 5 insertions(+)
> > > 
> > > Is there a missing
> > > 	select ASN1
> > > somewhere?
> > 
> > You mean in the build used to produce the errors above?  Yes, so
> > the
> > patch is to make the problem more explicit.
> 
> I appreciate that the message can be improved, but it seems possible
> that some Kconfig could also be improved.

I don't really see how.  To find the problem you have to identify a
conditional build in the Makefile that requires the asn1 compiler but
for which the config option doesn't have a select ASN1.  We don't
currently preserve the "what selected this symbol" information in
kconfig, which is what we'd need.

James
Randy Dunlap Sept. 22, 2020, 7:46 p.m. UTC | #5
On 9/22/20 12:44 PM, James Bottomley wrote:
> On Tue, 2020-09-22 at 12:38 -0700, Randy Dunlap wrote:
>> On 9/22/20 12:19 PM, James Bottomley wrote:
>>> On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
>>>> On 9/22/20 8:53 AM, James Bottomley wrote:
>>>>> I recently ran into this as an error from 0day.  On x86 it's
>>>>> pretty
>>>>> much impossible to build a configuration where CONFIG_ASN1
>>>>> isn't
>>>>> set, so you rarely notice a problem using the ASN.1 compiler
>>>>> because something else has selected it.  However, this compiler
>>>>> is
>>>>> never built if CONFIG_ASN1 isn't set and the error you get from
>>>>> kbuild is particularly unhelpful:
>>>>>
>>>>>    make[4]: *** No rule to make target 'security/keys/trusted-
>>>>> keys/tpm2key.asn1.o', needed by 'security/keys/trusted-
>>>>> keys/built-
>>>>> in.a'.
>>>>>    make[4]: *** [scripts/Makefile.build:283:
>>>>> security/keys/trusted-
>>>>> keys/trusted_tpm2.o] Error 1
>>>>>    make[4]: Target '__build' not remade because of errors.
>>>>>
>>>>> This patch changes the above error to the much easier to
>>>>> diagnose:
>>>>>
>>>>>    scripts/Makefile.build:387: *** CONFIG_ASN1 must be defined
>>>>> for
>>>>> the asn1_compiler.  Stop.
>>>>>    make[3]: *** [scripts/Makefile.build:505:
>>>>> security/keys/trusted-
>>>>> keys] Error 2
>>>>>
>>>>> James
>>>>>
>>>>> ---
>>>>>
>>>>> James Bottomley (1):
>>>>>   Makefile.build: Add an explicit error for missing ASN.1
>>>>> compiler
>>>>>
>>>>>  scripts/Makefile.build | 5 +++++
>>>>>  1 file changed, 5 insertions(+)
>>>>
>>>> Is there a missing
>>>> 	select ASN1
>>>> somewhere?
>>>
>>> You mean in the build used to produce the errors above?  Yes, so
>>> the
>>> patch is to make the problem more explicit.
>>
>> I appreciate that the message can be improved, but it seems possible
>> that some Kconfig could also be improved.
> 
> I don't really see how.  To find the problem you have to identify a
> conditional build in the Makefile that requires the asn1 compiler but
> for which the config option doesn't have a select ASN1.  We don't
> currently preserve the "what selected this symbol" information in
> kconfig, which is what we'd need.

Well, if you have a failing .config file, I would be glad to take a
look at it...
James Bottomley Sept. 22, 2020, 7:48 p.m. UTC | #6
On Tue, 2020-09-22 at 12:46 -0700, Randy Dunlap wrote:
> On 9/22/20 12:44 PM, James Bottomley wrote:
> > On Tue, 2020-09-22 at 12:38 -0700, Randy Dunlap wrote:
> > > On 9/22/20 12:19 PM, James Bottomley wrote:
> > > > On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
> > > > > On 9/22/20 8:53 AM, James Bottomley wrote:
> > > > > > I recently ran into this as an error from 0day.  On x86
> > > > > > it's
> > > > > > pretty
> > > > > > much impossible to build a configuration where CONFIG_ASN1
> > > > > > isn't
> > > > > > set, so you rarely notice a problem using the ASN.1
> > > > > > compiler
> > > > > > because something else has selected it.  However, this
> > > > > > compiler
> > > > > > is
> > > > > > never built if CONFIG_ASN1 isn't set and the error you get
> > > > > > from
> > > > > > kbuild is particularly unhelpful:
> > > > > > 
> > > > > >    make[4]: *** No rule to make target
> > > > > > 'security/keys/trusted-
> > > > > > keys/tpm2key.asn1.o', needed by 'security/keys/trusted-
> > > > > > keys/built-
> > > > > > in.a'.
> > > > > >    make[4]: *** [scripts/Makefile.build:283:
> > > > > > security/keys/trusted-
> > > > > > keys/trusted_tpm2.o] Error 1
> > > > > >    make[4]: Target '__build' not remade because of errors.
> > > > > > 
> > > > > > This patch changes the above error to the much easier to
> > > > > > diagnose:
> > > > > > 
> > > > > >    scripts/Makefile.build:387: *** CONFIG_ASN1 must be
> > > > > > defined
> > > > > > for
> > > > > > the asn1_compiler.  Stop.
> > > > > >    make[3]: *** [scripts/Makefile.build:505:
> > > > > > security/keys/trusted-
> > > > > > keys] Error 2
> > > > > > 
> > > > > > James
> > > > > > 
> > > > > > ---
> > > > > > 
> > > > > > James Bottomley (1):
> > > > > >   Makefile.build: Add an explicit error for missing ASN.1
> > > > > > compiler
> > > > > > 
> > > > > >  scripts/Makefile.build | 5 +++++
> > > > > >  1 file changed, 5 insertions(+)
> > > > > 
> > > > > Is there a missing
> > > > > 	select ASN1
> > > > > somewhere?
> > > > 
> > > > You mean in the build used to produce the errors above?  Yes,
> > > > so the patch is to make the problem more explicit.
> > > 
> > > I appreciate that the message can be improved, but it seems
> > > possible that some Kconfig could also be improved.
> > 
> > I don't really see how.  To find the problem you have to identify a
> > conditional build in the Makefile that requires the asn1 compiler
> > but for which the config option doesn't have a select ASN1.  We
> > don't currently preserve the "what selected this symbol"
> > information in kconfig, which is what we'd need.
> 
> Well, if you have a failing .config file, I would be glad to take a
> look at it...

The original problem is already fixed.  The point of this patch is to
make 0day explicitly identify it if it ever occurs again.

James
Randy Dunlap Sept. 22, 2020, 7:52 p.m. UTC | #7
On 9/22/20 12:48 PM, James Bottomley wrote:
> On Tue, 2020-09-22 at 12:46 -0700, Randy Dunlap wrote:
>> On 9/22/20 12:44 PM, James Bottomley wrote:
>>> On Tue, 2020-09-22 at 12:38 -0700, Randy Dunlap wrote:
>>>> On 9/22/20 12:19 PM, James Bottomley wrote:
>>>>> On Tue, 2020-09-22 at 11:54 -0700, Randy Dunlap wrote:
>>>>>> On 9/22/20 8:53 AM, James Bottomley wrote:
>>>>>>> I recently ran into this as an error from 0day.  On x86
>>>>>>> it's
>>>>>>> pretty
>>>>>>> much impossible to build a configuration where CONFIG_ASN1
>>>>>>> isn't
>>>>>>> set, so you rarely notice a problem using the ASN.1
>>>>>>> compiler
>>>>>>> because something else has selected it.  However, this
>>>>>>> compiler
>>>>>>> is
>>>>>>> never built if CONFIG_ASN1 isn't set and the error you get
>>>>>>> from
>>>>>>> kbuild is particularly unhelpful:
>>>>>>>
>>>>>>>    make[4]: *** No rule to make target
>>>>>>> 'security/keys/trusted-
>>>>>>> keys/tpm2key.asn1.o', needed by 'security/keys/trusted-
>>>>>>> keys/built-
>>>>>>> in.a'.
>>>>>>>    make[4]: *** [scripts/Makefile.build:283:
>>>>>>> security/keys/trusted-
>>>>>>> keys/trusted_tpm2.o] Error 1
>>>>>>>    make[4]: Target '__build' not remade because of errors.
>>>>>>>
>>>>>>> This patch changes the above error to the much easier to
>>>>>>> diagnose:
>>>>>>>
>>>>>>>    scripts/Makefile.build:387: *** CONFIG_ASN1 must be
>>>>>>> defined
>>>>>>> for
>>>>>>> the asn1_compiler.  Stop.
>>>>>>>    make[3]: *** [scripts/Makefile.build:505:
>>>>>>> security/keys/trusted-
>>>>>>> keys] Error 2
>>>>>>>
>>>>>>> James
>>>>>>>
>>>>>>> ---
>>>>>>>
>>>>>>> James Bottomley (1):
>>>>>>>   Makefile.build: Add an explicit error for missing ASN.1
>>>>>>> compiler
>>>>>>>
>>>>>>>  scripts/Makefile.build | 5 +++++
>>>>>>>  1 file changed, 5 insertions(+)
>>>>>>
>>>>>> Is there a missing
>>>>>> 	select ASN1
>>>>>> somewhere?
>>>>>
>>>>> You mean in the build used to produce the errors above?  Yes,
>>>>> so the patch is to make the problem more explicit.
>>>>
>>>> I appreciate that the message can be improved, but it seems
>>>> possible that some Kconfig could also be improved.
>>>
>>> I don't really see how.  To find the problem you have to identify a
>>> conditional build in the Makefile that requires the asn1 compiler
>>> but for which the config option doesn't have a select ASN1.  We
>>> don't currently preserve the "what selected this symbol"
>>> information in kconfig, which is what we'd need.
>>
>> Well, if you have a failing .config file, I would be glad to take a
>> look at it...
> 
> The original problem is already fixed.  The point of this patch is to
> make 0day explicitly identify it if it ever occurs again.

Got it. That's helpful info IMO.

thanks.