From 518b3abb737fd02245c4400491388d15f5cb9e1f Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Wed, 24 Feb 2010 00:30:28 -0500 Subject: [PATCH] darwin afscall syscall should set retval because of how the ioctl based syscall works, passing back a real return value should be done this way, as it is for the other other afs syscall subcalls. matters for userspace handlers. Change-Id: I894b4bd633ce4823b1ce906861251fcbb3949af2 Reviewed-on: http://gerrit.openafs.org/1381 Reviewed-by: Derrick Brashear Tested-by: Derrick Brashear --- src/afs/afs_syscall.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/afs/afs_syscall.c b/src/afs/afs_syscall.c index 0bdfdf9..0486d6e 100644 --- a/src/afs/afs_syscall.c +++ b/src/afs/afs_syscall.c @@ -638,6 +638,11 @@ Afs_syscall() code = afs_syscall64_call(uap64->parm1, uap64->parm2, uap64->parm3, uap64->parm4, uap64->parm5, uap64->parm6); + /* pass back the code as syscall retval */ + if (code < 0) { + *retval = code; + code = 0; + } } else if (uap64->syscall == AFSCALL_SETPAG) { AFS_GLOCK(); code = afs_setpag(p, args, retval); @@ -676,6 +681,13 @@ Afs_syscall() code = afs_syscall_call(uap->parm1, uap->parm2, uap->parm3, uap->parm4, uap->parm5, uap->parm6); +#ifdef AFS_DARWIN_ENV + /* pass back the code as syscall retval */ + if (code < 0) { + *retval = code; + code = 0; + } +#endif } else if (uap->syscall == AFSCALL_SETPAG) { #ifdef AFS_SUN5_ENV register proc_t *procp; -- 1.9.4