Module Name: src Committed By: skrll Date: Thu Sep 19 13:51:45 UTC 2013
Modified Files: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm: vchiq_arm.c vchiq_core.c vchiq_kern_lib.c Log Message: Call {lmutex,_sema)_destroy appropriately To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 \ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c cvs rdiff -u -r1.3 -r1.4 \ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c cvs rdiff -u -r1.1 -r1.2 \ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.4 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.5 --- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c:1.4 Sat Aug 3 13:23:10 2013 +++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_arm.c Thu Sep 19 13:51:44 2013 @@ -682,6 +682,7 @@ vchiq_ioctl(struct file *fp, u_long cmd, waiter->bulk_waiter.bulk->userdata = NULL; spin_unlock(&bulk_waiter_spinlock); } + _sema_destroy(&waiter->bulk_waiter.event); kfree(waiter); } else { const VCHIQ_BULK_MODE_T mode_waiting = @@ -810,6 +811,8 @@ vchiq_ioctl(struct file *fp, u_long cmd, if (completion->reason == VCHIQ_SERVICE_CLOSED) { unlock_service(service1); + _sema_destroy(&user_service->insert_event); + _sema_destroy(&user_service->remove_event); kfree(user_service); } @@ -1159,6 +1162,8 @@ vchiq_close(struct file *fp) spin_unlock(&msg_queue_spinlock); unlock_service(service); + _sema_destroy(&user_service->insert_event); + _sema_destroy(&user_service->remove_event); kfree(user_service); } @@ -1192,6 +1197,7 @@ vchiq_close(struct file *fp) "bulk_waiter - cleaned up %x " "for pid %d", (unsigned int)waiter, waiter->pid); + _sema_destroy(&waiter->bulk_waiter.event); kfree(waiter); } } Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.3 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.4 --- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c:1.3 Mon Mar 25 22:58:42 2013 +++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_core.c Thu Sep 19 13:51:44 2013 @@ -276,6 +276,10 @@ unlock_service(VCHIQ_SERVICE_T *service) if (!service->ref_count) { BUG_ON(service->srvstate != VCHIQ_SRVSTATE_FREE); state->services[service->localport] = NULL; + + _sema_destroy(&service->remove_event); + _sema_destroy(&service->bulk_remove_event); + lmutex_destroy(&service->bulk_mutex); } else service = NULL; } @@ -2588,6 +2592,10 @@ vchiq_add_service_internal(VCHIQ_STATE_T lmutex_unlock(&state->mutex); if (!pservice) { + _sema_destroy(&service->remove_event); + _sema_destroy(&service->bulk_remove_event); + lmutex_destroy(&service->bulk_mutex); + kfree(service); service = NULL; } Index: src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c diff -u src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.1 src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.2 --- src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c:1.1 Fri Mar 8 12:32:31 2013 +++ src/sys/external/bsd/vchiq/dist/interface/vchiq_arm/vchiq_kern_lib.c Thu Sep 19 13:51:44 2013 @@ -153,8 +153,13 @@ VCHIQ_STATUS_T vchiq_shutdown(VCHIQ_INST "bulk_waiter - cleaned up %x " "for pid %d", (unsigned int)waiter, waiter->pid); + _sema_destroy(&waiter->bulk_waiter.event); + kfree(waiter); } + + lmutex_destroy(&instance->bulk_waiter_list_mutex); + kfree(instance); } @@ -436,6 +441,8 @@ vchiq_blocking_bulk_transfer(VCHIQ_SERVI bulk->userdata = NULL; spin_unlock(&bulk_waiter_spinlock); } + _sema_destroy(&waiter->bulk_waiter.event); + kfree(waiter); } else { waiter->pid = current->l_proc->p_pid;