From 6b2c65fdd169037c6ede250d4a8fec3d29a080ae Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Mon, 6 Nov 2006 00:30:09 +0100 Subject: [PATCH 1/5] Fix typo in Xvesa: incorrect reporting of DAC capabilities. --- hw/kdrive/vesa/vbe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/kdrive/vesa/vbe.c b/hw/kdrive/vesa/vbe.c index 5fbd8abef..08f0b037c 100644 --- a/hw/kdrive/vesa/vbe.c +++ b/hw/kdrive/vesa/vbe.c @@ -101,7 +101,7 @@ VbeReportVib(Vm86InfoPtr vi, VbeInfoBlock *vib) } ErrorF(")\n"); ErrorF("DAC is %s, controller is %sVGA compatible%s\n", - (vib->Capabilities[0]&1)?"fixed":"switchable", + (vib->Capabilities[0]&1)?"switchable":"fixed", (vib->Capabilities[0]&2)?"not ":"", (vib->Capabilities[0]&3)?", RAMDAC causes snow":""); ErrorF("Total memory: %lu kilobytes\n", 64L*vib->TotalMemory); From aa0261a98e9d5b1349b33e2639bd83c556dd4000 Mon Sep 17 00:00:00 2001 From: Juliusz Chroboczek Date: Mon, 6 Nov 2006 02:29:49 +0100 Subject: [PATCH 2/5] Improve vm86 error handling in Xvesa. --- hw/kdrive/vesa/vm86.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/hw/kdrive/vesa/vm86.c b/hw/kdrive/vesa/vm86.c index c4aadbd85..d09a36dee 100644 --- a/hw/kdrive/vesa/vm86.c +++ b/hw/kdrive/vesa/vm86.c @@ -235,13 +235,9 @@ Vm86DoInterrupt(Vm86InfoPtr vi, int num) OsBlockSignals (); code = vm86_loop(vi); OsReleaseSignals (); - if(code < 0) { - ErrorF("vm86 failed (errno %d)\n", errno); + if(code != 0) return -1; - } else if(code != 0) { - ErrorF("vm86 returned 0x%04X\n", code); - return -1; - } else + else return 0; } @@ -269,14 +265,10 @@ Vm86DoPOST(Vm86InfoPtr vi) OsBlockSignals (); code = vm86_loop(vi); OsReleaseSignals (); - if(code < 0) { - ErrorF("vm86 failed (errno %d)\n", errno); + if(code != 0) return -1; - } else if(code != 0) { - ErrorF("vm86 returned 0x%04X\n", code); - return -1; - } else - return 0; + else + return 0; } #define DEBUG_VBE 0 @@ -573,8 +565,17 @@ vm86_loop(Vm86InfoPtr vi) Vm86Debug(vi); return -1; default: - ErrorF("Unexpected result code 0x%X from vm86\n", code); - Vm86Debug(vi); + if(code < 0) { + if(errno == ENOSYS) { + ErrorF("No vm86 support. Are you running on AMD64?\n"); + } else { + ErrorF("vm86 failed (errno = %d).\n", errno); + Vm86Debug(vi); + } + } else { + ErrorF("Unexpected result code 0x%X from vm86\n", code); + Vm86Debug(vi); + } return -1; } } From 0539d9cf2423fc0bed6f5c413beba3080f8abd85 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 6 Nov 2006 15:29:17 -0500 Subject: [PATCH 3/5] Bug #8875: Security extension causes Xorg to core dump on server reset --- Xext/security.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index 54a2b3e3f..2a73b6066 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -1122,8 +1122,10 @@ CALLBACK(SecurityClientStateCallback) switch (client->clientState) { case ClientStateInitial: - TRUSTLEVEL(serverClient) = XSecurityClientTrusted; - AUTHID(serverClient) = None; + if (client == serverClient) { + TRUSTLEVEL(serverClient) = XSecurityClientTrusted; + AUTHID(serverClient) = None; + } break; case ClientStateRunning: From 75fe0670eb1f71144246f1c20759d58788bbee00 Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 6 Nov 2006 15:30:25 -0500 Subject: [PATCH 4/5] whitespace adjust --- Xext/security.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index 2a73b6066..c5181edf5 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -1128,7 +1128,7 @@ CALLBACK(SecurityClientStateCallback) } break; - case ClientStateRunning: + case ClientStateRunning: { XID authId = AuthorizationIDOfClient(client); SecurityAuthorizationPtr pAuth; @@ -1148,8 +1148,8 @@ CALLBACK(SecurityClientStateCallback) } break; } - case ClientStateGone: - case ClientStateRetained: /* client disconnected */ + case ClientStateGone: + case ClientStateRetained: /* client disconnected */ { SecurityAuthorizationPtr pAuth; @@ -1169,7 +1169,7 @@ CALLBACK(SecurityClientStateCallback) } break; } - default: break; + default: break; } } /* SecurityClientStateCallback */ From 3d39c02fe6aaa602c52f1d4f0ea6cd3bd000cf9f Mon Sep 17 00:00:00 2001 From: Eamon Walsh Date: Mon, 6 Nov 2006 21:25:52 -0500 Subject: [PATCH 5/5] More work on Bug #8875: revert previous fix and try using client argument instead of serverClient. Also don't use totalClientSize as it is not initialized until after the first call to InitClient. --- Xext/security.c | 6 ++---- dix/dispatch.c | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/Xext/security.c b/Xext/security.c index c5181edf5..ac762794a 100644 --- a/Xext/security.c +++ b/Xext/security.c @@ -1122,10 +1122,8 @@ CALLBACK(SecurityClientStateCallback) switch (client->clientState) { case ClientStateInitial: - if (client == serverClient) { - TRUSTLEVEL(serverClient) = XSecurityClientTrusted; - AUTHID(serverClient) = None; - } + TRUSTLEVEL(client) = XSecurityClientTrusted; + AUTHID(client) = None; break; case ClientStateRunning: diff --git a/dix/dispatch.c b/dix/dispatch.c index 2e7fa79ab..d8e3ae79b 100644 --- a/dix/dispatch.c +++ b/dix/dispatch.c @@ -3682,7 +3682,6 @@ extern unsigned totalClientSize; void InitClient(ClientPtr client, int i, pointer ospriv) { - bzero(client, totalClientSize); client->index = i; client->sequence = 0; client->clientAsMask = ((Mask)i) << CLIENTOFFSET;