From patchwork Wed Mar 6 00:30:19 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mandeep Singh Baines X-Patchwork-Id: 2222651 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork2.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork2.kernel.org (Postfix) with ESMTP id 5E00FDF24C for ; Wed, 6 Mar 2013 00:30:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752561Ab3CFAa0 (ORCPT ); Tue, 5 Mar 2013 19:30:26 -0500 Received: from mail-pb0-f53.google.com ([209.85.160.53]:48310 "EHLO mail-pb0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754493Ab3CFAa0 (ORCPT ); Tue, 5 Mar 2013 19:30:26 -0500 Received: by mail-pb0-f53.google.com with SMTP id un1so5155616pbc.40 for ; Tue, 05 Mar 2013 16:30:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=4zkjdF+H8Xw3MXmWTX/bHckCtu3O7L9/11KCQo1Np7A=; b=jPaGAG1b89EieRflhD/7dcjRHup7s+HmSAh1aBzSDNJxjJj6zAdwnAgZoShg+K5Kxs RN4i66GnRWELhbXPFp8V6E+3gfW+IX8NBkIFxZXjYLCjaa8XJJKC6wy28fTjzcidF5AV Siu4l4FRZIQO6yYdXb9S5BJXgw7u0btKmi1eVBIthZtDDsOLGieyTHRpTXC0SsHKnbTT kOJp7Rf3ZRPkeudBydIXwXvi/Aloi2rVxoUvyM6TcXLD6WVZSuAm2vL0Ke+h7fXa0q5M hOqMxj7z8XC2RGLA+CHu3N2OMQo1xD+bnahA96KEQn9iW/AHOx9XiVikzqqtqPrrdxCR MG8Q== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=x-received:sender:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=4zkjdF+H8Xw3MXmWTX/bHckCtu3O7L9/11KCQo1Np7A=; b=EliCDCTwwZ9arGoNzwOP7129kZO3tjDEq0+Qohdb8r9CiIaLfGS+vhsQPoqBHX2d6c 6ZJjiBkxKb1SK/E7Tr+IJ5ZCTV0bSIYV42iVoAM6iyoWlIHDpzqDPiB2eplXf0OcnQTc I9cWMlx2zhSJShjRPUX/FhSs60EPRiJQnHYRE= X-Received: by 10.68.201.194 with SMTP id kc2mr33026469pbc.27.1362529825247; Tue, 05 Mar 2013 16:30:25 -0800 (PST) Received: from localhost (75-147-132-158-SFBA.hfc.comcastbusiness.net. [75.147.132.158]) by mx.google.com with ESMTPS id zm1sm28781152pbc.26.2013.03.05.16.30.23 (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 05 Mar 2013 16:30:24 -0800 (PST) From: Mandeep Singh Baines To: linux-kernel@vger.kernel.org, linux-nfs@vger.kernel.org Cc: Mandeep Singh Baines , Tejun Heo , Jeff Layton , "Myklebust, Trond" , Oleg Nesterov , Ming Lei , "Rafael J. Wysocki" , Andrew Morton , Ingo Molnar Subject: [PATCH] lockdep: make lock held while freezing check optional Date: Tue, 5 Mar 2013 16:30:19 -0800 Message-Id: <1362529819-19076-1-git-send-email-msb@chromium.org> X-Mailer: git-send-email 1.7.12.4 In-Reply-To: <20130305231110.GK15816@fieldses.org> References: <20130305231110.GK15816@fieldses.org> Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org This check is turning up a lot of code paths which need to be fixed so while those paths are fixed, let's make this check optional so that folks can still use lockdep. CC: Tejun Heo CC: Jeff Layton CC: "Myklebust, Trond" CC: Oleg Nesterov CC: Ming Lei CC: "Rafael J. Wysocki" CC: Andrew Morton CC: Ingo Molnar --- include/linux/freezer.h | 2 ++ lib/Kconfig.debug | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/include/linux/freezer.h b/include/linux/freezer.h index 043a5cf..03bdc54 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h @@ -49,8 +49,10 @@ extern void thaw_kernel_threads(void); static inline bool try_to_freeze(void) { +#ifdef CONFIG_DEBUG_LOCK_HELD_FREEZING if (!(current->flags & PF_NOFREEZE)) debug_check_no_locks_held(); +#endif might_sleep(); if (likely(!freezing(current))) return false; diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug index 28be08c..bddda5f 100644 --- a/lib/Kconfig.debug +++ b/lib/Kconfig.debug @@ -547,6 +547,18 @@ config DEBUG_MUTEXES This feature allows mutex semantics violations to be detected and reported. +config DEBUG_LOCK_HELD_FREEZING + bool "Lock debugging: detect when locks are held during freeze" + depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT + select DEBUG_SPINLOCK + select DEBUG_MUTEXES + select LOCKDEP + help + This feature will check whether any lock is incorrectly held + while freezing. If a task freezes with a lock held it will + block any other task that is waiting on that lock from freezing. + In the case of cgroup_freezer, this can cause a deadlock. + config DEBUG_LOCK_ALLOC bool "Lock debugging: detect incorrect freeing of live locks" depends on DEBUG_KERNEL && TRACE_IRQFLAGS_SUPPORT && STACKTRACE_SUPPORT && LOCKDEP_SUPPORT