[rtems commit] leon,gr1553b: improve init check

Daniel Hellstrom danielh at rtems.org
Tue Aug 29 07:09:27 UTC 2017


Module:    rtems
Branch:    master
Commit:    360fb2fe75c88a5cc6ebff08f37fe60936352f62
Changeset: http://git.rtems.org/rtems/commit/?id=360fb2fe75c88a5cc6ebff08f37fe60936352f62

Author:    Daniel Hellstrom <daniel at gaisler.com>
Date:      Tue Aug 22 12:28:10 2017 +0200

leon,gr1553b: improve init check

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.

Updates #2331 but needs to be applied to 4.11 according to ticket.

---

 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 2e77860..c05d53a 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;
 }
 



More information about the vc mailing list