+ while (len == 0) {
+ mutex_unlock(&hello_mtx);
+ if (wait_for_completion_interruptible(&hello_wait))
+ return -ERESTARTSYS;
+ if (mutex_lock_interruptible(&hello_mtx))
+ return -ERESTARTSYS;
+ len = CIRC_SPACE(hello->head, hello->tail, MAXLEN);
+ }