]> xenbits.xensource.com Git - people/dwmw2/xen.git/commitdiff
ns16550: Re-order the serial port address checking
authorWei Xu <xuwei5@hisilicon.com>
Wed, 26 Feb 2020 09:56:23 +0000 (10:56 +0100)
committerJan Beulich <jbeulich@suse.com>
Wed, 26 Feb 2020 09:56:23 +0000 (10:56 +0100)
The serial port address space ID qualifies the address. Whether a value
of zero for the serial port address can sensibly mean "disabled" depends
on the address space ID. Hence check the address space ID before
checking the address.

Signed-off-by: Wei Xu <xuwei5@hisilicon.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
xen/drivers/char/ns16550.c

index ab068c56dc84a65ffd337d2ae93b447acd162773..d8b52eb8139756489fc190550a6783ea531e745c 100644 (file)
@@ -1645,6 +1645,12 @@ static int __init ns16550_acpi_uart_init(const void *data)
 
     spcr = container_of(table, struct acpi_table_spcr, header);
 
+    if ( unlikely(spcr->serial_port.space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) )
+    {
+        printk("ns16550: Address space type is not mmio\n");
+        return -EINVAL;
+    }
+
     /*
      * The serial port address may be 0 for example
      * if the console redirection is disabled.
@@ -1655,12 +1661,6 @@ static int __init ns16550_acpi_uart_init(const void *data)
         return -EINVAL;
     }
 
-    if ( unlikely(spcr->serial_port.space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) )
-    {
-        printk("ns16550: Address space type is not mmio\n");
-        return -EINVAL;
-    }
-
     ns16550_init_common(uart);
 
     /*