[PATCH] leon,gr1553b: improve init check

chrisj at rtems.org chrisj at rtems.org
Thu Oct 1 01:40:11 UTC 2020


From: Daniel Hellstrom <daniel at gaisler.com>

Check in init3 not needed since same data is already checked in init2
stage. Adds an extra check that the APB register space is available before
accessing it.

Closes #2331
---
 c/src/lib/libbsp/sparc/shared/1553/gr1553b.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/1553/gr1553b.c b/c/src/lib/libbsp/sparc/shared/1553/gr1553b.c
index 2e778606ac..c05d53a4f9 100644
--- a/c/src/lib/libbsp/sparc/shared/1553/gr1553b.c
+++ b/c/src/lib/libbsp/sparc/shared/1553/gr1553b.c
@@ -191,6 +191,8 @@ static int gr1553_init2(struct drvmgr_dev *dev)
 		return DRVMGR_FAIL;
 	}
 	pnpinfo = &ambadev->info;
+	if ( pnpinfo->apb_slv == NULL )
+		return DRVMGR_EIO;
 	regs = (struct gr1553b_regs *)pnpinfo->apb_slv->start;
 
 	/* Stop IRQ */
@@ -227,9 +229,6 @@ static int gr1553_init3(struct drvmgr_dev *dev)
 
 	/* Get device information from AMBA PnP information */
 	ambadev = (struct amba_dev_info *)dev->businfo;
-	if ( ambadev == NULL ) {
-		return DRVMGR_FAIL;
-	}
 	pnpinfo = &ambadev->info;
 	regs = (struct gr1553b_regs *)pnpinfo->apb_slv->start;
 
@@ -257,6 +256,12 @@ static int gr1553_init3(struct drvmgr_dev *dev)
 		gr1553_list_add(&gr1553_rt_root, feat);
 	}
 
+	if ( priv->features == 0 ) {
+		/* no features in HW should never happen.. an I/O error? */
+		free(priv);
+		return DRVMGR_EIO;
+	}
+
 	return DRVMGR_OK;
 }
 
-- 
2.24.1



More information about the devel mailing list