Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp17239635ybl; Thu, 2 Jan 2020 01:22:57 -0800 (PST) X-Google-Smtp-Source: APXvYqwmjj4f19uVzPTqbM17eRShcH1r2ExcMC62nmMJXMlH8Iog6P+ZdnoZ8YTEew3/Z84ZcKHs X-Received: by 2002:a9d:730e:: with SMTP id e14mr86002580otk.62.1577956977614; Thu, 02 Jan 2020 01:22:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577956977; cv=none; d=google.com; s=arc-20160816; b=c4301hikeHTClW59Wd/sAhE651+KpaL/+t0B6EGHyVBzL+28QKT6EaQPxvWfXiXKO6 Svfm6SGRJhbJB4WkmNJPvFIRAA+l2GB0SfheUOhJyVHOZC1bfOYlIClyPBGaRrH/xOX6 jc5fzigOUGEK7efb/ZNlANPlxQsPlA/v4aoaUFifrp5THWN2ptxcIIAQL8A+oLHDg1FE JSSQKpbSySBNQVH/jdUXi7wMxPgWgI7r5QAt228xMq0ckW0/Tr8DCPV8UKw+dWp1A164 lW8lhm85mGYzRORe0L8PjaPVQ1vd2q9l9wgUPivgHlL6kuDafuM4W+UloqdMPPw/glDq N4Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=gTtB3beLHGpY5Bgse2YmrGv6Ly0Ja0saA+ePi0zqUA8=; b=V7UNbS1+fWcgy9qldTahhVZZvY8RxEGn0sC7CHMIMlvsnPzym5NVMJIdUxtEJ0hoFb DIX3WhVMJtL7LA6yqhxBQHmbrZoCEJqR7rcd4sBcSylx58Bj7PHub1Kr5kOagkGf7V0F 0ENSdFJAd7MtW7e3tms7jCOTfX4wFlrYlUufsu7kGNSrOFJUNEtQ8a3Z+Bs3ke/lqR25 Wy2AZiCv7hkdKWGFznjqwPMsj9L50pyx1cY7Gu8GmQHrxZR1lBcKAyaGVsb4K71H1Y/t kjS/mAfs2vZxUoJyaGQqG1QHai72CFP8LvWiIXpVHx6tKUeYfYu3vT5ZpX17urTM+k0V 3CVQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k7si24684989oib.115.2020.01.02.01.22.45; Thu, 02 Jan 2020 01:22:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727939AbgABJWG (ORCPT + 99 others); Thu, 2 Jan 2020 04:22:06 -0500 Received: from out4436.biz.mail.alibaba.com ([47.88.44.36]:12303 "EHLO out4436.biz.mail.alibaba.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727801AbgABJWF (ORCPT ); Thu, 2 Jan 2020 04:22:05 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04395;MF=wenyang@linux.alibaba.com;NM=1;PH=DS;RN=9;SR=0;TI=SMTPD_---0TmbxYO7_1577956905; Received: from localhost(mailfrom:wenyang@linux.alibaba.com fp:SMTPD_---0TmbxYO7_1577956905) by smtp.aliyun-inc.com(127.0.0.1); Thu, 02 Jan 2020 17:21:53 +0800 From: Wen Yang To: =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= Cc: Wen Yang , Kevin Darbyshire-Bryant , =?UTF-8?q?Toke=20H=C3=B8iland-J=C3=B8rgensen?= , "David S . Miller" , Cong Wang , cake@lists.bufferbloat.net, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] sch_cake: avoid possible divide by zero in cake_enqueue() Date: Thu, 2 Jan 2020 17:21:43 +0800 Message-Id: <20200102092143.8971-1-wenyang@linux.alibaba.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The variables 'window_interval' is u64 and do_div() truncates it to 32 bits, which means it can test non-zero and be truncated to zero for division. The unit of window_interval is nanoseconds, so its lower 32-bit is relatively easy to exceed. Fix this issue by using div64_u64() instead. Fixes: 7298de9cd725 ("sch_cake: Add ingress mode") Signed-off-by: Wen Yang Cc: Kevin Darbyshire-Bryant Cc: Toke Høiland-Jørgensen Cc: David S. Miller Cc: Cong Wang Cc: cake@lists.bufferbloat.net Cc: netdev@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- net/sched/sch_cake.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/sched/sch_cake.c b/net/sched/sch_cake.c index 6cc3ab1..90ef7cc 100644 --- a/net/sched/sch_cake.c +++ b/net/sched/sch_cake.c @@ -1768,7 +1768,7 @@ static s32 cake_enqueue(struct sk_buff *skb, struct Qdisc *sch, q->avg_window_begin)); u64 b = q->avg_window_bytes * (u64)NSEC_PER_SEC; - do_div(b, window_interval); + b = div64_u64(b, window_interval); q->avg_peak_bandwidth = cake_ewma(q->avg_peak_bandwidth, b, b > q->avg_peak_bandwidth ? 2 : 8); -- 1.8.3.1