4500618 sched_getparam(3RT) SIGSEGVs when target pid has class of FSS or FX.
authortrevtom
Tue, 18 Jul 2006 03:46:46 -0700
changeset 2389 1278030e7cec
parent 2388 962a7dc80310
child 2390 ffba0dc9ebeb
4500618 sched_getparam(3RT) SIGSEGVs when target pid has class of FSS or FX.
usr/src/lib/libc/port/rt/sched.c
--- a/usr/src/lib/libc/port/rt/sched.c	Tue Jul 18 01:42:16 2006 -0700
+++ b/usr/src/lib/libc/port/rt/sched.c	Tue Jul 18 03:46:46 2006 -0700
@@ -142,9 +142,6 @@
 		/* non-RT scheduling class */
 		pcpri_t		pcpri;
 
-		/* need RT class info before we can translate priorities */
-		if (get_info_by_policy(SCHED_FIFO) < 0)
-			return (-1);
 		/*
 		 * get class's global priority's min, max, and
 		 * translate them into RT priority level (index) via rt_dptbl.
@@ -171,6 +168,10 @@
 	rtdpent_t	*rtdp;
 	pri_t		pri;
 
+	/* need RT class info before we can translate priorities */
+	if (rt_dptbl == NULL && get_info_by_policy(SCHED_FIFO) < 0)
+		return (-1);
+
 	if (gpri <= rt_dptbl[rt_class.pcc_primin].rt_globpri) {
 		pri = gpri - rt_dptbl[rt_class.pcc_primin].rt_globpri + \
 		    rt_class.pcc_primin;