diff --git a/[refs] b/[refs] index 6149f6dc4b6c..534ccd9403e4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e084786f6fe052274f1dfa7c675fe4a02cacd6e +refs/heads/master: 7a232e0350940d2664f4de5cc3f0f443bae5062d diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 6c1ecbdc0db9..eaf6751e7612 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -1340,8 +1340,13 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight, { u64 tmp; - if (!lw->inv_weight) - lw->inv_weight = 1 + (WMULT_CONST-lw->weight/2)/(lw->weight+1); + if (!lw->inv_weight) { + if (BITS_PER_LONG > 32 && unlikely(lw->weight >= WMULT_CONST)) + lw->inv_weight = 1; + else + lw->inv_weight = 1 + (WMULT_CONST-lw->weight/2) + / (lw->weight+1); + } tmp = (u64)delta_exec * weight; /*