master/module.c
changeset 1189 acc6430bfb32
parent 1029 61ffe5f22306
child 1209 8be462afb7f4
child 1648 3e46fbb7eb1d
--- a/master/module.c	Fri Aug 01 12:32:53 2008 +0000
+++ b/master/module.c	Fri Aug 01 12:46:26 2008 +0000
@@ -473,7 +473,9 @@
     }
     master = &masters[master_index];
 
-    down(&master_sem);
+    if (down_interruptible(&master_sem))
+        goto out_return;
+
     if (master->reserved) {
         up(&master_sem);
         EC_ERR("Master %u is already in use!\n", master_index);
@@ -482,7 +484,8 @@
     master->reserved = 1;
     up(&master_sem);
 
-    down(&master->device_sem);
+    if (down_interruptible(&master->device_sem))
+        goto out_release;
     
     if (master->phase != EC_IDLE) {
         up(&master->device_sem);