Kernel: fix for senda erroneously setting errors
Bug reported and fixed by Arne Welzel.
This commit is contained in:
parent
65e54c23e3
commit
1992529666
1 changed files with 2 additions and 1 deletions
|
@ -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))
|
||||||
|
|
Loading…
Reference in a new issue