--- 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);