Kernel: fix for senda erroneously setting errors

Bug reported and fixed by Arne Welzel.
This commit is contained in:
David van Moolenbroek 2011-10-31 16:03:26 +00:00
parent 65e54c23e3
commit 1992529666

View file

@ -1079,7 +1079,7 @@ field, caller->p_name, entry, priv(caller)->s_asynsize, priv(caller)->s_asyntab)
*===========================================================================*/ *===========================================================================*/
PRIVATE int mini_senda(struct proc *caller_ptr, asynmsg_t *table, size_t size) PRIVATE int mini_senda(struct proc *caller_ptr, asynmsg_t *table, size_t size)
{ {
int r = OK, dst_p, done, do_notify; int r, dst_p, done, do_notify;
unsigned int i; unsigned int i;
unsigned flags; unsigned flags;
endpoint_t dst; endpoint_t dst;
@ -1129,6 +1129,7 @@ PRIVATE int mini_senda(struct proc *caller_ptr, asynmsg_t *table, size_t size)
if (!(flags & AMF_VALID)) return(EINVAL); /* Must contain message */ if (!(flags & AMF_VALID)) return(EINVAL); /* Must contain message */
if (flags & AMF_DONE) continue; /* Already done processing */ if (flags & AMF_DONE) continue; /* Already done processing */
r = OK;
if (!isokendpt(tabent.dst, &dst_p)) if (!isokendpt(tabent.dst, &dst_p))
r = EDEADSRCDST; /* Bad destination, report the error */ r = EDEADSRCDST; /* Bad destination, report the error */
else if (iskerneln(dst_p)) else if (iskerneln(dst_p))