[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] xen: fix empty slice bug in sedf_adjdom()



Whenever the slice of a domU is set to 0, sedf_adjdom() sets extraweight
to 0.  Later, in desched_extra_dom(), if the extrawight is not set, the
vcpu's score is calculated with this:

 /*domain was running in L1 extraq => score is inverse of
   utilization and is used somewhat incremental!*/
   if ( !inf->extraweight )
       /*NB: use fixed point arithmetic with 10 bits*/
       inf->score[EXTRA_UTIL_Q] = (inf->period << 10) /
           inf->slice;

Which can result in a divide by zero.

The attached patch adds a comments and additional sanity check to
prevent this case from crashing Xen.


-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
(512) 838-9253   T/L: 678-9253
ryanh@xxxxxxxxxx

diffstat output:
 sched_sedf.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

Signed-off-by: Ryan Harper <ryanh@xxxxxxxxxx>
---
diff -r 697fac283c9e xen/common/sched_sedf.c
--- a/xen/common/sched_sedf.c   Wed Feb 22 19:11:23 2006
+++ b/xen/common/sched_sedf.c   Wed Feb 22 15:02:21 2006
@@ -1610,10 +1610,10 @@
             /*time driven domains*/
             for_each_vcpu(p, v) {
                 /* sanity checking! */
-                if(cmd->u.sedf.slice > cmd->u.sedf.period )
+                if(!cmd->u.sedf.slice || cmd->u.sedf.slice > 
cmd->u.sedf.period)
                     return -EINVAL;
                 EDOM_INFO(v)->weight = 0;
-                EDOM_INFO(v)->extraweight = 0;
+                EDOM_INFO(v)->extraweight = 0; /* disabling extra weight 
requires non-zere slice */
                 EDOM_INFO(v)->period_orig = 
                     EDOM_INFO(v)->period   = cmd->u.sedf.period;
                 EDOM_INFO(v)->slice_orig  = 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.