diff -r 3b4e82d9904b -r acc6430bfb32 master/module.c --- 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);