--- /app/slurm/wjb/B_2-3-2_T/src/sprio/sprio.c.orig	2011-08-29 09:33:25.000000000 -0700
+++ /app/slurm/wjb/B_2-3-2_T/src/sprio/sprio.c	2012-01-16 07:59:01.000000000 -0700
@@ -137,6 +137,8 @@
 	else
 		req_msg.uid_list = NULL;
 
+	req_msg.uid = geteuid();
+
 	error_code = _get_info(&req_msg, &resp_msg);
 
 	if (error_code) {
--- /app/slurm/wjb/B_2-3-2_T/src/common/slurm_protocol_defs.h.orig	2011-10-25 11:16:18.000000000 -0700
+++ /app/slurm/wjb/B_2-3-2_T/src/common/slurm_protocol_defs.h	2012-01-12 08:26:06.000000000 -0700
@@ -447,6 +447,7 @@
 } priority_factors_object_t;
 
 typedef struct priority_factors_request_msg {
+	uint32_t uid;
 	List	 job_id_list;
 	List	 uid_list;
 } priority_factors_request_msg_t;
--- /app/slurm/wjb/B_2-3-2_T/src/common/slurm_protocol_pack.c.orig	2011-12-07 07:24:09.000000000 -0700
+++ /app/slurm/wjb/B_2-3-2_T/src/common/slurm_protocol_pack.c	2012-01-12 08:27:03.000000000 -0700
@@ -1988,7 +1988,7 @@
 	ListIterator itr = NULL;
 
 	xassert(msg != NULL);
-
+	pack32(msg->uid, buffer);
 	if(msg->job_id_list)
 		count = list_count(msg->job_id_list);
 	pack32(count, buffer);
@@ -2028,7 +2028,7 @@
 
 	object_ptr = xmalloc(sizeof(priority_factors_request_msg_t));
 	*msg = object_ptr;
-
+	safe_unpack32(&object_ptr->uid, buffer);
 	safe_unpack32(&count, buffer);
 	if(count != NO_VAL) {
 		object_ptr->job_id_list = list_create(slurm_destroy_uint32_ptr);
--- /app/slurm/wjb/B_2-3-2_T/src/plugins/priority/multifactor/priority_multifactor.c.orig	2012-01-12 08:30:28.000000000 -0700
+++ /app/slurm/wjb/B_2-3-2_T/src/plugins/priority/multifactor/priority_multifactor.c	2012-01-12 09:23:41.000000000 -0700
@@ -1349,10 +1349,16 @@
 	priority_factors_object_t *obj = NULL;
 	struct job_record *job_ptr = NULL;
 	time_t start_time = time(NULL);
+	bool Private = 0;
+	uid_t uid;
 
 	xassert(req_msg);
 	req_job_list = req_msg->job_id_list;
 	req_user_list = req_msg->uid_list;
+	if (slurmctld_conf.private_data & PRIVATE_DATA_JOBS){
+		Private = 1;
+		uid = req_msg->uid;
+	}
 
 	/* Read lock on jobs, nodes, and partitions */
 	slurmctld_lock_t job_read_lock =
@@ -1392,6 +1398,12 @@
 			if (_filter_job(job_ptr, req_job_list, req_user_list))
 				continue;
 
+			if ((Private) &&
+				(job_ptr->user_id != uid) && !validate_operator(uid) &&
+				!assoc_mgr_is_user_acct_coord(acct_db_conn, uid,
+				job_ptr->account))
+				continue;
+
 			obj = xmalloc(sizeof(priority_factors_object_t));
 			memcpy(obj, job_ptr->prio_factors,
 			       sizeof(priority_factors_object_t));
