From patchwork Mon May 6 23:50:09 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Colin Cross X-Patchwork-Id: 2529171 Return-Path: X-Original-To: patchwork-linux-pm@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 BDE3EDFB79 for ; Mon, 6 May 2013 23:56:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932364Ab3EFX4I (ORCPT ); Mon, 6 May 2013 19:56:08 -0400 Received: from mail-gg0-f202.google.com ([209.85.161.202]:56233 "EHLO mail-gg0-f202.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933950Ab3EFX4B (ORCPT ); Mon, 6 May 2013 19:56:01 -0400 Received: by mail-gg0-f202.google.com with SMTP id 4so425441ggm.1 for ; Mon, 06 May 2013 16:56:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:x-gm-message-state; bh=1xnXtHDWQYRnsLVsZ2XDykqEZ/zeQImFDdsPL1vEj0M=; b=AuvZ572ziVf3J27QCpzI7GFreLTeLAhJgMuVIb5BEvenKvZvbQh6zW2RYvpWgSMsl4 2xfOyG1suBjeFQg1zaAGr32B09na7LAQnHZ1KcBM+sKiEr5ixVzzZZK3k9lL4jM3yYe0 xkk84dbjzlfIvNa62Dndeo2mRvhguQ2ar9m3aZpvgo36PLnZK/s7o0wsDo1V8ydzO1IF ngBGaVWKAHL+a6HH5TVtyZUmfC5B4xjGH0CHk2dwtMKw5+smAmd371u6zLIIZIgiqsSH 5PObyD9BKgOXYI+3SJTpoibGbbcPK/bRnE5lCOrotEOKddEu99fUwcTJET66cxT0MmRu caRg== X-Received: by 10.236.210.114 with SMTP id t78mr16928599yho.29.1367884227492; Mon, 06 May 2013 16:50:27 -0700 (PDT) Received: from corp2gmr1-2.hot.corp.google.com (corp2gmr1-2.hot.corp.google.com [172.24.189.93]) by gmr-mx.google.com with ESMTPS id k33si2186782yhi.3.2013.05.06.16.50.27 for (version=TLSv1.1 cipher=AES128-SHA bits=128/128); Mon, 06 May 2013 16:50:27 -0700 (PDT) Received: from walnut.mtv.corp.google.com (walnut.mtv.corp.google.com [172.18.105.48]) by corp2gmr1-2.hot.corp.google.com (Postfix) with ESMTP id 4C5415A4250; Mon, 6 May 2013 16:50:27 -0700 (PDT) Received: by walnut.mtv.corp.google.com (Postfix, from userid 99897) id 0C8171613E8; Mon, 6 May 2013 16:50:27 -0700 (PDT) From: Colin Cross To: linux-kernel@vger.kernel.org Cc: Pavel Machek , "Rafael J. Wysocki" , Peter Zijlstra , Ingo Molnar , Andrew Morton , Mandeep Singh Baines , Colin Cross , Oleg Nesterov , linux-nfs@vger.kernel.org, linux-pm@vger.kernel.org, netdev@vger.kernel.org, Linus Torvalds , Tejun Heo , Ben Chan , Len Brown Subject: [PATCH v3 04/16] lockdep: check that no locks held at freeze time Date: Mon, 6 May 2013 16:50:09 -0700 Message-Id: <1367884221-20462-5-git-send-email-ccross@android.com> X-Mailer: git-send-email 1.8.2.1 In-Reply-To: <1367884221-20462-1-git-send-email-ccross@android.com> References: <1367884221-20462-1-git-send-email-ccross@android.com> X-Gm-Message-State: ALoCoQlP7wtYeBBkuxqPkRw7Stq2tILsRRrrNMXW67GdLwGTK+haCKpgqxsHX5vU9W2p1uWjw0Sc7rCwk66Dbbn3ItVESjO5kqsarnyf8dX49oAGawUwKJj5NAGJGtfn8x4voa1rvWNY+hcxdSU8OIiyh/q6JgUD77kK5q29cfJTAdnD952RDxfuFJGQ5CS+ixESNHhc69FZ Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org From: Mandeep Singh Baines We shouldn't try_to_freeze if locks are held. Holding a lock can cause a deadlock if the lock is later acquired in the suspend or hibernate path (e.g. by dpm). Holding a lock can also cause a deadlock in the case of cgroup_freezer if a lock is held inside a frozen cgroup that is later acquired by a process outside that group. History: This patch was originally applied as 6aa9707099c and reverted in dbf520a9d7d4 because NFS was freezing with locks held. It was deemed better to keep the bad freeze point in NFS to allow laptops to suspend consistently. The previous patch in this series converts NFS to call _unsafe versions of the freezable helpers so that lockdep doesn't complain about them until a more correct fix can be applied. [akpm@linux-foundation.org: export debug_check_no_locks_held] Signed-off-by: Mandeep Singh Baines Cc: Ben Chan Cc: Oleg Nesterov Cc: Tejun Heo Cc: Rafael J. Wysocki Cc: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [ccross@android.com: don't warn if try_to_freeze_unsafe is called] Signed-off-by: Colin Cross Acked-by: Pavel Machek --- include/linux/freezer.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/linux/freezer.h b/include/linux/freezer.h index d3c038e..bcf9e65 100644 --- a/include/linux/freezer.h +++ b/include/linux/freezer.h @@ -3,6 +3,7 @@ #ifndef FREEZER_H_INCLUDED #define FREEZER_H_INCLUDED +#include #include #include #include @@ -60,6 +61,8 @@ static inline bool try_to_freeze_unsafe(void) static inline bool try_to_freeze(void) { + if (!(current->flags & PF_NOFREEZE)) + debug_check_no_locks_held(); return try_to_freeze_unsafe(); }