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;

Reply via email to