From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933926AbdIYBca (ORCPT ); Sun, 24 Sep 2017 21:32:30 -0400 Received: from fldsmtpe03.verizon.com ([140.108.26.142]:39812 "EHLO fldsmtpe03.verizon.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933460AbdIYBOK (ORCPT ); Sun, 24 Sep 2017 21:14:10 -0400 From: "Levin, Alexander (Sasha Levin)" Cc: Peter Zijlstra , Andrew Morton , Chris Wilson , "Linus Torvalds" , =?utf-8?B?Tmljb2xhaSBIw6Robmxl?= , "Paul E . McKenney" , Thomas Gleixner , Ingo Molnar , "Levin, Alexander (Sasha Levin)" X-Host: discovery.odc.vzwcorp.com To: "linux-kernel@vger.kernel.org" , "stable@vger.kernel.org" Subject: [PATCH review for 4.9 02/50] locking/lockdep: Add nest_lock integrity test Thread-Topic: [PATCH review for 4.9 02/50] locking/lockdep: Add nest_lock integrity test Thread-Index: AQHTNZthrv2lsSax4U6WVLNQw/9low== Date: Mon, 25 Sep 2017 01:12:40 +0000 Message-ID: <20170925011225.10029-2-alexander.levin@verizon.com> References: <20170925011225.10029-1-alexander.levin@verizon.com> In-Reply-To: <20170925011225.10029-1-alexander.levin@verizon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.144.60.250] Content-Type: text/plain; charset="utf-8" Content-ID: <7F2D4BB56D85834A89BF8489D25ED7CC@vzwcorp.com> MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by nfs id v8P1XDND015565 From: Peter Zijlstra [ Upstream commit 7fb4a2cea6b18dab56d609530d077f168169ed6b ] Boqun reported that hlock->references can overflow. Add a debug test for that to generate a clear error when this happens. Without this, lockdep is likely to report a mysterious failure on unlock. Reported-by: Boqun Feng Signed-off-by: Peter Zijlstra (Intel) Cc: Andrew Morton Cc: Chris Wilson Cc: Linus Torvalds Cc: Nicolai Hähnle Cc: Paul E. McKenney Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: linux-kernel@vger.kernel.org Signed-off-by: Ingo Molnar Signed-off-by: Sasha Levin --- kernel/locking/lockdep.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 4d7ffc0a0d00..6599c7f3071d 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3260,10 +3260,17 @@ static int __lock_acquire(struct lockdep_map *lock, unsigned int subclass, if (depth) { hlock = curr->held_locks + depth - 1; if (hlock->class_idx == class_idx && nest_lock) { - if (hlock->references) + if (hlock->references) { + /* + * Check: unsigned int references:12, overflow. + */ + if (DEBUG_LOCKS_WARN_ON(hlock->references == (1 << 12)-1)) + return 0; + hlock->references++; - else + } else { hlock->references = 2; + } return 1; } -- 2.11.0