linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ACPI / APEI: Fix parsing HEST that includes Deferred Machine Check subtable
@ 2018-11-12 19:00 Ghannam, Yazen
  2019-01-14 10:43 ` Borislav Petkov
  0 siblings, 1 reply; 3+ messages in thread
From: Ghannam, Yazen @ 2018-11-12 19:00 UTC (permalink / raw)
  To: linux-acpi
  Cc: linux-kernel, rjw, lenb, tony.luck, bp, keescook, Ghannam, Yazen

From: Yazen Ghannam <yazen.ghannam@amd.com>

ACPI 6.2 includes a new definition for a Deferred Machine Check "DMC"
subtable.

The definition of this subtable was included in following commit:

c042933df2b1 ("ACPICA: Add support for new HEST subtable")

However, the HEST parsing function was not updated to include this new
subtable. Therefore, Linux will fail to parse the HEST on systems that
include a DMC entry.

Add the length check for the new DMC subtable so that HEST parsing
doesn't fail on systems that include it.

Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
---
 drivers/acpi/apei/hest.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
index b1e9f81ebeea..0935a0ef37e5 100644
--- a/drivers/acpi/apei/hest.c
+++ b/drivers/acpi/apei/hest.c
@@ -53,6 +53,7 @@ static const int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = {
 	[ACPI_HEST_TYPE_AER_BRIDGE] = sizeof(struct acpi_hest_aer_bridge),
 	[ACPI_HEST_TYPE_GENERIC_ERROR] = sizeof(struct acpi_hest_generic),
 	[ACPI_HEST_TYPE_GENERIC_ERROR_V2] = sizeof(struct acpi_hest_generic_v2),
+	[ACPI_HEST_TYPE_IA32_DEFERRED_CHECK] = -1,
 };
 
 static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
@@ -75,6 +76,11 @@ static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
 		mc = (struct acpi_hest_ia_machine_check *)hest_hdr;
 		len = sizeof(*mc) + mc->num_hardware_banks *
 			sizeof(struct acpi_hest_ia_error_bank);
+	} else if (hest_type == ACPI_HEST_TYPE_IA32_DEFERRED_CHECK) {
+		struct acpi_hest_ia_deferred_check *mc;
+		mc = (struct acpi_hest_ia_deferred_check *)hest_hdr;
+		len = sizeof(*mc) + mc->num_hardware_banks *
+			sizeof(struct acpi_hest_ia_error_bank);
 	}
 	BUG_ON(len == -1);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ACPI / APEI: Fix parsing HEST that includes Deferred Machine Check subtable
  2018-11-12 19:00 [PATCH] ACPI / APEI: Fix parsing HEST that includes Deferred Machine Check subtable Ghannam, Yazen
@ 2019-01-14 10:43 ` Borislav Petkov
  2019-01-15 18:44   ` Rafael J. Wysocki
  0 siblings, 1 reply; 3+ messages in thread
From: Borislav Petkov @ 2019-01-14 10:43 UTC (permalink / raw)
  To: Ghannam, Yazen; +Cc: linux-acpi, linux-kernel, rjw, lenb, tony.luck, keescook

On Mon, Nov 12, 2018 at 07:00:55PM +0000, Ghannam, Yazen wrote:
> From: Yazen Ghannam <yazen.ghannam@amd.com>
> 
> ACPI 6.2 includes a new definition for a Deferred Machine Check "DMC"
> subtable.
> 
> The definition of this subtable was included in following commit:
> 
> c042933df2b1 ("ACPICA: Add support for new HEST subtable")
> 
> However, the HEST parsing function was not updated to include this new
> subtable. Therefore, Linux will fail to parse the HEST on systems that
> include a DMC entry.
> 
> Add the length check for the new DMC subtable so that HEST parsing
> doesn't fail on systems that include it.
> 
> Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
> ---
>  drivers/acpi/apei/hest.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
> index b1e9f81ebeea..0935a0ef37e5 100644
> --- a/drivers/acpi/apei/hest.c
> +++ b/drivers/acpi/apei/hest.c
> @@ -53,6 +53,7 @@ static const int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = {
>  	[ACPI_HEST_TYPE_AER_BRIDGE] = sizeof(struct acpi_hest_aer_bridge),
>  	[ACPI_HEST_TYPE_GENERIC_ERROR] = sizeof(struct acpi_hest_generic),
>  	[ACPI_HEST_TYPE_GENERIC_ERROR_V2] = sizeof(struct acpi_hest_generic_v2),
> +	[ACPI_HEST_TYPE_IA32_DEFERRED_CHECK] = -1,
>  };
>  
>  static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
> @@ -75,6 +76,11 @@ static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
>  		mc = (struct acpi_hest_ia_machine_check *)hest_hdr;
>  		len = sizeof(*mc) + mc->num_hardware_banks *
>  			sizeof(struct acpi_hest_ia_error_bank);
> +	} else if (hest_type == ACPI_HEST_TYPE_IA32_DEFERRED_CHECK) {
> +		struct acpi_hest_ia_deferred_check *mc;
> +		mc = (struct acpi_hest_ia_deferred_check *)hest_hdr;
> +		len = sizeof(*mc) + mc->num_hardware_banks *
> +			sizeof(struct acpi_hest_ia_error_bank);
>  	}
>  	BUG_ON(len == -1);
>  
> -- 

Reviewed-by: Borislav Petkov <bp@suse.de>

-- 
Regards/Gruss,
    Boris.

Good mailing practices for 400: avoid top-posting and trim the reply.

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] ACPI / APEI: Fix parsing HEST that includes Deferred Machine Check subtable
  2019-01-14 10:43 ` Borislav Petkov
@ 2019-01-15 18:44   ` Rafael J. Wysocki
  0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2019-01-15 18:44 UTC (permalink / raw)
  To: Borislav Petkov, Ghannam, Yazen
  Cc: linux-acpi, linux-kernel, lenb, tony.luck, keescook

On Monday, January 14, 2019 11:43:50 AM CET Borislav Petkov wrote:
> On Mon, Nov 12, 2018 at 07:00:55PM +0000, Ghannam, Yazen wrote:
> > From: Yazen Ghannam <yazen.ghannam@amd.com>
> > 
> > ACPI 6.2 includes a new definition for a Deferred Machine Check "DMC"
> > subtable.
> > 
> > The definition of this subtable was included in following commit:
> > 
> > c042933df2b1 ("ACPICA: Add support for new HEST subtable")
> > 
> > However, the HEST parsing function was not updated to include this new
> > subtable. Therefore, Linux will fail to parse the HEST on systems that
> > include a DMC entry.
> > 
> > Add the length check for the new DMC subtable so that HEST parsing
> > doesn't fail on systems that include it.
> > 
> > Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
> > ---
> >  drivers/acpi/apei/hest.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
> > index b1e9f81ebeea..0935a0ef37e5 100644
> > --- a/drivers/acpi/apei/hest.c
> > +++ b/drivers/acpi/apei/hest.c
> > @@ -53,6 +53,7 @@ static const int hest_esrc_len_tab[ACPI_HEST_TYPE_RESERVED] = {
> >  	[ACPI_HEST_TYPE_AER_BRIDGE] = sizeof(struct acpi_hest_aer_bridge),
> >  	[ACPI_HEST_TYPE_GENERIC_ERROR] = sizeof(struct acpi_hest_generic),
> >  	[ACPI_HEST_TYPE_GENERIC_ERROR_V2] = sizeof(struct acpi_hest_generic_v2),
> > +	[ACPI_HEST_TYPE_IA32_DEFERRED_CHECK] = -1,
> >  };
> >  
> >  static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
> > @@ -75,6 +76,11 @@ static int hest_esrc_len(struct acpi_hest_header *hest_hdr)
> >  		mc = (struct acpi_hest_ia_machine_check *)hest_hdr;
> >  		len = sizeof(*mc) + mc->num_hardware_banks *
> >  			sizeof(struct acpi_hest_ia_error_bank);
> > +	} else if (hest_type == ACPI_HEST_TYPE_IA32_DEFERRED_CHECK) {
> > +		struct acpi_hest_ia_deferred_check *mc;
> > +		mc = (struct acpi_hest_ia_deferred_check *)hest_hdr;
> > +		len = sizeof(*mc) + mc->num_hardware_banks *
> > +			sizeof(struct acpi_hest_ia_error_bank);
> >  	}
> >  	BUG_ON(len == -1);
> >  
> 
> Reviewed-by: Borislav Petkov <bp@suse.de>

Patch applied, thanks!


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-01-15 18:44 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-12 19:00 [PATCH] ACPI / APEI: Fix parsing HEST that includes Deferred Machine Check subtable Ghannam, Yazen
2019-01-14 10:43 ` Borislav Petkov
2019-01-15 18:44   ` Rafael J. Wysocki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).