Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp3127748ybh; Sat, 25 Jul 2020 11:54:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyBUPSMoL355/5vHIkG3fJFYAGz19lma6OADKyoRrCUYiDihop2j70oXVuQsu2iey+NbRJZ X-Received: by 2002:a17:906:1ed3:: with SMTP id m19mr8832428ejj.396.1595703286355; Sat, 25 Jul 2020 11:54:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595703286; cv=none; d=google.com; s=arc-20160816; b=C+MXZixJWI0O10SGs3eId+0QS+IAGGjtX31lpWmr3JI2jM1gV8wtsanIR5gy1JAzWB YmmBfOwVDlgiaV7PqtYcGiWC7kkSVQ0HZwWzbjsIqSpqOodk63eFH6VbRhYyC6IovbUc FzSK2rmP88/1jc5R/bqC4G5oUcL5o3my5S7rR8yl5v9Br16fzAf9BJBx19Mt3zPEQmDb 8gGIUaY6rU+IHhPD4WLiqYo0gb9NHXwyRi7Uxt1hlULbpEJyqF1Xs1L2nEHKktBs/4+3 UA1fI9ipUDOB4mneuj99XX0rqIDOuNzvh0ELqFaUb+lLJ0t2LrLF/+YPqMo02UtfDpjT ONXQ== 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=H19Rtc58N7W84Putpm+aKr+b2a04ALTSKdEd7mi7Ffc=; b=nHIOlP5wLgdGmrejDCkEz1GTBY+aTpqt0CF4UVmt+hyA/8xG+ndjyCm7MJjG7bRwho WCmm26ggCprLG8bTUYAXU/uT3P2E5zOPiqqjbJTdbcBHvnqCXetpz9a8dUpEyv69vxJj qhaikD1LVUTJxu2DwUh1DSoGDWo5BjGexpev+N20hJQzs/r6JU1YO1sdgHlPFc3/wU+y Rv6HYG9wK++ieRJer4gmFZSSUAuNJN4clruAa5rK4lEofa+CX5+uwnZHLY2uDJBmmnzh v7BqCtk9J3cif+65LtfXfcKHVamgOeHocKSLl3qlzeA/1fy3b0joXG2VAxb0DzK7QsOt 4zIg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h1si2758616ejc.200.2020.07.25.11.54.23; Sat, 25 Jul 2020 11:54:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726565AbgGYSvm (ORCPT + 99 others); Sat, 25 Jul 2020 14:51:42 -0400 Received: from mail.fireflyinternet.com ([77.68.26.236]:50035 "EHLO fireflyinternet.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726035AbgGYSvl (ORCPT ); Sat, 25 Jul 2020 14:51:41 -0400 X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from build.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 21931418-1500050 for multiple; Sat, 25 Jul 2020 19:51:11 +0100 From: Chris Wilson To: linux-kernel@vger.kernel.org Cc: Chris Wilson , Peter Zijlstra , Ingo Molnar , Will Deacon Subject: [PATCH] locking/lockdep: Fix overflow in presentation of average lock-time Date: Sat, 25 Jul 2020 19:51:10 +0100 Message-Id: <20200725185110.11588-1-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Though the number of lock-acquisitions is tracked as unsigned long, this is passed as the divisor to div_s64() which interprets it as a s32, giving nonsense values with more than 2 billion acquisitons. E.g. acquisitions holdtime-min holdtime-max holdtime-total holdtime-avg ------------------------------------------------------------------------- 2350439395 0.07 353.38 649647067.36 0.-32 Signed-off-by: Chris Wilson Cc: Peter Zijlstra Cc: Ingo Molnar Cc: Will Deacon --- kernel/locking/lockdep_proc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/locking/lockdep_proc.c b/kernel/locking/lockdep_proc.c index 5525cd3ba0c8..02ef87f50df2 100644 --- a/kernel/locking/lockdep_proc.c +++ b/kernel/locking/lockdep_proc.c @@ -423,7 +423,7 @@ static void seq_lock_time(struct seq_file *m, struct lock_time *lt) seq_time(m, lt->min); seq_time(m, lt->max); seq_time(m, lt->total); - seq_time(m, lt->nr ? div_s64(lt->total, lt->nr) : 0); + seq_time(m, lt->nr ? div64_u64(lt->total, lt->nr) : 0); } static void seq_stats(struct seq_file *m, struct lock_stat_data *data) -- 2.20.1