work around negated error code bug on some mips kernels
commit5db475f0b987bfa7935a117aac81e14a98de34fb
authorRich Felker <dalias@aerifal.cx>
Wed, 11 Mar 2020 23:02:52 +0000 (11 19:02 -0400)
committerRich Felker <dalias@aerifal.cx>
Sun, 15 Mar 2020 01:23:37 +0000 (14 21:23 -0400)
tree3898bc9c526dfe56fe189c91493b9a7c7b1b082f
parentdb86ec100dc9973946ebfc9cf0d91686e334731a
work around negated error code bug on some mips kernels

on all mips variants, Linux did (and maybe still does) have some
syscall return paths that wrongly return both the error flag in r7 and
a negated error code in r2. in particular this happened for at least
some causes of ENOSYS.

add an extra check to only negate the error code if it's positive to
begin with.

bug report and concept for patch by Andreas Dröscher.
arch/mips/syscall_arch.h
arch/mips64/syscall_arch.h
arch/mipsn32/syscall_arch.h