From da910f23b79b4d6bcec535a8240e2cc24ece391d Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Fri, 19 Jul 2013 10:05:27 -0700
Subject: [PATCH] gres/gpu fix for bad configuration

Avoid referencing memory out of bounds when setting CUDA_VISIBLE_DEVICES
if FastSchedule=2 is configured AND the node has fewer GPUs configured
in gres.conf than in slurm.conf AND those GPUs have specific associated
files
---
 src/plugins/gres/gpu/gres_gpu.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/plugins/gres/gpu/gres_gpu.c b/src/plugins/gres/gpu/gres_gpu.c
index 631740d70e4..c75c6ee2443 100644
--- a/src/plugins/gres/gpu/gres_gpu.c
+++ b/src/plugins/gres/gpu/gres_gpu.c
@@ -233,7 +233,8 @@ extern void job_set_env(char ***job_env_ptr, void *gres_ptr)
 				dev_list = xmalloc(128);
 			else
 				xstrcat(dev_list, ",");
-			if (gpu_devices && (gpu_devices[i] >= 0))
+			if (gpu_devices && (i < nb_available_files) &&
+			    (gpu_devices[i] >= 0))
 				xstrfmtcat(dev_list, "%d", gpu_devices[i]);
 			else
 				xstrfmtcat(dev_list, "%d", i);
@@ -276,7 +277,8 @@ extern void step_set_env(char ***job_env_ptr, void *gres_ptr)
 				dev_list = xmalloc(128);
 			else
 				xstrcat(dev_list, ",");
-			if (gpu_devices && (gpu_devices[i] >= 0))
+			if (gpu_devices && (i < nb_available_files) &&
+			    (gpu_devices[i] >= 0))
 				xstrfmtcat(dev_list, "%d", gpu_devices[i]);
 			else
 				xstrfmtcat(dev_list, "%d", i);
-- 
GitLab