diff options
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/1553/gr1553b.c | 11 | ||||
-rw-r--r-- | c/src/lib/libbsp/sparc/shared/startup/linkcmds.base | 6 | ||||
-rw-r--r-- | cpukit/libfs/src/imfs/imfs_memfile.c | 3 |
3 files changed, 14 insertions, 6 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; } diff --git a/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base b/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base index 219a060572..c4a9b23002 100644 --- a/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base +++ b/c/src/lib/libbsp/sparc/shared/startup/linkcmds.base @@ -87,11 +87,13 @@ SECTIONS The .ctor section from the crtend file contains the end of ctors marker and it must be last */ KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) - KEEP (*(SORT(.ctors*))) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) KEEP (*crtbegin.o(.dtors)) KEEP (*crtbegin?.o(.dtors)) KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) - KEEP (*(SORT(.dtors*))) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) _rodata_start = . ; *(.rodata*) diff --git a/cpukit/libfs/src/imfs/imfs_memfile.c b/cpukit/libfs/src/imfs/imfs_memfile.c index 2b6a49698a..35d456ab2b 100644 --- a/cpukit/libfs/src/imfs/imfs_memfile.c +++ b/cpukit/libfs/src/imfs/imfs_memfile.c @@ -188,9 +188,10 @@ static int IMFS_memfile_extend( offset = 0; } } else { - for ( ; block>=old_blocks ; block-- ) { + for ( ; block>old_blocks ; block-- ) { IMFS_memfile_remove_block( memfile, block ); } + IMFS_memfile_remove_block( memfile, old_blocks ); rtems_set_errno_and_return_minus_one( ENOSPC ); } } |