Hi, In kernel driver, using Semaphore to block on resources (Descriptors and memory). Semaphore is initialized in locking state using call "init_MTEX_LOCKED()", when resources are not available process calls down_interruptible() and blocks. Once resources are freed up() is called, and blocked process is unblocked. up() is called from interrupt context which frees resources on receiving ACK-Interrupt. Following is the code snippet for blocking: do { ret = down_interruptible(sem) if (ret == 0) { break; } else { printk("Semaphore is not acquired try again\n"); continue; } } while (1); While loop is used to make sure down_interrptible() is called until process acquires the semaphore. If process receives signal, process unblocks from down_interrptible() without acquiring the semaphore. Issue am seeing is once signal is received under the blocking state, again trying to acquire semaphore using down_interruptible() return value is always non-zero and process is looping in while loop. Can someone explain this behavior, I wrote the code with expectation that after signal is received again trying to acquire lock will either block the process or process will get semaphore. Please help me on this. Thanks, Mushtaq Khan