mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-04 20:19:47 +08:00
parisc architecture fix for kernel v6.15-rc5:
Fix a double SIGFPE crash. -----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQS86RI+GtKfB8BJu973ErUQojoPXwUCaBeJrgAKCRD3ErUQojoP X5TOAQCs6UatNvHQFczDDRTmyKzR4iO9WFEGW+BrxaSXAGFKDAEAjA/ex3H1jeEv Qm3b427GFeRkbUelf3trbH/nkllw1A8= =UnPZ -----END PGP SIGNATURE----- Merge tag 'parisc-for-6.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux Pull parisc fix from Helge Deller: "Fix a double SIGFPE crash" * tag 'parisc-for-6.15-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Fix double SIGFPE crash
This commit is contained in:
commit
593bde4ca9
@ -97,9 +97,19 @@ handle_fpe(struct pt_regs *regs)
|
|||||||
|
|
||||||
memcpy(regs->fr, frcopy, sizeof regs->fr);
|
memcpy(regs->fr, frcopy, sizeof regs->fr);
|
||||||
if (signalcode != 0) {
|
if (signalcode != 0) {
|
||||||
force_sig_fault(signalcode >> 24, signalcode & 0xffffff,
|
int sig = signalcode >> 24;
|
||||||
(void __user *) regs->iaoq[0]);
|
|
||||||
return -1;
|
if (sig == SIGFPE) {
|
||||||
|
/*
|
||||||
|
* Clear floating point trap bit to avoid trapping
|
||||||
|
* again on the first floating-point instruction in
|
||||||
|
* the userspace signal handler.
|
||||||
|
*/
|
||||||
|
regs->fr[0] &= ~(1ULL << 38);
|
||||||
|
}
|
||||||
|
force_sig_fault(sig, signalcode & 0xffffff,
|
||||||
|
(void __user *) regs->iaoq[0]);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
return signalcode ? -1 : 0;
|
return signalcode ? -1 : 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user