Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756046AbYKOLrU (ORCPT ); Sat, 15 Nov 2008 06:47:20 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754359AbYKOLrJ (ORCPT ); Sat, 15 Nov 2008 06:47:09 -0500 Received: from ogre.sisk.pl ([217.79.144.158]:40213 "EHLO ogre.sisk.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754569AbYKOLrI (ORCPT ); Sat, 15 Nov 2008 06:47:08 -0500 From: "Rafael J. Wysocki" To: Geert Uytterhoeven Subject: Re: [Bug #11988] Eliminate recursive mutex in compat fb ioctl path Date: Sat, 15 Nov 2008 12:51:37 +0100 User-Agent: KMail/1.9.9 Cc: Linux Kernel Mailing List , Kernel Testers List , Keith Packard References: In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200811151251.38492.rjw@sisk.pl> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2617 Lines: 59 On Friday, 14 of November 2008, Geert Uytterhoeven wrote: > On Sun, 9 Nov 2008, Rafael J. Wysocki wrote: > > This message has been generated automatically as a part of a report > > of recent regressions. > > > > The following bug entry is on the current list of known regressions > > from 2.6.27. Please verify if it still should be listed and let me know > > (either way). > > > > > > Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=11988 > > Subject : Eliminate recursive mutex in compat fb ioctl path > > Submitter : Keith Packard > > Date : 2008-11-03 7:06 (7 days old) > > References : http://marc.info/?l=linux-kernel&m=122569604828448&w=4 > > Handled-By : Keith Packard > > Geert Uytterhoeven > > Patch : http://marc.info/?l=linux-kernel&m=122569604828448&w=4 > > http://lkml.org/lkml/2008/10/31/162 > > Fixed in mainline. > > commit a684e7d33096892093456dd56a582cfc3bfad648 > Author: Geert Uytterhoeven > Date: Thu Nov 6 12:53:37 2008 -0800 > > fbdev: fix fb_compat_ioctl() deadlocks > > commit 3e680aae4e53ab54cdbb0c29257dae0cbb158e1c ("fb: convert > lock/unlock_kernel() into local fb mutex") introduced several deadlocks > in the fb_compat_ioctl() path, as mutex_lock() doesn't allow recursion, > unlike lock_kernel(). This broke frame buffer applications on 64-bit > systems with a 32-bit userland. > > commit 120a37470c2831fea49fdebaceb5a7039f700ce6 ("framebuffer compat_ioctl > deadlock") fixed one of the deadlocks. > > This patch fixes the remaining deadlocks: > - Revert commit 120a37470c2831fea49fdebaceb5a7039f700ce6, > - Extract the core logic of fb_ioctl() into a new function do_fb_ioctl(), > - Change all callsites of fb_ioctl() where info->lock is already held to > call do_fb_ioctl() instead, > - Add sparse annotations to all routines that take info->lock. > > Signed-off-by: Geert Uytterhoeven > Cc: Mikulas Patocka > Cc: Krzysztof Helt > Cc: Alan Cox > Signed-off-by: Andrew Morton > Signed-off-by: Linus Torvalds Thanks, closed. Rafael -- 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/