Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753066AbbBBOji (ORCPT ); Mon, 2 Feb 2015 09:39:38 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39498 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752794AbbBBOjh (ORCPT ); Mon, 2 Feb 2015 09:39:37 -0500 Date: Mon, 2 Feb 2015 09:39:02 -0500 (EST) From: Mikulas Patocka X-X-Sender: mpatocka@file01.intranet.prod.int.rdu2.redhat.com To: Peter Zijlstra cc: Zdenek Kabelac , tglx@linutronix.de, ilya.dryomov@inktank.com, umgwanakikbuti@gmail.com, Oleg Nesterov , Ingo Molnar , Neil Brown , dm-devel@redhat.com, linux-kernel@vger.kernel.org Subject: [PATCH] Remove might_sleep from wait_event_cmd Message-ID: User-Agent: Alpine 2.02 (LRH 1266 2009-07-14) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1561 Lines: 45 Hi Please apply this before 3.19 is released. Mikulas The patch e22b886a8a43b147e1994a9f970f678fc0df2033 introduced a bug in the raid5 subsystem. The function raid5_quiesce (and resize_stripes) calls lock_all_device_hash_locks_irq that disables interrupts and takes a few spinlocks, then it calls wait_event_cmd with cmd1 unlock_all_device_hash_locks_irq(conf) and cmd2 lock_all_device_hash_locks_irq(conf). cmd1 unlocks the spinlocks and enables interrupts, cmd2 disables interrupts and locks the spinlock. The patch e22b886a8a43b147e1994a9f970f678fc0df2033 adds might_sleep() to a position where spinlocks are taken, thus it introduces a bug. This patch removes might_sleep() from wait_event_cmd. Signed-off-by: Mikulas Patocka --- include/linux/wait.h | 1 - 1 file changed, 1 deletion(-) Index: linux-2.6/include/linux/wait.h =================================================================== --- linux-2.6.orig/include/linux/wait.h 2014-12-30 01:19:25.564231262 +0100 +++ linux-2.6/include/linux/wait.h 2015-02-02 15:30:16.766354658 +0100 @@ -363,7 +363,6 @@ do { \ */ #define wait_event_cmd(wq, condition, cmd1, cmd2) \ do { \ - might_sleep(); \ if (condition) \ break; \ __wait_event_cmd(wq, condition, cmd1, cmd2); \ -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/