Author: ed
Date: Fri Jul  8 20:09:21 2016
New Revision: 302448
URL: https://svnweb.freebsd.org/changeset/base/302448

Log:
  Don't forget to set sa->narg for CloudABI system calls.
  
  It turns out that this value is not used within the system call code
  under normal conditions, except when using tracing tools like ktrace.
  If we forget to set this value, it is set to random garbage. This may
  cause ktrace to hang indefinitely, making it impossible to kill.
  
  Reported by: Michael Plass
  PR: 210800
  MFC before: 11.0-RELEASE

Modified:
  head/sys/amd64/cloudabi64/cloudabi64_sysvec.c
  head/sys/arm64/cloudabi64/cloudabi64_sysvec.c

Modified: head/sys/amd64/cloudabi64/cloudabi64_sysvec.c
==============================================================================
--- head/sys/amd64/cloudabi64/cloudabi64_sysvec.c       Fri Jul  8 19:19:30 
2016        (r302447)
+++ head/sys/amd64/cloudabi64/cloudabi64_sysvec.c       Fri Jul  8 20:09:21 
2016        (r302448)
@@ -96,6 +96,7 @@ cloudabi64_fetch_syscall_args(struct thr
        if (sa->code >= CLOUDABI64_SYS_MAXSYSCALL)
                return (ENOSYS);
        sa->callp = &cloudabi64_sysent[sa->code];
+       sa->narg = sa->callp->sy_narg;
 
        /* Fetch system call arguments. */
        sa->args[0] = frame->tf_rdi;

Modified: head/sys/arm64/cloudabi64/cloudabi64_sysvec.c
==============================================================================
--- head/sys/arm64/cloudabi64/cloudabi64_sysvec.c       Fri Jul  8 19:19:30 
2016        (r302447)
+++ head/sys/arm64/cloudabi64/cloudabi64_sysvec.c       Fri Jul  8 20:09:21 
2016        (r302448)
@@ -77,6 +77,7 @@ cloudabi64_fetch_syscall_args(struct thr
        if (sa->code >= CLOUDABI64_SYS_MAXSYSCALL)
                return (ENOSYS);
        sa->callp = &cloudabi64_sysent[sa->code];
+       sa->narg = sa->callp->sy_narg;
 
        /* Fetch system call arguments. */
        for (i = 0; i < MAXARGS; i++)
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to