[Bug 11491] New: _syscall_noerr do not handle syscall values in range [-EMAXERRNO; 0[ on MIPS

bugzilla at busybox.net bugzilla at busybox.net
Wed Nov 7 02:15:45 UTC 2018


https://bugs.busybox.net/show_bug.cgi?id=11491

            Bug ID: 11491
           Summary: _syscall_noerr do not handle syscall values in range
                    [-EMAXERRNO; 0[ on MIPS
           Product: uClibc
           Version: 0.9.33.2
          Hardware: Other
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P5
         Component: Other
          Assignee: unassigned at uclibc.org
          Reporter: boyko.cxx at gmail.com
                CC: uclibc-cvs at uclibc.org
  Target Milestone: ---

On Linux/MIPS (O32 ABI) for system call we have two result registers - v0 and
a3. 
v0 contains actual syscall result on success or error number on fail, a3 set to
0/1 for indicating syscall success/fail. (if a3 == 1, v0 contains errno).
Now as we can see from definition of handle_sys
(arch/mips/kernel/scall32-o32.S), handler treats returned by syscall function
(let's call "original") values in range [-EMAXERRNO; 0[ as -errno, a3 is set to
1 and final returned (to userspace) value is (-original).
Currently ulibc does not fully handle this mips syscall convention - wrappers
declared though _syscall_noerr (time, times) are not working properly.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the uClibc-cvs mailing list