From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752020AbbIWGQe (ORCPT ); Wed, 23 Sep 2015 02:16:34 -0400 Received: from mailout2.samsung.com ([203.254.224.25]:34919 "EHLO mailout2.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751151AbbIWGQd (ORCPT ); Wed, 23 Sep 2015 02:16:33 -0400 X-AuditID: cbfee61a-f79a06d000005c6f-a9-560243bf2f47 From: Chao Yu To: mingo@redhat.com, peterz@infradead.org Cc: linux-kernel@vger.kernel.org Subject: [PATCH] sched/fair: fix incorrect calculation of capacity in scale_rt_capacity Date: Wed, 23 Sep 2015 14:15:51 +0800 Message-id: <011101d0f5c7$638b1260$2aa13720$@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7bit X-Mailer: Microsoft Outlook 14.0 Thread-index: AdD1vxvB0dOrXO8zTe6BecVlrspWMQ== Content-language: zh-cn X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrDLMWRmVeSWpSXmKPExsVy+t9jQd39zkxhBre3iltc3jWHzeLSgQVM Fsd7DzA5MHtsXqHl8X7fVTaPz5vkApijuGxSUnMyy1KL9O0SuDJmf+lhLPjGWvHy/m62BsbX LF2MnBwSAiYS7262QtliEhfurWfrYuTiEBKYxSjRN7mVGcJ5xShxsvEhK0gVm4CKxPKO/0wg toiAlsSkhefYQGxmAQWJX/c2gdUIC0RKfNh0AMxmEVCVuHdpFZjNK2ApsWL2fBYIW1Dix+R7 LBC9WhLrdx5ngrDlJTavecsMcZGCxI6zrxkhdulJbOr6yQhRIy6x8cgtlgmMQGcijJqFZNQs JKNmIWlZwMiyilEitSC5oDgpPdcwL7Vcrzgxt7g0L10vOT93EyM4jJ9J7WA8uMv9EKMAB6MS D6/Fd8YwIdbEsuLK3EOMEhzMSiK8kY5MYUK8KYmVValF+fFFpTmpxYcYpTlYlMR5bxxiCBMS SE8sSc1OTS1ILYLJMnFwSjUwKnTyl1pMmjOr7pjG8lKTdbqb90q0zLnG+GTlrY6q9dN5mphm MLj3bejYFtCnK1jKtr5T9vLizS6cxyb/rS39NbmnZnn/kcbGD6vf12ZvfySX2bj8QtS6K2e2 vLB6ai0870fgYQ2DQ7eWtMoaHMu/+Wt/z64DNz/fmFE/SW3X50uLr3DstHqkmqXEUpyRaKjF XFScCACiAaP0XwIAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org div_u64 can only handle 32-bits divisor, if our divisor is with type of 64-bits, we should use div64_u64 instead, otherwise value of divisor will be cast to 32-bits, resulting in wrong calculation. Signed-off-by: Chao Yu --- kernel/sched/fair.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 9176f7c..ee268ef 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -6086,7 +6086,7 @@ static unsigned long scale_rt_capacity(int cpu) total = sched_avg_period() + delta; - used = div_u64(avg, total); + used = div64_u64(avg, total); if (likely(used < SCHED_CAPACITY_SCALE)) return SCHED_CAPACITY_SCALE - used; -- 2.5.2