2005-04-25 19:22:07

by Blaisorblade

[permalink] [raw]
Subject: [patch 1/1] uml: fix handling of no fpx_regs [critical, for 2.6.12]


From: Andree Leidenfrost <[email protected]>, Paolo 'Blaisorblade' Giarrusso <[email protected]>

Fix the error path, which is triggered when the processor misses the fpx regs
(i.e. the "fxsr" cpuinfo feature). For instance by VIA C3 Samuel2. Tested and
obvious, please merge ASAP.

Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
---

linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)

diff -puN arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling arch/um/os-Linux/sys-i386/registers.c
--- linux-2.6.12/arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling 2005-04-25 21:03:11.000000000 +0200
+++ linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c 2005-04-25 21:08:07.000000000 +0200
@@ -105,14 +105,15 @@ void init_registers(int pid)
panic("check_ptrace : PTRACE_GETREGS failed, errno = %d",
err);

+ errno = 0;
err = ptrace(PTRACE_GETFPXREGS, pid, 0, exec_fpx_regs);
if(!err)
return;
+ if(errno != EIO)
+ panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
+ errno);

have_fpx_regs = 0;
- if(err != EIO)
- panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
- err);

err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs);
if(err)
_


2005-04-25 19:57:59

by Alexander Nyberg

[permalink] [raw]
Subject: Re: [patch 1/1] uml: fix handling of no fpx_regs [critical, for 2.6.12]

m?n 2005-04-25 klockan 21:12 +0200 skrev [email protected]:
> From: Andree Leidenfrost <[email protected]>, Paolo 'Blaisorblade' Giarrusso <[email protected]>
>
> Fix the error path, which is triggered when the processor misses the fpx regs
> (i.e. the "fxsr" cpuinfo feature). For instance by VIA C3 Samuel2. Tested and
> obvious, please merge ASAP.
>
> Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
> ---
>
> linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c | 7 ++++---
> 1 files changed, 4 insertions(+), 3 deletions(-)
>
> diff -puN arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling arch/um/os-Linux/sys-i386/registers.c
> --- linux-2.6.12/arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling 2005-04-25 21:03:11.000000000 +0200
> +++ linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c 2005-04-25 21:08:07.000000000 +0200
> @@ -105,14 +105,15 @@ void init_registers(int pid)
> panic("check_ptrace : PTRACE_GETREGS failed, errno = %d",
> err);
>
> + errno = 0;
> err = ptrace(PTRACE_GETFPXREGS, pid, 0, exec_fpx_regs);
> if(!err)
> return;
> + if(errno != EIO)
> + panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
> + errno);

Looks like you mean "if (err != EIO)" here


> have_fpx_regs = 0;
> - if(err != EIO)
> - panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
> - err);
>
> err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs);
> if(err)



2005-04-26 09:52:39

by Andree Leidenfrost

[permalink] [raw]
Subject: Re: [patch 1/1] uml: fix handling of no fpx_regs [critical, for 2.6.12]

Hi Alexander

On Mon, 2005-04-25 at 21:57 +0200, Alexander Nyberg wrote:
> m?n 2005-04-25 klockan 21:12 +0200 skrev [email protected]:
> > From: Andree Leidenfrost <[email protected]>, Paolo 'Blaisorblade' Giarrusso <[email protected]>
> >
> > Fix the error path, which is triggered when the processor misses the fpx regs
> > (i.e. the "fxsr" cpuinfo feature). For instance by VIA C3 Samuel2. Tested and
> > obvious, please merge ASAP.
> >
> > Signed-off-by: Paolo 'Blaisorblade' Giarrusso <[email protected]>
> > ---
> >
> > linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c | 7 ++++---
> > 1 files changed, 4 insertions(+), 3 deletions(-)
> >
> > diff -puN arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling arch/um/os-Linux/sys-i386/registers.c
> > --- linux-2.6.12/arch/um/os-Linux/sys-i386/registers.c~uml-fix-no_fpx_regs_handling 2005-04-25 21:03:11.000000000 +0200
> > +++ linux-2.6.12-paolo/arch/um/os-Linux/sys-i386/registers.c 2005-04-25 21:08:07.000000000 +0200
> > @@ -105,14 +105,15 @@ void init_registers(int pid)
> > panic("check_ptrace : PTRACE_GETREGS failed, errno = %d",
> > err);
> >
> > + errno = 0;
> > err = ptrace(PTRACE_GETFPXREGS, pid, 0, exec_fpx_regs);
> > if(!err)
> > return;
> > + if(errno != EIO)
> > + panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
> > + errno);
>
> Looks like you mean "if (err != EIO)" here

No. The patch is correct.

ptrace will always return -1 in case of an error. The actual error code
is in errno, hence this is what needs to be compared to EIO. Please also
see the ptrace manpage.

> > have_fpx_regs = 0;
> > - if(err != EIO)
> > - panic("check_ptrace : PTRACE_GETFPXREGS failed, errno = %d",
> > - err);
> >
> > err = ptrace(PTRACE_GETFPREGS, pid, 0, exec_fp_regs);
> > if(err)

Best regards
Andree
--
Andree Leidenfrost
Sydney - Australia


Attachments:
signature.asc (189.00 B)
This is a digitally signed message part