sim: Fix a bug in prlimit syscall in SE mode
authorTuan Ta <qtt2@cornell.edu>
Thu, 21 Dec 2017 16:06:10 +0000 (11:06 -0500)
committerTuan Ta <qtt2@cornell.edu>
Fri, 5 Jan 2018 15:34:20 +0000 (15:34 +0000)
The old_limit pointer is supposed to be the 4th argument (index 3) of
the prlimit syscall. This patch sets old_limit pointer to the correct
argument.

Change-Id: I97808f7234cd2622cb3eb2f1e0beb7fc8cf492c1
Reviewed-on: https://gem5-review.googlesource.com/6903
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Brandon Potter <Brandon.Potter@amd.com>

src/sim/syscall_emul.hh

index a24028f081356466c70fa8751cbd2fa233c5e77c..2ffd6d6ae1c21307142b1bdc1b426bb9f437f63f 100644 (file)
@@ -1705,8 +1705,7 @@ prlimitFunc(SyscallDesc *desc, int callnum, Process *process,
     Addr o = process->getSyscallArg(tc, index);
     if (o != 0)
     {
-        TypedBufferArg<typename OS::rlimit> rlp(
-                process->getSyscallArg(tc, index));
+        TypedBufferArg<typename OS::rlimit> rlp(o);
         switch (resource) {
           case OS::TGT_RLIMIT_STACK:
             // max stack size in bytes: make up a number (8MB for now)