[FOSS_TLK]tlk: coverity fixes
Jukka Virtanen [Fri, 10 Apr 2015 12:36:11 +0000 (15:36 +0300)]
Coverity ID : 29406

Change-Id: Ib9ba74ba3452bc76b4fe2fc9f23994abe8b2eb2b
Signed-off-by: Jukka Virtanen <jvirtanen@nvidia.com>
Reviewed-on: http://git-master/r/752885
Reviewed-by: Automatic_Commit_Validation_User
Tested-by: Inamdar Sharif <isharif@nvidia.com>
Reviewed-by: Varun Wadekar <vwadekar@nvidia.com>

app/app.c
arch/arm/arm/task.c
lib/libc/malloc.c

index c5e7e2e..6a8cdc7 100644 (file)
--- a/app/app.c
+++ b/app/app.c
@@ -24,8 +24,9 @@
 #include <app.h>
 #include <kernel/thread.h>
 
-extern const struct app_descriptor __apps_start;
-extern const struct app_descriptor __apps_end;
+/* mem labels defined by linker script in arch/arm */
+extern void *__apps_start;
+extern void *__apps_end;
 
 static void start_app(const struct app_descriptor *app);
 
@@ -33,15 +34,20 @@ static void start_app(const struct app_descriptor *app);
 void apps_init(void)
 {
        const struct app_descriptor *app;
+       const struct app_descriptor *apps_start;
+       const struct app_descriptor *apps_end;
+
+       apps_start = (const struct app_descriptor *)&__apps_start;
+       apps_end   = (const struct app_descriptor *)&__apps_end;
 
        /* call all the init routines */
-       for (app = &__apps_start; app != &__apps_end; app++) {
+       for (app = apps_start; app != apps_end; app++) {
                if (app->init)
                        app->init(app);
        }
 
        /* start any that want to start on boot */
-       for (app = &__apps_start; app != &__apps_end; app++) {
+       for (app = apps_start; app != apps_end; app++) {
                if (app->entry && (app->flags & APP_FLAG_DONT_START_ON_BOOT) == 0) {
                        start_app(app);
                }
index d497e60..d7dbcdf 100644 (file)
@@ -124,6 +124,11 @@ task_map_t *arch_task_map_memory(task_t *task, uint64_t addr, u_int size, u_int
        task_add_mapping(task, mptr);
 
        if (npages == 1) {
+               /* coverity[out-of-bounds: FALSE]
+                * Only single page translations here (mptr->size == PAGE_SIZE),
+                * and only the first element of pagelist parameter gets
+                * referenced.
+                */
                arm_mmu_translate_range(addr, &mptr->u_phys.contig, mptr);
 
                if (mptr->map_attrs == NULL) {
@@ -207,15 +212,16 @@ task_map_t *arch_task_setup_mmio(task_t *task, u_int id, addr_t paddr, u_int siz
 
 void arch_task_unmap_memory(task_t *task, task_map_t *mptr)
 {
-       if (mptr) {
-               /* if non-contig, free the pagelist */
-               if ((mptr->flags & TM_PHYS_CONTIG) == 0)
-                       free(mptr->u_phys.pagelist);
-               else {
-                       /* contig memory: need to free it if allocated with memalign() */
-                       if (mptr->flags & TM_PHYS_ALLOCATED)
-                               free_memalign((void *)physical_to_virtual(mptr->u_phys.contig));
-               }
+       ASSERT(task);
+       ASSERT(mptr);
+
+       /* if non-contig, free the pagelist */
+       if ((mptr->flags & TM_PHYS_CONTIG) == 0)
+               free(mptr->u_phys.pagelist);
+       else {
+               /* contig memory: need to free it if allocated with memalign() */
+               if (mptr->flags & TM_PHYS_ALLOCATED)
+                       free_memalign((void *)physical_to_virtual(mptr->u_phys.contig));
        }
 
        /* If the task pages are not yet mapped (e.g. error while loading a task)
index c216702..68c63f2 100644 (file)
@@ -92,8 +92,8 @@ void free(void *ptr)
 {
        uint32_t *ptr_tmp = (uint32_t *)(ptr - DEBUG_GUARD_HEADER_SIZE_BYTES);
 
-       ASSERT(*ptr_tmp++ == DEBUG_GUARD_HEADER);
-       ptr_tmp = (uint32_t *)(ptr + *ptr_tmp);
+       ASSERT(*ptr_tmp == DEBUG_GUARD_HEADER);
+       ptr_tmp = (uint32_t *)(ptr + *++ptr_tmp);
        ASSERT(*ptr_tmp == DEBUG_GUARD_FOOTER);
 
        return heap_free(ptr - DEBUG_GUARD_HEADER_SIZE_BYTES);