Received: by 2002:a25:e74b:0:0:0:0:0 with SMTP id e72csp2617988ybh; Fri, 24 Jul 2020 18:32:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJzoObXkXKn3fanCmtqyrYgfNvgmcDBIGS+iFFnxjbzxYevEeBYToepKGJv7TEIZfk7MrJ X-Received: by 2002:aa7:cf82:: with SMTP id z2mr10927338edx.15.1595640730507; Fri, 24 Jul 2020 18:32:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1595640730; cv=none; d=google.com; s=arc-20160816; b=bPnMUqEObxyHAKNQ2C9Fl9nIiQ7FVS9ULPh00mQoSIqV1nwx7u7s65pVs9GIVyNDtm /GAqX1+8qvcRc5/aiunGcRD5AUq3bbZP0X9Llk8Hs08GceZ5wn3axPaHtPJxaExuoOEf lrcBfehVk/bjjGQ6tZ+77VfCbDkvQcSM4IKfybgu3RD7nBv5q6yroPCfOsyuxlUhUEY0 odnrFtIQYMLS2i0PNuRGw2wM7PmjnZNxhnPou82udhdA8YFwLSgjgEI58rH6gTsJaVsv +3mjPrFihNQH7JAT+HqOM/LCrudQ2a9ni9yy2GBJTa8gChDQMFz0lpet4PsNT9THoYTm dsog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=4gHezHQLIa/2Ss8Gg2Aabjgk65PsLrruHq4P2VM3TVU=; b=QgAJvOBrUzrIxfPVER7b66rc8wZD74kOy5kX0ZCQ7NCBvq5lFwZQQbp3gCN881E9eo 7U8nJ4sPgcveYFrqShOaxyzN6rzyMNG9LPaAF/sodgvLv+zWfw/BRCu/fh43+/LxfP0G 9vs/J6sYPbnYzzO5cW8cpi5iLStXbdADpCfAHc3/azFYsy11shqzfosh1oJ7RN//huq9 RAWnsD4MXoMyotZEkvqun+vw524EjAD/byA6BM8Vd4yXZFWpttC91z2OA/CGEaU3ujwl 4MOgJa0b5DwxkkAiEIFPXcDClSu3q/izE/hcsoWFUTmI51dL2IcUBolkeMkh9GRgxaSR qE5g== 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 t19si1625722ejj.568.2020.07.24.18.31.32; Fri, 24 Jul 2020 18:32:10 -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 S1726907AbgGYBat (ORCPT + 99 others); Fri, 24 Jul 2020 21:30:49 -0400 Received: from www262.sakura.ne.jp ([202.181.97.72]:52699 "EHLO www262.sakura.ne.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726613AbgGYBat (ORCPT ); Fri, 24 Jul 2020 21:30:49 -0400 Received: from fsav107.sakura.ne.jp (fsav107.sakura.ne.jp [27.133.134.234]) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTP id 06P1UlJe078212; Sat, 25 Jul 2020 10:30:47 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) Received: from www262.sakura.ne.jp (202.181.97.72) by fsav107.sakura.ne.jp (F-Secure/fsigk_smtp/550/fsav107.sakura.ne.jp); Sat, 25 Jul 2020 10:30:47 +0900 (JST) X-Virus-Status: clean(F-Secure/fsigk_smtp/550/fsav107.sakura.ne.jp) Received: from localhost.localdomain (M106072142033.v4.enabler.ne.jp [106.72.142.33]) (authenticated bits=0) by www262.sakura.ne.jp (8.15.2/8.15.2) with ESMTPSA id 06P1Ue80078060 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 25 Jul 2020 10:30:47 +0900 (JST) (envelope-from penguin-kernel@I-love.SAKURA.ne.jp) From: Tetsuo Handa To: Peter Zijlstra , Ingo Molnar , Will Deacon Cc: linux-kernel@vger.kernel.org, Dmitry Vyukov , Tetsuo Handa , syzbot , syzbot , syzbot Subject: [PATCH] lockdep: Introduce CONFIG_LOCKDEP_LARGE Date: Sat, 25 Jul 2020 10:30:39 +0900 Message-Id: <1595640639-9310-1-git-send-email-penguin-kernel@I-love.SAKURA.ne.jp> X-Mailer: git-send-email 1.8.3.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since syzkaller continues various test cases until the kernel crashes, syzkaller tends to examine more locking dependencies than normal systems. As a result, syzbot is reporting that the fuzz testing was terminated due to hitting upper limits lockdep can track [1] [2] [3]. Like CONFIG_LOCKDEP_SMALL which halves the upper limits, let's introduce CONFIG_LOCKDEP_LARGE which doubles the upper limits. [1] https://syzkaller.appspot.com/bug?id=3d97ba93fb3566000c1c59691ea427370d33ea1b [2] https://syzkaller.appspot.com/bug?id=381cb436fe60dc03d7fd2a092b46d7f09542a72a [3] https://syzkaller.appspot.com/bug?id=a588183ac34c1437fc0785e8f220e88282e5a29f Reported-by: syzbot Reported-by: syzbot Reported-by: syzbot Signed-off-by: Tetsuo Handa --- kernel/locking/lockdep.c | 4 ++++ kernel/locking/lockdep_internals.h | 5 +++++ lib/Kconfig.debug | 8 ++++++++ 3 files changed, 17 insertions(+) diff --git a/kernel/locking/lockdep.c b/kernel/locking/lockdep.c index 29a8de4..85ba7eb 100644 --- a/kernel/locking/lockdep.c +++ b/kernel/locking/lockdep.c @@ -1349,7 +1349,11 @@ static int add_lock_to_list(struct lock_class *this, /* * For good efficiency of modular, we use power of 2 */ +#ifdef CONFIG_LOCKDEP_LARGE +#define MAX_CIRCULAR_QUEUE_SIZE 8192UL +#else #define MAX_CIRCULAR_QUEUE_SIZE 4096UL +#endif #define CQ_MASK (MAX_CIRCULAR_QUEUE_SIZE-1) /* diff --git a/kernel/locking/lockdep_internals.h b/kernel/locking/lockdep_internals.h index baca699..00a3ec3 100644 --- a/kernel/locking/lockdep_internals.h +++ b/kernel/locking/lockdep_internals.h @@ -93,6 +93,11 @@ enum { #define MAX_LOCKDEP_CHAINS_BITS 15 #define MAX_STACK_TRACE_ENTRIES 262144UL #define STACK_TRACE_HASH_SIZE 8192 +#elif defined(CONFIG_LOCKDEP_LARGE) +#define MAX_LOCKDEP_ENTRIES 65536UL +#define MAX_LOCKDEP_CHAINS_BITS 17 +#define MAX_STACK_TRACE_ENTRIES 1048576UL +#define STACK_TRACE_HASH_SIZE 32768 #else #define MAX_LOCKDEP_ENTRIES 32768UL diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 9ad9210..69ba624 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -1266,6 +1266,14 @@ config LOCKDEP config LOCKDEP_SMALL bool +config LOCKDEP_LARGE + bool "Use larger buffer for tracking more locking dependencies" + depends on LOCKDEP && !LOCKDEP_SMALL + help + If you say Y here, the upper limits the lock dependency engine uses will + be doubled. Useful for fuzz testing which tends to test many complecated + dependencies than normal systems. + config DEBUG_LOCKDEP bool "Lock dependency engine debugging" depends on DEBUG_KERNEL && LOCKDEP -- 1.8.3.1