When booting with SME active, EFI tables must be mapped unencrypted since
they were built by UEFI in unencrypted memory. Update the list of tables
to be checked during early_memremap() processing to account for new EFI
tables.
This fixes a bug where an EFI TPM log table has been created by UEFI, but
it lives in memory that has been marked as usable rather than reserved.
Signed-off-by: Tom Lendacky <[email protected]>
---
Changes since v1:
- Re-spun against EFI tree
---
arch/x86/platform/efi/efi.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 43b24e149312..c6ca959e2366 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -88,6 +88,9 @@ static const unsigned long * const efi_tables[] = {
#ifdef CONFIG_EFI_RCI2_TABLE
&rci2_table_phys,
#endif
+ &efi.rng_seed,
+ &efi.tpm_log,
+ &efi.tpm_final_log,
};
u64 efi_setup; /* efi setup_data physical address */
--
2.17.1
On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
>
> When booting with SME active, EFI tables must be mapped unencrypted since
> they were built by UEFI in unencrypted memory. Update the list of tables
> to be checked during early_memremap() processing to account for new EFI
> tables.
>
> This fixes a bug where an EFI TPM log table has been created by UEFI, but
> it lives in memory that has been marked as usable rather than reserved.
>
> Signed-off-by: Tom Lendacky <[email protected]>
>
> ---
> Changes since v1:
> - Re-spun against EFI tree
Which one? Surely not the one in the link I included?
> ---
> arch/x86/platform/efi/efi.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
> index 43b24e149312..c6ca959e2366 100644
> --- a/arch/x86/platform/efi/efi.c
> +++ b/arch/x86/platform/efi/efi.c
> @@ -88,6 +88,9 @@ static const unsigned long * const efi_tables[] = {
> #ifdef CONFIG_EFI_RCI2_TABLE
> &rci2_table_phys,
> #endif
> + &efi.rng_seed,
> + &efi.tpm_log,
> + &efi.tpm_final_log,
> };
>
> u64 efi_setup; /* efi setup_data physical address */
> --
> 2.17.1
>
On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
>>
>> When booting with SME active, EFI tables must be mapped unencrypted since
>> they were built by UEFI in unencrypted memory. Update the list of tables
>> to be checked during early_memremap() processing to account for new EFI
>> tables.
>>
>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
>> it lives in memory that has been marked as usable rather than reserved.
>>
>> Signed-off-by: Tom Lendacky <[email protected]>
>>
>> ---
>> Changes since v1:
>> - Re-spun against EFI tree
>
> Which one? Surely not the one in the link I included?
I did a git clone of
git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
and checked out branch next. Not sure what I missed...
Thanks,
Tom
>
>> ---
>> arch/x86/platform/efi/efi.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
>> index 43b24e149312..c6ca959e2366 100644
>> --- a/arch/x86/platform/efi/efi.c
>> +++ b/arch/x86/platform/efi/efi.c
>> @@ -88,6 +88,9 @@ static const unsigned long * const efi_tables[] = {
>> #ifdef CONFIG_EFI_RCI2_TABLE
>> &rci2_table_phys,
>> #endif
>> + &efi.rng_seed,
>> + &efi.tpm_log,
>> + &efi.tpm_final_log,
>> };
>>
>> u64 efi_setup; /* efi setup_data physical address */
>> --
>> 2.17.1
>>
On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
>
> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
> > On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
> >>
> >> When booting with SME active, EFI tables must be mapped unencrypted since
> >> they were built by UEFI in unencrypted memory. Update the list of tables
> >> to be checked during early_memremap() processing to account for new EFI
> >> tables.
> >>
> >> This fixes a bug where an EFI TPM log table has been created by UEFI, but
> >> it lives in memory that has been marked as usable rather than reserved.
> >>
> >> Signed-off-by: Tom Lendacky <[email protected]>
> >>
> >> ---
> >> Changes since v1:
> >> - Re-spun against EFI tree
> >
> > Which one? Surely not the one in the link I included?
>
> I did a git clone of
>
> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
>
> and checked out branch next. Not sure what I missed...
>
Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
that branch? It removes rng_seed from struct efi, hence my request to
rebase your patch.
IMO, best is to simply drop the 'static' from rng_seed, rename it to
efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
accessible from your code. I'm reluctant to put it back in struct efi.
On 2/25/20 11:58 AM, Ard Biesheuvel wrote:
> On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
>>
>> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
>>> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
>>>>
>>>> When booting with SME active, EFI tables must be mapped unencrypted since
>>>> they were built by UEFI in unencrypted memory. Update the list of tables
>>>> to be checked during early_memremap() processing to account for new EFI
>>>> tables.
>>>>
>>>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
>>>> it lives in memory that has been marked as usable rather than reserved.
>>>>
>>>> Signed-off-by: Tom Lendacky <[email protected]>
>>>>
>>>> ---
>>>> Changes since v1:
>>>> - Re-spun against EFI tree
>>>
>>> Which one? Surely not the one in the link I included?
>>
>> I did a git clone of
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
>>
>> and checked out branch next. Not sure what I missed...
>>
>
> Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
> that branch? It removes rng_seed from struct efi, hence my request to
> rebase your patch.
I had just assumed you wanted a cleaner version and didn't realize that
rng_seed was removed from struct efi. My bad for not building.
>
> IMO, best is to simply drop the 'static' from rng_seed, rename it to
> efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
> accessible from your code. I'm reluctant to put it back in struct efi.
Ok, I'll re-work the patch.
Thanks,
Tom
>
On Tue, 25 Feb 2020 at 19:10, Tom Lendacky <[email protected]> wrote:
>
> On 2/25/20 11:58 AM, Ard Biesheuvel wrote:
> > On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
> >>
> >> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
> >>> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
> >>>>
> >>>> When booting with SME active, EFI tables must be mapped unencrypted since
> >>>> they were built by UEFI in unencrypted memory. Update the list of tables
> >>>> to be checked during early_memremap() processing to account for new EFI
> >>>> tables.
> >>>>
> >>>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
> >>>> it lives in memory that has been marked as usable rather than reserved.
> >>>>
> >>>> Signed-off-by: Tom Lendacky <[email protected]>
> >>>>
> >>>> ---
> >>>> Changes since v1:
> >>>> - Re-spun against EFI tree
> >>>
> >>> Which one? Surely not the one in the link I included?
> >>
> >> I did a git clone of
> >>
> >> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
> >>
> >> and checked out branch next. Not sure what I missed...
> >>
> >
> > Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
> > that branch? It removes rng_seed from struct efi, hence my request to
> > rebase your patch.
>
> I had just assumed you wanted a cleaner version and didn't realize that
> rng_seed was removed from struct efi. My bad for not building.
>
> >
> > IMO, best is to simply drop the 'static' from rng_seed, rename it to
> > efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
> > accessible from your code. I'm reluctant to put it back in struct efi.
>
> Ok, I'll re-work the patch.
>
OK
Btw if you want the TPM part of the fix to go to -stable, better to
split them in two (and I'll put a cc:stable on the tpm one)
On Tue, 25 Feb 2020 at 20:21, Tom Lendacky <[email protected]> wrote:
>
> On 2/25/20 12:12 PM, Ard Biesheuvel wrote:
> > On Tue, 25 Feb 2020 at 19:10, Tom Lendacky <[email protected]> wrote:
> >>
> >> On 2/25/20 11:58 AM, Ard Biesheuvel wrote:
> >>> On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
> >>>>
> >>>> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
> >>>>> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
> >>>>>>
> >>>>>> When booting with SME active, EFI tables must be mapped unencrypted since
> >>>>>> they were built by UEFI in unencrypted memory. Update the list of tables
> >>>>>> to be checked during early_memremap() processing to account for new EFI
> >>>>>> tables.
> >>>>>>
> >>>>>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
> >>>>>> it lives in memory that has been marked as usable rather than reserved.
> >>>>>>
> >>>>>> Signed-off-by: Tom Lendacky <[email protected]>
> >>>>>>
> >>>>>> ---
> >>>>>> Changes since v1:
> >>>>>> - Re-spun against EFI tree
> >>>>>
> >>>>> Which one? Surely not the one in the link I included?
> >>>>
> >>>> I did a git clone of
> >>>>
> >>>> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
> >>>>
> >>>> and checked out branch next. Not sure what I missed...
> >>>>
> >>>
> >>> Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
> >>> that branch? It removes rng_seed from struct efi, hence my request to
> >>> rebase your patch.
> >>
> >> I had just assumed you wanted a cleaner version and didn't realize that
> >> rng_seed was removed from struct efi. My bad for not building.
> >>
> >>>
> >>> IMO, best is to simply drop the 'static' from rng_seed, rename it to
> >>> efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
> >>> accessible from your code. I'm reluctant to put it back in struct efi.
> >>
> >> Ok, I'll re-work the patch.
> >>
> >
> > OK
> >
> > Btw if you want the TPM part of the fix to go to -stable, better to
> > split them in two (and I'll put a cc:stable on the tpm one)
>
> I had thought about stable, but the fix gets tricky since the two tables
> were added at different times (4.16 and 5.3) and the efi_tables array was
> moved from drivers/firmware/efi/efi.c to arch/x86/platform/efi/efi.c in 5.4.
>
> I could do the two TPM tables each as their own patch and add an
> appropriate Cc: stable # v4.16.x-, etc., if you don't think that's
> overkill. The array move shouldn't be too hard to adjust for in stable.
> Thoughts?
>
So v5.4/v5.5 seems straight-forward then, no? Once that one is in, we
can do one specially for v4.19
On 2/25/20 12:12 PM, Ard Biesheuvel wrote:
> On Tue, 25 Feb 2020 at 19:10, Tom Lendacky <[email protected]> wrote:
>>
>> On 2/25/20 11:58 AM, Ard Biesheuvel wrote:
>>> On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
>>>>
>>>> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
>>>>> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
>>>>>>
>>>>>> When booting with SME active, EFI tables must be mapped unencrypted since
>>>>>> they were built by UEFI in unencrypted memory. Update the list of tables
>>>>>> to be checked during early_memremap() processing to account for new EFI
>>>>>> tables.
>>>>>>
>>>>>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
>>>>>> it lives in memory that has been marked as usable rather than reserved.
>>>>>>
>>>>>> Signed-off-by: Tom Lendacky <[email protected]>
>>>>>>
>>>>>> ---
>>>>>> Changes since v1:
>>>>>> - Re-spun against EFI tree
>>>>>
>>>>> Which one? Surely not the one in the link I included?
>>>>
>>>> I did a git clone of
>>>>
>>>> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
>>>>
>>>> and checked out branch next. Not sure what I missed...
>>>>
>>>
>>> Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
>>> that branch? It removes rng_seed from struct efi, hence my request to
>>> rebase your patch.
>>
>> I had just assumed you wanted a cleaner version and didn't realize that
>> rng_seed was removed from struct efi. My bad for not building.
>>
>>>
>>> IMO, best is to simply drop the 'static' from rng_seed, rename it to
>>> efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
>>> accessible from your code. I'm reluctant to put it back in struct efi.
>>
>> Ok, I'll re-work the patch.
>>
>
> OK
>
> Btw if you want the TPM part of the fix to go to -stable, better to
> split them in two (and I'll put a cc:stable on the tpm one)
I had thought about stable, but the fix gets tricky since the two tables
were added at different times (4.16 and 5.3) and the efi_tables array was
moved from drivers/firmware/efi/efi.c to arch/x86/platform/efi/efi.c in 5.4.
I could do the two TPM tables each as their own patch and add an
appropriate Cc: stable # v4.16.x-, etc., if you don't think that's
overkill. The array move shouldn't be too hard to adjust for in stable.
Thoughts?
Thanks,
Tom
>
On 2/25/20 1:28 PM, Ard Biesheuvel wrote:
> On Tue, 25 Feb 2020 at 20:21, Tom Lendacky <[email protected]> wrote:
>>
>> On 2/25/20 12:12 PM, Ard Biesheuvel wrote:
>>> On Tue, 25 Feb 2020 at 19:10, Tom Lendacky <[email protected]> wrote:
>>>>
>>>> On 2/25/20 11:58 AM, Ard Biesheuvel wrote:
>>>>> On Tue, 25 Feb 2020 at 18:54, Tom Lendacky <[email protected]> wrote:
>>>>>>
>>>>>> On 2/25/20 11:45 AM, Ard Biesheuvel wrote:
>>>>>>> On Tue, 25 Feb 2020 at 18:41, Tom Lendacky <[email protected]> wrote:
>>>>>>>>
>>>>>>>> When booting with SME active, EFI tables must be mapped unencrypted since
>>>>>>>> they were built by UEFI in unencrypted memory. Update the list of tables
>>>>>>>> to be checked during early_memremap() processing to account for new EFI
>>>>>>>> tables.
>>>>>>>>
>>>>>>>> This fixes a bug where an EFI TPM log table has been created by UEFI, but
>>>>>>>> it lives in memory that has been marked as usable rather than reserved.
>>>>>>>>
>>>>>>>> Signed-off-by: Tom Lendacky <[email protected]>
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Changes since v1:
>>>>>>>> - Re-spun against EFI tree
>>>>>>>
>>>>>>> Which one? Surely not the one in the link I included?
>>>>>>
>>>>>> I did a git clone of
>>>>>>
>>>>>> git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
>>>>>>
>>>>>> and checked out branch next. Not sure what I missed...
>>>>>>
>>>>>
>>>>> Weird. Do you see commit 5d288dbd88606d8f215c7138b10649115d79cadd on
>>>>> that branch? It removes rng_seed from struct efi, hence my request to
>>>>> rebase your patch.
>>>>
>>>> I had just assumed you wanted a cleaner version and didn't realize that
>>>> rng_seed was removed from struct efi. My bad for not building.
>>>>
>>>>>
>>>>> IMO, best is to simply drop the 'static' from rng_seed, rename it to
>>>>> efi_rng_seed, and drop an extern declaration in linux/efi.h so it is
>>>>> accessible from your code. I'm reluctant to put it back in struct efi.
>>>>
>>>> Ok, I'll re-work the patch.
>>>>
>>>
>>> OK
>>>
>>> Btw if you want the TPM part of the fix to go to -stable, better to
>>> split them in two (and I'll put a cc:stable on the tpm one)
>>
>> I had thought about stable, but the fix gets tricky since the two tables
>> were added at different times (4.16 and 5.3) and the efi_tables array was
>> moved from drivers/firmware/efi/efi.c to arch/x86/platform/efi/efi.c in 5.4.
>>
>> I could do the two TPM tables each as their own patch and add an
>> appropriate Cc: stable # v4.16.x-, etc., if you don't think that's
>> overkill. The array move shouldn't be too hard to adjust for in stable.
>> Thoughts?
>>
>
> So v5.4/v5.5 seems straight-forward then, no? Once that one is in, we
> can do one specially for v4.19
Works for me.
Thanks,
Tom
>