diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index df2cdf77f8998d46f58cbf4bc0b3693311c96911..6b99659cbeece0d9d0d46681c5f64d8c8d387532 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4424,7 +4424,7 @@ static long effective_load(struct task_group *tg, int cpu, long wl, long wg)
 		 * wl = S * s'_i; see (2)
 		 */
 		if (W > 0 && w < W)
-			wl = (w * tg->shares) / W;
+			wl = (w * (long)tg->shares) / W;
 		else
 			wl = tg->shares;