[PATCH xserver 2/6] xfree86: Remove xf86InterceptSignals
Olivier Fourdan
ofourdan at redhat.com
Wed Dec 13 15:19:03 UTC 2017
On Mon, Nov 20, 2017 at 9:43 PM, Adam Jackson <ajax at redhat.com> wrote:
> The only consumer of this is the Linux vm86 backend for int10 (which you
> should not use), and there all it serves to do is make signals generated
> by the vm86 task non-fatal. In practice this error appears never to
> happen, and marching ahead with root privileges after arbitrary code has
> raised a signal seems like a poor plan.
>
> Remove the usage in the vm86 code, making this error fatal.
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
> hw/xfree86/common/xf86.h | 1 -
> hw/xfree86/common/xf86Events.c | 14 --------------
> hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c | 13 +------------
> 3 files changed, 1 insertion(+), 27 deletions(-)
>
> diff --git a/hw/xfree86/common/xf86.h b/hw/xfree86/common/xf86.h
> index db6e299b31..43b693143e 100644
> --- a/hw/xfree86/common/xf86.h
> +++ b/hw/xfree86/common/xf86.h
> @@ -215,7 +215,6 @@ extern _X_EXPORT void xf86DisableGeneralHandler(void
> *handler);
> extern _X_EXPORT void xf86EnableGeneralHandler(void *handler);
> extern _X_EXPORT InputHandlerProc xf86SetConsoleHandler(InputHandlerProc
> handler, void
> *data);
> -extern _X_EXPORT void xf86InterceptSignals(int *signo);
> extern _X_EXPORT void xf86ProcessActionEvent(ActionEvent action, void
> *arg);
> extern _X_EXPORT void xf86PrintBacktrace(void);
> extern _X_EXPORT Bool xf86VTOwner(void);
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/
> xf86Events.c
> index e2e6ca7691..a27c7ff1b0 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -267,15 +267,6 @@ xf86RemoveEnabledDevice(InputInfoPtr pInfo)
> InputThreadUnregisterDev(pInfo->fd);
> }
>
> -static int *xf86SignalIntercept = NULL;
> -
> -void
> -xf86InterceptSignals(int *signo)
> -{
> - if ((xf86SignalIntercept = signo))
> - *signo = -1;
> -}
> -
> /*
> * xf86SigWrapper --
> * Catch unexpected signals and exit or continue cleanly.
> @@ -283,11 +274,6 @@ xf86InterceptSignals(int *signo)
> int
> xf86SigWrapper(int signo)
> {
> - if (xf86SignalIntercept && (*xf86SignalIntercept < 0)) {
> - *xf86SignalIntercept = signo;
> - return 0; /* continue */
> - }
> -
> xf86Info.caughtSignal = TRUE;
> return 1; /* abort */
> }
> diff --git a/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
> b/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
> index 1876983991..134809814f 100644
> --- a/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
> +++ b/hw/xfree86/os-support/linux/int10/vm86/linux_vm86.c
> @@ -231,20 +231,9 @@ vm86_GP_fault(xf86Int10InfoPtr pInt)
> static int
> do_vm86(xf86Int10InfoPtr pInt)
> {
> - int retval, signo;
> + int retval;
>
> - xf86InterceptSignals(&signo);
> retval = vm86_rep(VM86S);
> - xf86InterceptSignals(NULL);
> -
> - if (signo >= 0) {
> - xf86DrvMsg(pInt->pScrn->scrnIndex, X_ERROR,
> - "vm86() syscall generated signal %d.\n", signo);
> - dump_registers(pInt);
> - dump_code(pInt);
> - stack_trace(pInt);
> - return 0;
> - }
>
> switch (VM86_TYPE(retval)) {
> case VM86_UNKNOWN:
> --
> 2.14.3
>
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: https://lists.x.org/mailman/listinfo/xorg-devel
I can't tell whether or not this happens in practice, but for the code
part, this is:
Reviewed-by: Olivier Fourdan <ofourdan at redhat.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.x.org/archives/xorg-devel/attachments/20171213/ffbf44fe/attachment.html>
More information about the xorg-devel
mailing list