diff mbox series

acpi, nfit: Fix ARS overflow continuation

Message ID 154152034315.1304656.17798869260848445154.stgit@dwillia2-desk3.amr.corp.intel.com (mailing list archive)
State Accepted
Commit 3fa58dcab50a0aa16817f16a8d38aee869eb3fb9
Headers show
Series acpi, nfit: Fix ARS overflow continuation | expand

Commit Message

Dan Williams Nov. 6, 2018, 4:05 p.m. UTC
When the platform BIOS is unable to report all the media error records
it requires the OS to restart the scrub at a prescribed location. The
driver detects the overflow condition, but then fails to report it to
the ARS state machine after reaping the records. Propagate -ENOSPC
correctly to continue the ARS operation.

Cc: <stable@vger.kernel.org>
Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
Reported-by: Jacek Zloch <jacek.zloch@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
---
 drivers/acpi/nfit/core.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Dave Jiang Nov. 6, 2018, 4:26 p.m. UTC | #1
On 11/6/18 9:05 AM, Dan Williams wrote:
> When the platform BIOS is unable to report all the media error records
> it requires the OS to restart the scrub at a prescribed location. The
> driver detects the overflow condition, but then fails to report it to
> the ARS state machine after reaping the records. Propagate -ENOSPC
> correctly to continue the ARS operation.
> 
> Cc: <stable@vger.kernel.org>
> Fixes: 1cf03c00e7c1 ("nfit: scrub and register regions in a workqueue")
> Reported-by: Jacek Zloch <jacek.zloch@intel.com>
> Signed-off-by: Dan Williams <dan.j.williams@intel.com>

Reviewed-by: Dave Jiang <dave.jiang@intel.com>

> ---
>  drivers/acpi/nfit/core.c |    4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
> index f8c638f3c946..5970b8f5f768 100644
> --- a/drivers/acpi/nfit/core.c
> +++ b/drivers/acpi/nfit/core.c
> @@ -2928,9 +2928,9 @@ static int acpi_nfit_query_poison(struct acpi_nfit_desc *acpi_desc)
>  		return rc;
>  
>  	if (ars_status_process_records(acpi_desc))
> -		return -ENOMEM;
> +		dev_err(acpi_desc->dev, "Failed to process ARS records\n");
>  
> -	return 0;
> +	return rc;
>  }
>  
>  static int ars_register(struct acpi_nfit_desc *acpi_desc,
> 
> _______________________________________________
> Linux-nvdimm mailing list
> Linux-nvdimm@lists.01.org
> https://lists.01.org/mailman/listinfo/linux-nvdimm
>
diff mbox series

Patch

diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
index f8c638f3c946..5970b8f5f768 100644
--- a/drivers/acpi/nfit/core.c
+++ b/drivers/acpi/nfit/core.c
@@ -2928,9 +2928,9 @@  static int acpi_nfit_query_poison(struct acpi_nfit_desc *acpi_desc)
 		return rc;
 
 	if (ars_status_process_records(acpi_desc))
-		return -ENOMEM;
+		dev_err(acpi_desc->dev, "Failed to process ARS records\n");
 
-	return 0;
+	return rc;
 }
 
 static int ars_register(struct acpi_nfit_desc *acpi_desc,