diff mbox

[5/8] bios: pciirq: add safe memory read check on mmap'd pci irq region

Message ID 20170714095225.1259-5-colin.king@canonical.com
State Accepted
Headers show

Commit Message

Colin Ian King July 14, 2017, 9:52 a.m. UTC
From: Colin Ian King <colin.king@canonical.com>

Ensure we can read the mmap'd memory.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/bios/pciirq/pciirq.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Alex Hung July 17, 2017, 7:20 a.m. UTC | #1
On 2017-07-14 02:52 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> Ensure we can read the mmap'd memory.
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/bios/pciirq/pciirq.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/bios/pciirq/pciirq.c b/src/bios/pciirq/pciirq.c
> index f9c16c8d..5b57df4f 100644
> --- a/src/bios/pciirq/pciirq.c
> +++ b/src/bios/pciirq/pciirq.c
> @@ -116,6 +116,11 @@ static int pciirq_test1(fwts_framework *fw)
>   		fwts_log_error(fw, "Cannot mmap firmware region.");
>   		return FWTS_ERROR;
>   	}
> +	if (fwts_safe_memread(mem, PCIIRQ_REGION_SIZE) != FWTS_OK) {
> +		fwts_log_error(fw, "Cannot read firmware region.");
> +		(void)fwts_munmap(mem, PCIIRQ_REGION_SIZE);
> +		return FWTS_ERROR;
> +	}
>   
>   	for (i = 0; i < PCIIRQ_REGION_SIZE; i+= 16) {
>   		pci_irq_routing_table *pciirq = (pci_irq_routing_table*)(mem+i);
> 

Acked-by: Alex Hung <alex.hung@canonical.com>
Ivan Hu July 17, 2017, 9:48 a.m. UTC | #2
On 07/14/2017 05:52 PM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> Ensure we can read the mmap'd memory.
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/bios/pciirq/pciirq.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/src/bios/pciirq/pciirq.c b/src/bios/pciirq/pciirq.c
> index f9c16c8d..5b57df4f 100644
> --- a/src/bios/pciirq/pciirq.c
> +++ b/src/bios/pciirq/pciirq.c
> @@ -116,6 +116,11 @@ static int pciirq_test1(fwts_framework *fw)
>   		fwts_log_error(fw, "Cannot mmap firmware region.");
>   		return FWTS_ERROR;
>   	}
> +	if (fwts_safe_memread(mem, PCIIRQ_REGION_SIZE) != FWTS_OK) {
> +		fwts_log_error(fw, "Cannot read firmware region.");
> +		(void)fwts_munmap(mem, PCIIRQ_REGION_SIZE);
> +		return FWTS_ERROR;
> +	}
>   
>   	for (i = 0; i < PCIIRQ_REGION_SIZE; i+= 16) {
>   		pci_irq_routing_table *pciirq = (pci_irq_routing_table*)(mem+i);
> 

Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff mbox

Patch

diff --git a/src/bios/pciirq/pciirq.c b/src/bios/pciirq/pciirq.c
index f9c16c8d..5b57df4f 100644
--- a/src/bios/pciirq/pciirq.c
+++ b/src/bios/pciirq/pciirq.c
@@ -116,6 +116,11 @@  static int pciirq_test1(fwts_framework *fw)
 		fwts_log_error(fw, "Cannot mmap firmware region.");
 		return FWTS_ERROR;
 	}
+	if (fwts_safe_memread(mem, PCIIRQ_REGION_SIZE) != FWTS_OK) {
+		fwts_log_error(fw, "Cannot read firmware region.");
+		(void)fwts_munmap(mem, PCIIRQ_REGION_SIZE);
+		return FWTS_ERROR;
+	}
 
 	for (i = 0; i < PCIIRQ_REGION_SIZE; i+= 16) {
 		pci_irq_routing_table *pciirq = (pci_irq_routing_table*)(mem+i);