From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751726AbdFJCsx (ORCPT ); Fri, 9 Jun 2017 22:48:53 -0400 Received: from omzsmtpe01.verizonbusiness.com ([199.249.25.210]:5576 "EHLO omzsmtpe01.verizonbusiness.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751562AbdFJCsv (ORCPT ); Fri, 9 Jun 2017 22:48:51 -0400 X-IronPort-Anti-Spam-Filtered: false From: "Levin, Alexander (Sasha Levin)" Cc: "Levin, Alexander (Sasha Levin)" , "Linus Torvalds" , Thomas Gleixner , Ingo Molnar , "linux-kernel@vger.kernel.org" X-IronPort-AV: E=Sophos;i="5.39,316,1493683200"; d="scan'208";a="368248569" X-Host: discovery.odc.vzwcorp.com To: "peterz@infradead.org" Subject: [PATCH] rt_mutex: correctly initialize lockdep in rt_mutex_init_proxy_locked Thread-Topic: [PATCH] rt_mutex: correctly initialize lockdep in rt_mutex_init_proxy_locked Thread-Index: AQHS4ZP7+n+FG8rgPUarthMhadaLXA== Date: Sat, 10 Jun 2017 02:48:04 +0000 Message-ID: <20170610024705.13548-1-alexander.levin@verizon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-exchange-transport-fromentityheader: Hosted x-originating-ip: [10.144.60.250] Content-Type: text/plain; charset="iso-8859-1" MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by mail.home.local id v5A2mw6A014751 lockdep can't deal with NULL name or key, and doesn't do anything with the lock when that happens. Make rt_mutex_init_proxy_locked pass a name and a key for the lock. Fixes: f5694788ad8d ("rt_mutex: Add lockdep annotations") Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Thomas Gleixner Cc: Ingo Molnar Cc: linux-kernel@vger.kernel.org Signed-off-by: Sasha Levin --- kernel/locking/rtmutex.c | 6 ++++-- kernel/locking/rtmutex_common.h | 12 ++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c index 43123533e9b1..f540961cec30 100644 --- a/kernel/locking/rtmutex.c +++ b/kernel/locking/rtmutex.c @@ -1679,10 +1679,12 @@ EXPORT_SYMBOL_GPL(__rt_mutex_init); * possible at this point because the pi_state which contains the rtmutex * is not yet visible to other tasks. */ -void rt_mutex_init_proxy_locked(struct rt_mutex *lock, +void __rt_mutex_init_proxy_locked(struct rt_mutex *lock, + const char *name, + struct lock_class_key *key, struct task_struct *proxy_owner) { - __rt_mutex_init(lock, NULL, NULL); + __rt_mutex_init(lock, name, key); debug_rt_mutex_proxy_lock(lock, proxy_owner); rt_mutex_set_owner(lock, proxy_owner); } diff --git a/kernel/locking/rtmutex_common.h b/kernel/locking/rtmutex_common.h index 72ad45a9a794..110dc1ed1e89 100644 --- a/kernel/locking/rtmutex_common.h +++ b/kernel/locking/rtmutex_common.h @@ -100,8 +100,16 @@ enum rtmutex_chainwalk { * PI-futex support (proxy locking functions, etc.): */ extern struct task_struct *rt_mutex_next_owner(struct rt_mutex *lock); -extern void rt_mutex_init_proxy_locked(struct rt_mutex *lock, - struct task_struct *proxy_owner); +extern void __rt_mutex_init_proxy_locked(struct rt_mutex *lock, + const char *name, + struct lock_class_key *key, + struct task_struct *proxy_owner); +#define rt_mutex_init_proxy_locked(lock, proxy_owner) \ +do { \ + static struct lock_class_key __key; \ + __rt_mutex_init_proxy_locked(lock, #lock, &__key, proxy_owner); \ +} while (0) + extern void rt_mutex_proxy_unlock(struct rt_mutex *lock, struct task_struct *proxy_owner); extern void rt_mutex_init_waiter(struct rt_mutex_waiter *waiter); -- 2.11.0