diff options
Diffstat (limited to 'drivers/acpi/apei/bert.c')
| -rw-r--r-- | drivers/acpi/apei/bert.c | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/drivers/acpi/apei/bert.c b/drivers/acpi/apei/bert.c index 19e50fcbf4d6..598fd19b65fa 100644 --- a/drivers/acpi/apei/bert.c +++ b/drivers/acpi/apei/bert.c @@ -29,6 +29,7 @@  #undef pr_fmt  #define pr_fmt(fmt) "BERT: " fmt +#define ACPI_BERT_PRINT_MAX_LEN 1024  static int bert_disable; @@ -58,8 +59,11 @@ static void __init bert_print_all(struct acpi_bert_region *region,  		}  		pr_info_once("Error records from previous boot:\n"); - -		cper_estatus_print(KERN_INFO HW_ERR, estatus); +		if (region_len < ACPI_BERT_PRINT_MAX_LEN) +			cper_estatus_print(KERN_INFO HW_ERR, estatus); +		else +			pr_info_once("Max print length exceeded, table data is available at:\n" +				     "/sys/firmware/acpi/tables/data/BERT");  		/*  		 * Because the boot error source is "one-time polled" type, @@ -77,7 +81,7 @@ static int __init setup_bert_disable(char *str)  {  	bert_disable = 1; -	return 0; +	return 1;  }  __setup("bert_disable", setup_bert_disable);  |