important fsyscall bug fix (affects McKinley only)

From: David Mosberger <davidm_at_napali.hpl.hp.com>
Date: 2003-10-16 09:58:45
While working on a lightweight version of sigprocmask(), I discovered
that the McKinley E9 workaround had exactly the opposite effect from
what was intended: it was supposed to ensure that we always return at
priv level 3, and instead it caused us to always return at priv level
0!  Fortunately, the fix is pretty simple and the whole patch can be
found here:

  http://lia64.bkbits.net:8080/linux-ia64-2.5/cset@1.1512.1.22

Since the fsyscall stubs aren't in wide-spread use yet, I doubt this
bug will affect many people, but clearly it would have been a problem
going forward.  Also, remember that the workaround is needed only for
McKinley.  Merced and Madison are both OK in this regard.

The above patch also includes the sigprocmask() light-weight handler
because it's easiest to observe the bug with this handler (since it's
invoked via an inlined syscall; non-inlined syscalls mask the problem,
because they'll return immediately with br.ret again, which drops the
privilege level back to 3).

	--david
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Wed Oct 15 20:02:07 2003

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:19 EST