agp/hp: fail gracefully if we don't find an IOC
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Thu, 7 Jan 2010 19:58:56 +0000 (12:58 -0700)
committerDave Airlie <airlied@redhat.com>
Mon, 11 Jan 2010 05:09:02 +0000 (15:09 +1000)
Bail out if we don't find an enclosing IOC.  Previously, if we didn't
find one, we tried to set things up using garbage for the SBA/IOC register
address, which causes a crash.

This crash only happens if firmware supplies a defective ACPI namespace, so
it doesn't fix any problems in the field.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
drivers/char/agp/hp-agp.c

index dc8a6f70483b51a8f1c1945959fcf4cbc552bfaa..58752b70efead7a76ca65c1441574dfa50931a07 100644 (file)
@@ -508,6 +508,9 @@ zx1_gart_probe (acpi_handle obj, u32 depth, void *context, void **ret)
                handle = parent;
        } while (ACPI_SUCCESS(status));
 
                handle = parent;
        } while (ACPI_SUCCESS(status));
 
+       if (ACPI_FAILURE(status))
+               return AE_OK;   /* found no enclosing IOC */
+
        if (hp_zx1_setup(sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa))
                return AE_OK;
 
        if (hp_zx1_setup(sba_hpa + HP_ZX1_IOC_OFFSET, lba_hpa))
                return AE_OK;