diff -urN linux-2.4.3/ipc/msg.c linux/ipc/msg.c --- linux-2.4.3/ipc/msg.c Mon Feb 19 10:18:18 2001 +++ linux/ipc/msg.c Wed Apr 4 00:38:21 2001 @@ -582,17 +582,11 @@ case SEARCH_ANY: return 1; case SEARCH_LESSEQUAL: - if(msg->m_type <=type) - return 1; - break; + return msg->m_type <=type; case SEARCH_EQUAL: - if(msg->m_type == type) - return 1; - break; + return msg->m_type == type; case SEARCH_NOTEQUAL: - if(msg->m_type != type) - return 1; - break; + return msg->m_type != type; } return 0; } @@ -613,7 +607,8 @@ wake_up_process(msr->r_tsk); } else { msr->r_msg = msg; - msq->q_lspid = msr->r_tsk->pid; + /* Was q_lspid; surely, this was the intent. */ + msq->q_lrpid = msr->r_tsk->pid; msq->q_rtime = CURRENT_TIME; wake_up_process(msr->r_tsk); return 1; @@ -753,10 +748,8 @@ if(testmsg(msg,msgtyp,mode)) { found_msg = msg; if(mode == SEARCH_LESSEQUAL && msg->m_type != 1) { - found_msg=msg; msgtyp=msg->m_type-1; } else { - found_msg=msg; break; } } diff -urN linux-2.4.3/ipc/sem.c linux/ipc/sem.c --- linux-2.4.3/ipc/sem.c Mon Feb 19 10:18:18 2001 +++ linux/ipc/sem.c Mon Apr 2 20:51:37 2001 @@ -775,7 +775,7 @@ } } -static struct sem_undo* freeundos(struct sem_array *sma, struct sem_undo* un) +static struct sem_undo* freeundos(struct sem_undo* un) { struct sem_undo* u; struct sem_undo** up; @@ -878,7 +878,7 @@ if(un->semid==semid) break; if(un->semid==-1) - un=freeundos(sma,un); + un=freeundos(un); else un=un->proc_next; } diff -urN linux-2.4.3/ipc/util.c linux/ipc/util.c --- linux-2.4.3/ipc/util.c Mon Feb 19 10:18:18 2001 +++ linux/ipc/util.c Mon Apr 2 20:39:55 2001 @@ -75,7 +75,8 @@ ids->size = 0; } ids->ary = SPIN_LOCK_UNLOCKED; - for(i=0;isize;i++) ids->entries[i].p = NULL; }