Changeset d51a0d6 in mainline for kernel/generic/src/ipc/sysipc.c


Ignore:
Timestamp:
2017-11-21T22:23:00Z (8 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
35f2bb1b
Parents:
c4c6025
Message:

Associate a kobject_t with a call_t

Let all the reference counting be done on call_t::kobject.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/src/ipc/sysipc.c

    rc4c6025 rd51a0d6  
    286286#endif
    287287
    288                 ipc_call_hold(call);
     288                kobject_add_ref(call->kobject);
    289289                rc = ipc_call_sync(kobj->phone, call);
    290290                spinlock_lock(&call->forget_lock);
    291291                bool forgotten = call->forget;
    292292                spinlock_unlock(&call->forget_lock);
    293                 ipc_call_release(call);
     293                kobject_put(call->kobject);
    294294
    295295#ifdef CONFIG_UDEBUG
     
    306306                                 * deallocation.
    307307                                 */
    308                                 ipc_call_free(call);
     308                                kobject_put(call->kobject);
    309309                        } else {
    310310                                /*
     
    323323       
    324324        memcpy(data->args, call->data.args, sizeof(data->args));
    325         ipc_call_free(call);
     325        kobject_put(call->kobject);
    326326        kobject_put(kobj);
    327327       
     
    420420            sizeof(call->data.args));
    421421        if (rc != 0) {
    422                 ipc_call_free(call);
     422                kobject_put(call->kobject);
    423423                kobject_put(kobj);
    424424                return (sysarg_t) rc;
     
    753753                STRUCT_TO_USPACE(calldata, &call->data);
    754754               
    755                 ipc_call_free(call);
     755                kobject_put(call->kobject);
    756756               
    757757                return ((sysarg_t) call) | IPC_CALLID_NOTIFICATION;
     
    762762               
    763763                if (call->flags & IPC_CALL_DISCARD_ANSWER) {
    764                         ipc_call_free(call);
     764                        kobject_put(call->kobject);
    765765                        goto restart;
    766766                }
    767767               
    768768                STRUCT_TO_USPACE(calldata, &call->data);
    769                 ipc_call_free(call);
     769                kobject_put(call->kobject);
    770770               
    771771                return ((sysarg_t) call) | IPC_CALLID_ANSWERED;
Note: See TracChangeset for help on using the changeset viewer.