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;