diff --git a/src/afs/LINUX/osi_sleep.c b/src/afs/LINUX/osi_sleep.c index 0c1e08c39c..ceaf5699da 100644 --- a/src/afs/LINUX/osi_sleep.c +++ b/src/afs/LINUX/osi_sleep.c @@ -203,7 +203,13 @@ int afs_osi_SleepSig(char *event) return retval; } -/* afs_osi_Sleep -- waits for an event to be notified, ignoring signals. */ +/* afs_osi_Sleep -- waits for an event to be notified, ignoring signals. + * - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE + * can wake up, even if all signals are blocked + * - TODO: handle signals correctly by passing an indication back to the + * caller that the wait has been interrupted and the stack should be cleaned + * up preparatory to signal delivery + */ void afs_osi_Sleep(char *event) { sigset_t saved_set; diff --git a/src/rx/LINUX/rx_kmutex.c b/src/rx/LINUX/rx_kmutex.c index eecddc56ca..26d2f2fbbb 100644 --- a/src/rx/LINUX/rx_kmutex.c +++ b/src/rx/LINUX/rx_kmutex.c @@ -59,11 +59,13 @@ void afs_mutex_exit(afs_kmutex_t *l) up(&l->sem); } -/* - * CV_WAIT and CV_TIMEDWAIT rely on the fact that the Linux kernel has - * a global lock. Thus we can safely drop our locks before calling the - * kernel sleep services. - * Or not. +/* CV_WAIT and CV_TIMEDWAIT sleep until the specified event occurs, or, in the + * case of CV_TIMEDWAIT, until the specified timeout occurs. + * - NOTE: that on Linux, there are circumstances in which TASK_INTERRUPTIBLE + * can wake up, even if all signals are blocked + * - TODO: handle signals correctly by passing an indication back to the + * caller that the wait has been interrupted and the stack should be cleaned + * up preparatory to signal delivery */ int afs_cv_wait(afs_kcondvar_t *cv, afs_kmutex_t *l, int sigok) {