Module Name:    src
Committed By:   hannken
Date:           Thu Jun 27 12:21:20 UTC 2024

Modified Files:
        src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp:
            nouveau_nvkm_engine_disp_sorgm200.c

Log Message:
With GCC12 kernel ALL/amd64 triggers "'sor' may be used uninitialized".
If "sublinks & 3" is zero GCC is right and sor[1] may be returned unitialized.

Fix by initializing "sor" to zero to return -1 instead of uninitialized value.

Ok: Taylor R Campbell <riastradh@>


To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 \
    
src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c

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

Modified files:

Index: src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c
diff -u src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c:1.2 src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c:1.3
--- src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c:1.2	Sat Dec 18 23:45:35 2021
+++ src/sys/external/bsd/drm2/dist/drm/nouveau/nvkm/engine/disp/nouveau_nvkm_engine_disp_sorgm200.c	Thu Jun 27 12:21:20 2024
@@ -1,4 +1,4 @@
-/*	$NetBSD: nouveau_nvkm_engine_disp_sorgm200.c,v 1.2 2021/12/18 23:45:35 riastradh Exp $	*/
+/*	$NetBSD: nouveau_nvkm_engine_disp_sorgm200.c,v 1.3 2024/06/27 12:21:20 hannken Exp $	*/
 
 /*
  * Copyright 2012 Red Hat Inc.
@@ -24,7 +24,7 @@
  * Authors: Ben Skeggs
  */
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_disp_sorgm200.c,v 1.2 2021/12/18 23:45:35 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: nouveau_nvkm_engine_disp_sorgm200.c,v 1.3 2024/06/27 12:21:20 hannken Exp $");
 
 #include "ior.h"
 
@@ -74,6 +74,7 @@ gm200_sor_route_get(struct nvkm_outp *ou
 	const int sublinks = outp->info.sorconf.link;
 	int lnk[2], sor[2], m, s;
 
+	sor[0] = sor[1] = 0;	/* GCC 12.3 maybe-uninitialized */
 	for (*link = 0, m = __ffs(outp->info.or) * 2, s = 0; s < 2; m++, s++) {
 		if (sublinks & BIT(s)) {
 			u32 data = nvkm_rd32(device, 0x612308 + (m * 0x80));

Reply via email to