Red Hat Bugzilla – Bug 111287
[PATCH] alternate signal stack bug corrupts RNaT bits
Last modified: 2013-03-06 00:56:17 EST
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (compatible; Konqueror/3.1; Linux)
Description of problem:
On Fri, Jun 20, 2003 at 11:05:30PM -0700, David Mosberger wrote:
> >>>>> On Sat, 31 May 2003 00:18:39 +1000, Matt Chapman <email@example.com> said:
> Matt> Currently when using an alternate stack for signal handling,
> Matt> the trampoline code switches to the new register stack without
> Matt> saving bspstore. When returning to the original register
> Matt> stack, it calculates the bspstore as:
> Matt> bspstore0 = rse_skip_regs(bsp0, -rse_num_regs(bsp1 - (loadrs
> Matt> >> 19), bsp1)); where bsp0 is sc->sc_ar_bsp and bsp1 is the
> Matt> current bsp
> Matt> Presumably the result should be the same as the original
> Matt> bspstore. However, it isn't in the case when the original
> Matt> bspstore is pointing to slot 63 (the RNAT word). The new
> Matt> bspstore comes out pointing to slot 0 of the next group, and
> Matt> the RNAT bits never get written.
> Yes, this is a problem. Can you try the attached patch? Rather than
> storing an additional sc_bspstore member, the backing-store switching
> code checks whether bspstore points to an RNaT slot and, if so, stores
> the RNaT manually. This effectively "normalizes" the backing-store
> such that ar.bspstore never points to an RNaT slot.
Ah, that's a good way of doing it (given the constraints of backwards
compatibility). I've tested your patch and it works well for me.
I applied the patch here:
for the 2.4.23 ia64 patch. I would expect the same patch to apply to the RHEL 3 kernel.
Version-Release number of selected component (if applicable):
Steps to Reproduce:
No test case given.
Created attachment 96262 [details]
An errata has been issued which should help the problem described in this bug report.
This report is therefore being closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files, please follow the link below. You may reopen
this bug report if the solution does not work for you.