CVS commit: [netbsd-9] xsrc/external/mit/MesaLib/dist/src/mapi

2020-02-25 Thread Martin Husemann
Module Name:xsrc
Committed By:   martin
Date:   Tue Feb 25 19:33:40 UTC 2020

Modified Files:
xsrc/external/mit/MesaLib/dist/src/mapi [netbsd-9]: entry_x86-64_tls.h
entry_x86_tls.h

Log Message:
Pull up following revision(s) (requested by tnn in ticket #724):

xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h: revision 1.6
xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h: revision 1.5

mesa: sync w/ pkgsrc: don't assume the current gl dispatch table points
to noop if NULL, instead call the ENTRY_CURRENT_TABLE_GET function.

Additionally the previous i386 implementation probably never worked
because it looks like it used the wrong asm label when computing GOT ptr.

Likely relevant to PR port-i386/54782.
XXX pullup -9


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.4.2.1 \
xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h
cvs rdiff -u -r1.5 -r1.5.2.1 \
xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h
diff -u xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h:1.4 xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h:1.4.2.1
--- xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h:1.4	Tue Apr  9 14:14:59 2019
+++ xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86-64_tls.h	Tue Feb 25 19:33:40 2020
@@ -32,24 +32,27 @@
 #endif
 
 __asm__(".text\n"
-".balign 32\n"
+".balign 64\n"
 "x86_64_entry_start:");
 
 #define STUB_ASM_ENTRY(func) \
".globl " func "\n"   \
".type " func ", @function\n" \
-   ".balign 32\n"\
+   ".balign 64\n"\
func ":"
 
 #ifndef __ILP32__
 
-#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
+#if defined(__NetBSD__)
 #define STUB_ASM_CODE(slot)  \
"movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t"  \
"movq %fs:(%rax), %r11\n\t"   \
"testq %r11, %r11\n\t"\
-   "cmoveq table_noop_array@GOTPCREL(%rip), %r11\n\t"\
-   "jmp *(8 * " slot ")(%r11)"
+   "je 1f\n\t"   \
+   "jmp *(8 * " slot ")(%r11)\n\t"   \
+   "1:\n\t"  \
+   "callq " ENTRY_CURRENT_TABLE_GET "@PLT\n\t"   \
+   "jmp *(8 * " slot ")(%rax)"
 #else
 #define STUB_ASM_CODE(slot)  \
"movq " ENTRY_CURRENT_TABLE "@GOTTPOFF(%rip), %rax\n\t"  \
@@ -86,7 +89,7 @@ x86_64_entry_start[] HIDDEN;
 mapi_func
 entry_get_public(int slot)
 {
-   return (mapi_func) (x86_64_entry_start + slot * 32);
+   return (mapi_func) (x86_64_entry_start + slot * 64);
 }
 
 void

Index: xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h
diff -u xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h:1.5 xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h:1.5.2.1
--- xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h:1.5	Tue Apr  9 14:14:59 2019
+++ xsrc/external/mit/MesaLib/dist/src/mapi/entry_x86_tls.h	Tue Feb 25 19:33:40 2020
@@ -43,6 +43,20 @@ __asm__("x86_current_tls:\n\t"
 	"movl " ENTRY_CURRENT_TABLE "@GOTNTPOFF(%eax), %eax\n\t"
 	"ret");
 
+#if defined(__NetBSD__)
+__asm__("x86_current_table_helper:\n\t"
+	"movl %gs:(%eax), %eax\n\t"   \
+	"testl %eax, %eax\n\t"\
+	"je 1f\n\t"   \
+	"ret\n\t" \
+	"1:\n\t"  \
+	"call 2f\n\t" \
+	"2:\n\t"  \
+	"popl %eax\n\t"   \
+	"addl $_GLOBAL_OFFSET_TABLE_+[.-2b], %eax\n\t" \
+	"jmp *" ENTRY_CURRENT_TABLE_GET "@GOT(%eax)");
+#endif
+
 #ifndef GLX_X86_READONLY_TEXT
 __asm__(".section wtext, \"awx\", @progbits");
 #endif /* GLX_X86_READONLY_TEXT */
@@ -56,20 +70,10 @@ __asm__(".balign 16\n"
".balign 16\n"\
func ":"
 
-#if defined(__NetBSD__) && defined(MAPI_MODE_GLAPI)
-extern const mapi_func table_noop_array[];
+#if defined(__NetBSD__)
 #define STUB_ASM_CODE(slot)  \
"call x86_current_tls\n\t"\
-   "movl %gs:(%eax), %eax\n\t"   \
-   "testl %eax, %eax\n\t"\
-   "je 1f\n\t"   \
-   "jmp *(4 * " slot ")(%eax)\n\t" \
-   "1:\n\t"  \
-   "call 2f\n"   \
-   "2:\n\t"  \
-   "popl %eax\n\t"   \
-   "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t" \
-   "movl table_noop_array@GOT(%eax), %eax\n\t" \
+   "call x86_current_table_helper\n\t"\
"jmp *(4 * " slot ")(%eax)"
 #else
 #define STUB_ASM_CODE(slot)  \



CVS commit: [netbsd-9] xsrc/external/mit/MesaLib/dist/src

2019-12-12 Thread Martin Husemann
Module Name:xsrc
Committed By:   martin
Date:   Thu Dec 12 12:26:20 UTC 2019

Modified Files:
xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2 [netbsd-9]:
egl_dri2.c
xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri [netbsd-9]:
gbm_dri.c
xsrc/external/mit/MesaLib/dist/src/glx [netbsd-9]: dri_common.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #526):

external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c: revision 1.5
external/mit/MesaLib/dist/src/loader/loader.c: revision 1.2
external/mit/MesaLib/dist/src/mesa/main/context.c: revision 1.8
external/mit/MesaLib/dist/src/util/disk_cache.c: revision 1.4
(all via patch)
external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c (apply patch)
external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c (apply patch)
external/mit/MesaLib/dist/src/glx/dri_common.c (apply patch)

Wherever we test for setuid, also test for setgid.

Inspired by a diff to openbsd but with a few more instances.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.5 -r1.1.1.5.2.1 \
xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c
cvs rdiff -u -r1.4 -r1.4.2.1 \
xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c
cvs rdiff -u -r1.3 -r1.3.2.1 \
xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c
diff -u xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c:1.1.1.5 xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c:1.1.1.5.2.1
--- xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c:1.1.1.5	Sat Jun  1 07:41:07 2019
+++ xsrc/external/mit/MesaLib/dist/src/egl/drivers/dri2/egl_dri2.c	Thu Dec 12 12:26:19 2019
@@ -491,7 +491,7 @@ dri2_open_driver(_EGLDisplay *disp)
const __DRIextension **(*get_extensions)(void);
 
search_paths = NULL;
-   if (geteuid() == getuid()) {
+   if (!issetugid()) {
   /* don't allow setuid apps to use LIBGL_DRIVERS_PATH */
   search_paths = getenv("LIBGL_DRIVERS_PATH");
}

Index: xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c
diff -u xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c:1.4 xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c:1.4.2.1
--- xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c:1.4	Sun Apr  7 19:35:43 2019
+++ xsrc/external/mit/MesaLib/dist/src/gbm/backends/dri/gbm_dri.c	Thu Dec 12 12:26:20 2019
@@ -310,7 +310,7 @@ dri_open_driver(struct gbm_dri_device *d
 
search_paths = NULL;
/* don't allow setuid apps to use LIBGL_DRIVERS_PATH or GBM_DRIVERS_PATH */
-   if (geteuid() == getuid()) {
+   if (!issetugid()) {
   /* Read GBM_DRIVERS_PATH first for compatibility, but LIBGL_DRIVERS_PATH
* is recommended over GBM_DRIVERS_PATH.
*/

Index: xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c
diff -u xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c:1.3 xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c:1.3.2.1
--- xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c:1.3	Sun Mar 10 04:15:51 2019
+++ xsrc/external/mit/MesaLib/dist/src/glx/dri_common.c	Thu Dec 12 12:26:20 2019
@@ -106,7 +106,7 @@ driOpenDriver(const char *driverName)
glhandle = dlopen(GL_LIB_NAME, RTLD_NOW | RTLD_GLOBAL);
 
libPaths = NULL;
-   if (geteuid() == getuid()) {
+   if (!issetugid()) {
   /* don't allow setuid apps to use LIBGL_DRIVERS_PATH */
   libPaths = getenv("LIBGL_DRIVERS_PATH");
   if (!libPaths)



CVS commit: [netbsd-9] xsrc/external/mit/MesaLib/dist/src

2019-12-12 Thread Martin Husemann
Module Name:xsrc
Committed By:   martin
Date:   Thu Dec 12 11:36:34 UTC 2019

Modified Files:
xsrc/external/mit/MesaLib/dist/src/intel/dev [netbsd-9]:
gen_device_info.c
xsrc/external/mit/MesaLib/dist/src/loader [netbsd-9]: loader.c
xsrc/external/mit/MesaLib/dist/src/mesa/main [netbsd-9]: context.c
xsrc/external/mit/MesaLib/dist/src/util [netbsd-9]: disk_cache.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #526):

external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c: revision 1.5
external/mit/MesaLib/dist/src/loader/loader.c: revision 1.2
external/mit/MesaLib/dist/src/mesa/main/context.c: revision 1.8
external/mit/MesaLib/dist/src/util/disk_cache.c: revision 1.4
(all via patch)

Wherever we test for setuid, also test for setgid.

Inspired by a diff to openbsd but with a few more instances.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.3.2.1 \
xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c
cvs rdiff -u -r1.1.1.2 -r1.1.1.2.2.1 \
xsrc/external/mit/MesaLib/dist/src/loader/loader.c
cvs rdiff -u -r1.6 -r1.6.2.1 \
xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c
cvs rdiff -u -r1.2 -r1.2.2.1 \
xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c
diff -u xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c:1.3 xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c:1.3.2.1
--- xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c:1.3	Sat Jun  1 07:53:00 2019
+++ xsrc/external/mit/MesaLib/dist/src/intel/dev/gen_device_info.c	Thu Dec 12 11:36:34 2019
@@ -82,7 +82,7 @@ gen_device_name_to_pci_device_id(const c
 int
 gen_get_pci_device_id_override(void)
 {
-   if (geteuid() == getuid()) {
+   if (!issetugid()) {
   const char *devid_override = getenv("INTEL_DEVID_OVERRIDE");
   if (devid_override) {
  const int id = gen_device_name_to_pci_device_id(devid_override);

Index: xsrc/external/mit/MesaLib/dist/src/loader/loader.c
diff -u xsrc/external/mit/MesaLib/dist/src/loader/loader.c:1.1.1.2 xsrc/external/mit/MesaLib/dist/src/loader/loader.c:1.1.1.2.2.1
--- xsrc/external/mit/MesaLib/dist/src/loader/loader.c:1.1.1.2	Sun Mar 10 03:42:46 2019
+++ xsrc/external/mit/MesaLib/dist/src/loader/loader.c	Thu Dec 12 11:36:34 2019
@@ -441,7 +441,7 @@ loader_get_driver_for_fd(int fd)
 * user's problem, but this allows vc4 simulator to run on an i965 host,
 * and may be useful for some touch testing of i915 on an i965 host.
 */
-   if (geteuid() == getuid()) {
+   if (!issetugid()) {
   driver = getenv("MESA_LOADER_DRIVER_OVERRIDE");
   if (driver)
  return strdup(driver);

Index: xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c
diff -u xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c:1.6 xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c:1.6.2.1
--- xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c:1.6	Sun Mar 10 04:15:55 2019
+++ xsrc/external/mit/MesaLib/dist/src/mesa/main/context.c	Thu Dec 12 11:36:34 2019
@@ -1223,7 +1223,7 @@ _mesa_initialize_context(struct gl_conte
 */
if (env_var_as_boolean("MESA_NO_ERROR", false)) {
 #if !defined(_WIN32)
-  if (geteuid() == getuid())
+  if (!issetugid())
 #endif
  ctx->Const.ContextFlags |= GL_CONTEXT_FLAG_NO_ERROR_BIT_KHR;
}

Index: xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c
diff -u xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c:1.2 xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c:1.2.2.1
--- xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c:1.2	Sun Mar 10 04:15:57 2019
+++ xsrc/external/mit/MesaLib/dist/src/util/disk_cache.c	Thu Dec 12 11:36:34 2019
@@ -212,7 +212,7 @@ disk_cache_create(const char *gpu_name, 
size_t cv_size = sizeof(cache_version);
 
/* If running as a users other than the real user disable cache */
-   if (geteuid() != getuid())
+   if (issetugid())
   return NULL;
 
/* A ralloc context for transient data during this invocation. */



CVS commit: [netbsd-9] xsrc/external/mit/MesaLib/dist/src

2019-12-08 Thread Martin Husemann
Module Name:xsrc
Committed By:   martin
Date:   Sun Dec  8 15:00:33 UTC 2019

Modified Files:
xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri [netbsd-9]:
dri_sw_winsys.c
xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib [netbsd-9]:
xlib_sw_winsys.c
xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11 [netbsd-9]:
xm_buffer.c

Log Message:
Pull up following revision(s) (requested by maya in ticket #518):

external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c: 
revision 1.2
external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c: 
revision 1.2
external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c: revision 1.2

>From 02c3dad0f3b4d26e0faa5cc51d06bc50d693dcdc Mon Sep 17 00:00:00 2001

From: Brian Paul 
Date: Wed, 9 Oct 2019 12:05:16 -0600
Subject: [PATCH] Call shmget() with permission 0600 instead of 0777

A security advisory (TALOS-2019-0857/CVE-2019-5068) found that
creating shared memory regions with permission mode 0777 could allow
any user to access that memory.  Several Mesa drivers use shared-
memory XImages to implement back buffers for improved performance.

This path changes the shmget() calls to use 0600 (user r/w).
Tested with legacy Xlib driver and llvmpipe.

Cc: mesa-sta...@lists.freedesktop.org
Reviewed-by: Kristian H. Kristensen 


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.2.1 \
xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c
cvs rdiff -u -r1.1.1.3 -r1.1.1.3.2.1 \
xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
cvs rdiff -u -r1.1.1.7 -r1.1.1.7.2.1 \
xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c
diff -u xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c:1.1.1.3 xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c:1.1.1.3.2.1
--- xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c:1.1.1.3	Sun Mar 10 03:42:41 2019
+++ xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/dri/dri_sw_winsys.c	Sun Dec  8 15:00:33 2019
@@ -93,7 +93,8 @@ alloc_shm(struct dri_sw_displaytarget *d
 {
char *addr;
 
-   dri_sw_dt->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT|0777);
+   /* 0600 = user read+write */
+   dri_sw_dt->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT | 0600);
if (dri_sw_dt->shmid < 0)
   return NULL;
 

Index: xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c
diff -u xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c:1.1.1.3 xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c:1.1.1.3.2.1
--- xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c:1.1.1.3	Sun Mar 10 03:42:41 2019
+++ xsrc/external/mit/MesaLib/dist/src/gallium/winsys/sw/xlib/xlib_sw_winsys.c	Sun Dec  8 15:00:33 2019
@@ -126,7 +126,8 @@ alloc_shm(struct xlib_displaytarget *buf
shminfo->shmid = -1;
shminfo->shmaddr = (char *) -1;
 
-   shminfo->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT|0777);
+   /* 0600 = user read+write */
+   shminfo->shmid = shmget(IPC_PRIVATE, size, IPC_CREAT | 0600);
if (shminfo->shmid < 0) {
   return NULL;
}

Index: xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c
diff -u xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c:1.1.1.7 xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c:1.1.1.7.2.1
--- xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c:1.1.1.7	Sun Mar 10 03:42:37 2019
+++ xsrc/external/mit/MesaLib/dist/src/mesa/drivers/x11/xm_buffer.c	Sun Dec  8 15:00:33 2019
@@ -89,8 +89,9 @@ alloc_back_shm_ximage(XMesaBuffer b, GLu
   return GL_FALSE;
}
 
+   /* 0600 = user read+write */
b->shminfo.shmid = shmget(IPC_PRIVATE, b->backxrb->ximage->bytes_per_line
-			 * b->backxrb->ximage->height, IPC_CREAT|0777);
+ * b->backxrb->ximage->height, IPC_CREAT | 0600);
if (b->shminfo.shmid < 0) {
   _mesa_warning(NULL, "shmget failed while allocating back buffer.\n");
   XDestroyImage(b->backxrb->ximage);