From mboxrd@z Thu Jan 1 00:00:00 1970 From: Len Brown Subject: [GIT PATCH] additional ACPI patch for Linux-3.1-merge Date: Fri, 05 Aug 2011 22:27:38 -0400 (EDT) Message-ID: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Return-path: Received: from vms173001pub.verizon.net ([206.46.173.1]:59838 "EHLO vms173001pub.verizon.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754105Ab1HFC15 (ORCPT ); Fri, 5 Aug 2011 22:27:57 -0400 Sender: linux-acpi-owner@vger.kernel.org List-Id: linux-acpi@vger.kernel.org To: Linus Torvalds Cc: linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org Hi Linus, please pull from: git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git release Fixes a 3.1 regression. thanks! Len Brown Intel Open Source Technology Center ps. the patch is also available on linux-acpi@vger.kernel.org drivers/acpi/battery.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) through these commits: Sergey Senozhatsky (1): Battery: sysfs_remove_battery(): possible circular locking with this log: commit 69d94ec6d83d84044252d9ba03f6a8970816e350 Author: Sergey Senozhatsky Date: Sat Aug 6 01:34:08 2011 +0300 Battery: sysfs_remove_battery(): possible circular locking Commit 9c921c22a7f33397a6774d7fa076db9b6a0fd669 Author: Lan Tianyu ACPI / Battery: Resolve the race condition in the sysfs_remove_battery() fixed BUG https://bugzilla.kernel.org/show_bug.cgi?id=35642 , but as a side effect made lockdep unhappy with sysfs_remove_battery(): [14818.477168] [14818.477170] ======================================================= [14818.477200] [ INFO: possible circular locking dependency detected ] [14818.477221] 3.1.0-dbg-07865-g1280ea8-dirty #668 [14818.477236] ------------------------------------------------------- [14818.477257] s2ram/1599 is trying to acquire lock: [14818.477276] (s_active#8){++++.+}, at: [] sysfs_addrm_finish+0x31/0x5a [14818.477323] [14818.477325] but task is already holding lock: [14818.477350] (&battery->lock){+.+.+.}, at: [] sysfs_remove_battery+0x10/0x4b [battery] [14818.477395] [14818.477397] which lock already depends on the new lock. [14818.477399] [..] [14818.479121] stack backtrace: [14818.479148] Pid: 1599, comm: s2ram Not tainted 3.1.0-dbg-07865-g1280ea8-dirty #668 [14818.479175] Call Trace: [14818.479198] [] print_circular_bug+0x293/0x2a4 [14818.479228] [] __lock_acquire+0xfe4/0x164b [14818.479260] [] ? sysfs_addrm_finish+0x31/0x5a [14818.479288] [] lock_acquire+0x138/0x1ac [14818.479316] [] ? sysfs_addrm_finish+0x31/0x5a [14818.479345] [] sysfs_deactivate+0x9b/0xec [14818.479373] [] ? sysfs_addrm_finish+0x31/0x5a [14818.479405] [] sysfs_addrm_finish+0x31/0x5a [14818.479433] [] sysfs_hash_and_remove+0x54/0x77 [14818.479461] [] sysfs_remove_file+0x12/0x14 [14818.479488] [] device_remove_file+0x12/0x14 [14818.479516] [] device_del+0x119/0x17c [14818.479542] [] device_unregister+0xe/0x1a [14818.479570] [] power_supply_unregister+0x23/0x27 [14818.479601] [] sysfs_remove_battery+0x34/0x4b [battery] [14818.479632] [] battery_notify+0x2c/0x3a [battery] [14818.479662] [] notifier_call_chain+0x74/0xa1 [14818.479692] [] __blocking_notifier_call_chain+0x6c/0x89 [14818.479722] [] blocking_notifier_call_chain+0xf/0x11 [14818.479751] [] pm_notifier_call_chain+0x15/0x27 [14818.479770] [] enter_state+0xa7/0xd5 [14818.479782] [] state_store+0xaa/0xc0 [14818.479795] [] ? pm_async_store+0x45/0x45 [14818.479807] [] kobj_attr_store+0x17/0x19 [14818.479820] [] sysfs_write_file+0x103/0x13f [14818.479834] [] vfs_write+0xad/0x13d [14818.479847] [] sys_write+0x45/0x6c [14818.479860] [] system_call_fastpath+0x16/0x1b This patch introduces separate lock to struct acpi_battery to grab in sysfs_remove_battery() instead of battery->lock. So fix by Lan Tianyu is still there, we just grab independent lock. Signed-off-by: Sergey Senozhatsky Tested-by: Lan Tianyu Signed-off-by: Len Brown