Changeset 7473807 in mainline for kernel/generic/src/proc/program.c


Ignore:
Timestamp:
2018-05-11T20:22:42Z (6 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d2c5159
Parents:
ae89656
Message:

Use atomic malloc allocations

We can safely use atomic allocations in places that use the non-failing
version of malloc(), but test the return value anyway. And also in some
places that can afford to return failure but did not because of comfort.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/proc/program.c

    rae89656 r7473807  
    7171errno_t program_create(as_t *as, uintptr_t entry_addr, char *name, program_t *prg)
    7272{
     73        uspace_arg_t *kernel_uarg = (uspace_arg_t *)
     74            malloc(sizeof(uspace_arg_t), FRAME_ATOMIC);
     75        if (!kernel_uarg)
     76                return ENOMEM;
     77
    7378        prg->loader_status = EE_OK;
    7479        prg->task = task_create(as, name);
    75         if (!prg->task)
     80        if (!prg->task) {
     81                free(kernel_uarg);
    7682                return ELIMIT;
     83        }
    7784
    7885        /*
     
    9097            &anon_backend, NULL, &virt, bound);
    9198        if (!area) {
     99                free(kernel_uarg);
    92100                task_destroy(prg->task);
    93101                prg->task = NULL;
    94102                return ENOMEM;
    95103        }
    96 
    97         uspace_arg_t *kernel_uarg = (uspace_arg_t *)
    98             malloc(sizeof(uspace_arg_t), 0);
    99104
    100105        kernel_uarg->uspace_entry = (void *) entry_addr;
Note: See TracChangeset for help on using the changeset viewer.