From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6B9E2C352A9 for ; Sun, 29 Sep 2019 13:59:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 4078621835 for ; Sun, 29 Sep 2019 13:59:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569765557; bh=vMWlXxIAvjA49zA7WOVtwAlDJw6kqQg3z0hYUqrcyP0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=eROvjl9FHPuU58nCLdpeEWYfVaPZi5vpPeo/Ltm+g2FZMRxm4rUvLiPge7Ou8LrdZ iUKy94gLpupSWTfWc5ct2nVlWGFxUkUaE1CON6k1DF/HkISGloxkedqjs+lllR3GQ6 sdEJ9nGJGsuPt/lrQkmDLoWqmBKKWIOaXt8xHNzE= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729683AbfI2N7Q (ORCPT ); Sun, 29 Sep 2019 09:59:16 -0400 Received: from mail.kernel.org ([198.145.29.99]:40252 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729661AbfI2N7K (ORCPT ); Sun, 29 Sep 2019 09:59:10 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 200E321920; Sun, 29 Sep 2019 13:59:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1569765549; bh=vMWlXxIAvjA49zA7WOVtwAlDJw6kqQg3z0hYUqrcyP0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=nft91Bj6b7MjZid/Da4L0yaBFy0un2uLsTDv5I+IMOFArsWEtQl8szs6C2n3sFkQY 2G2ItFrca58xJYAXMIT/rkq+KS76OU54bjEMM6lrqG5T3WLMQO6XBODMKMdM//JN5O gUl6fK5PPPS+2Ks4YIEZecJT03Iv8M9KJaGlxTnI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Tetsuo Handa , syzbot+53383ae265fb161ef488@syzkaller.appspotmail.com, Waiman Long , "Peter Zijlstra (Intel)" , Andrew Morton , Linus Torvalds , "Paul E. McKenney" , Thomas Gleixner , Will Deacon , Ingo Molnar , Sasha Levin Subject: [PATCH 4.19 37/63] locking/lockdep: Add debug_locks check in __lock_downgrade() - again Date: Sun, 29 Sep 2019 15:54:10 +0200 Message-Id: <20190929135038.610861559@linuxfoundation.org> X-Mailer: git-send-email 2.23.0 In-Reply-To: <20190929135031.382429403@linuxfoundation.org> References: <20190929135031.382429403@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Waiman Long [ Upstream commit 71492580571467fb7177aade19c18ce7486267f5 ] Tetsuo Handa had reported he saw an incorrect "downgrading a read lock" warning right after a previous lockdep warning. It is likely that the previous warning turned off lock debugging causing the lockdep to have inconsistency states leading to the lock downgrade warning. Fix that by add a check for debug_locks at the beginning of __lock_downgrade(). Debugged-by: Tetsuo Handa Reported-by: Tetsuo Handa Reported-by: syzbot+53383ae265fb161ef488@syzkaller.appspotmail.com Signed-off-by: Waiman Long Signed-off-by: Peter Zijlstra (Intel) Cc: Andrew Morton Cc: Linus Torvalds Cc: Paul E. McKenney Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Will Deacon Link: https://lkml.kernel.org/r/1547093005-26085-1-git-send-email-longman@redhat.com Signed-off-by: Ingo Molnar Signed-off-by: Sasha Levin --- kernel/locking/lockdep.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 68ba411a90075..1c8e5d186ad64 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -3608,6 +3608,9 @@ static int __lock_downgrade(struct lockdep_map *lock, unsigned long ip) unsigned int depth; int i; + if (unlikely(!debug_locks)) + return 0; + depth = curr->lockdep_depth; /* * This function is about (re)setting the class of a held lock, -- 2.20.1