diff -aurN slurm-14.11.6/src/slurmctld/job_mgr.c slurm-14.11.6.amat/src/slurmctld/job_mgr.c
--- slurm-14.11.6/src/slurmctld/job_mgr.c	2015-04-23 15:50:47.000000000 -0700
+++ slurm-14.11.6.amat/src/slurmctld/job_mgr.c	2015-05-21 13:04:33.500209000 -0700
@@ -12244,14 +12244,6 @@
 	goto reply;
 #endif
 
-	/* validate the request */
-	if ((uid != 0) && (uid != getuid())) {
-		error("SECURITY VIOLATION: Attempt to suspend job from user %u",
-		      (int) uid);
-		rc = ESLURM_ACCESS_DENIED;
-		goto reply;
-	}
-
 	/* find the job */
 	job_ptr = find_job_record (sus_ptr->job_id);
 	if (job_ptr == NULL) {
@@ -12259,6 +12251,14 @@
 		goto reply;
 	}
 
+	/* validate the request */
+	if ((uid != 0) && (uid != getuid()) && (uid != job_ptr->user_id)) {
+		error("SECURITY VIOLATION: Attempt to suspend job from user %u",
+		      (int) uid);
+		rc = ESLURM_ACCESS_DENIED;
+		goto reply;
+	}
+
 	rc = _job_suspend(job_ptr, sus_ptr->op, indf_susp);
 
     reply:
@@ -12321,14 +12321,6 @@
 		slurm_conf_unlock();
 	}
 
-	/* validate the request */
-	if ((uid != 0) && (uid != getuid())) {
-		error("SECURITY VIOLATION: Attempt to suspend job from user %u",
-		      (int) uid);
-		rc = ESLURM_ACCESS_DENIED;
-		goto reply;
-	}
-
 	long_id = strtol(sus_ptr->job_id_str, &end_ptr, 10);
 	if ((long_id <= 0) || (long_id == LONG_MAX) ||
 	    ((end_ptr[0] != '\0') && (end_ptr[0] != '_'))) {
@@ -12340,6 +12332,13 @@
 	if (end_ptr[0] == '\0') {	/* Single job (or full job array) */
 		struct job_record *job_ptr_done = NULL;
 		job_ptr = find_job_record(job_id);
+		/* validate the request */
+		if ((uid != 0) && (uid != getuid()) && (uid != job_ptr->user_id)) {
+			error("SECURITY VIOLATION: Attempt to suspend job from user %u",
+			      (int) uid);
+			rc = ESLURM_ACCESS_DENIED;
+			goto reply;
+		}
 		if (job_ptr &&
 		    (((job_ptr->array_task_id == NO_VAL) &&
 		      (job_ptr->array_recs == NULL)) ||
