From patchwork Wed Dec 13 18:10:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marius Vlad X-Patchwork-Id: 10110643 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id E2DB9602B3 for ; Wed, 13 Dec 2017 18:44:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D5A5F28D13 for ; Wed, 13 Dec 2017 18:44:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CA2F028D3E; Wed, 13 Dec 2017 18:44:02 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4745128D13 for ; Wed, 13 Dec 2017 18:44:02 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id DDE006E56D; Wed, 13 Dec 2017 18:44:00 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0053.outbound.protection.outlook.com [104.47.32.53]) by gabe.freedesktop.org (Postfix) with ESMTPS id A1B936E56D for ; Wed, 13 Dec 2017 18:43:59 +0000 (UTC) Received: from BN6PR03CA0011.namprd03.prod.outlook.com (10.168.230.149) by MWHPR03MB2701.namprd03.prod.outlook.com (10.168.207.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Wed, 13 Dec 2017 18:10:51 +0000 Received: from BN1AFFO11FD032.protection.gbl (2a01:111:f400:7c10::151) by BN6PR03CA0011.outlook.office365.com (2603:10b6:404:23::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Wed, 13 Dec 2017 18:10:51 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; keithp.com; dkim=none (message not signed) header.d=none; keithp.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD032.mail.protection.outlook.com (10.58.52.186) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.282.5 via Frontend Transport; Wed, 13 Dec 2017 18:10:43 +0000 Received: from fsr-ub1664-140.ea.freescale.net (fsr-ub1664-140.ea.freescale.net [10.171.73.81]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vBDIAm3B003679; Wed, 13 Dec 2017 11:10:49 -0700 From: Marius Vlad To: Subject: [PATCH v2] drm/drm_lease: Prevent deadlock in case drm_lease_create() fails Date: Wed, 13 Dec 2017 20:10:48 +0200 Message-ID: <20171213181048.32719-1-marius-cristian.vlad@nxp.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20171212120414.8675-1-marius-cristian.vlad@nxp.com> References: <20171212120414.8675-1-marius-cristian.vlad@nxp.com> X-EOPAttributedMessage: 0 X-Matching-Connectors: 131576622438551628; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(7966004)(336005)(376002)(346002)(39380400002)(39860400002)(2980300002)(1109001)(1110001)(339900001)(199004)(189003)(6916009)(59450400001)(316002)(8676002)(77096006)(54906003)(81156014)(5660300001)(16586007)(4326008)(81166006)(47776003)(305945005)(50466002)(53936002)(86362001)(2950100002)(1076002)(51416003)(48376002)(50226002)(2906002)(498600001)(356003)(2351001)(97736004)(85426001)(105606002)(8936002)(76176011)(68736007)(36756003)(106466001)(104016004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2701; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD032; 1:1BCnianp/BBFbW+BLaLI/lihmiyWJuvY+JWLNzPy2l3OqhywQXuidaEXhqYrQdADBDfXC26ycNUryxCf/K+nM08A0ISjH6p6FAaVc0oVylwsqJUNWwd2OM2d6crhVYUG MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e13d90ca-55ab-4e58-104c-08d54254d3a9 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(4534020)(4628075)(201703131517081)(5600026)(4604075)(2017052603307); SRVR:MWHPR03MB2701; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 3:L93SUTL6JDY2nnUoY4kLjKFk1kjZ8y0Sez+Bn8nXD/gg47SevntxoxLxetdoZ6G7hVNgi0Q2REdvLhmNR3ICCzIiBAIaYwK5WhcI645g2gh10AA49PP6cGJwf9ClJRW6lzAB7xsSNckuaxD+3eIvYdujjgpqu6QAuhDvRgMnTaeksscL9H1JB2uIq1tw4tR2d3xwc3zlg1Ec/liAAfHo1qeRDWTPpweqwXXO4v9Wnf63oOtgQuEOhlYhMikGuHEu2aV+ntZgD+5Nhh6W1dFIdMrFhH5FVj/KRSSqIBShfbJGpnLZaURRQ1K4afdOtsT5PitFlAAy9BwPxNqSQhjdhcMGf13Kzfs+K3EekK5FzVQ=; 25:OZeQHfAH0CdKBNbHYBlLVi7vdQfxQJS68G3JW0mbNQKIVH1DJl2x4rDXWX3SXvq5sLkM9280xT2gozNXTmmkhO5MFjrf1m5XSZjhgigZBL+AMcedG9dhvBsBLlueKIxvSWUlny0FfMnE3tYqOepa24qRjPl8VQZ6jpwYbGWrJ3GQeYW+vL4XpfVVWI9eH5yx6W3U6TnyFQ/6zmKgPtmk9dZ+U453TcMvj3ezkiB8T82ckHGYY6bZD8pdmyVaXq/cocd9Ba+mmEY0HjEkt5KtERA+PIfTPkC6AnHLaKiJpltH3oJgTX5RGred8bKs2z9koRi2bTHP+Z1FA7aL50lsGw== X-MS-TrafficTypeDiagnostic: MWHPR03MB2701: X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 31:laIcM+yKh4Jt0ytYakSl6U1vedJog7tQau8jEF8afS0LVMzDvoWz7zSNQl1//iouLyQsbCRXyzMQYLX5ffrJHTe3XRniQ93snR9U4BShj9/RwEdLU2knaatLwfuUB9MalKg5hhYeHWHKMjlA2Z5UiodI1uKpnEwE322/iVFz5wTz9edr2dnHEQe7ZQ82+cMnHCe5fRjQwl7ePsh1Y6UHxrWzIpEqTAE0Mil4usVFcoc=; 4:owECFxhqDdcwcyA22aHoqObfo/fw4jv2V3WdiKiRskYGA4csSkXcOfCeHrNX6pxMcpfXnSaVNGDYBbeHkNqlqVVlmsh21SL4FozO1nq4J1aRcJTPMgn2P0slEjfcBsz6/BidKBfNes3Ec8iNwspFhYNBxwpxpn/IYsaFCHytPTwaq0d9mhCPfycKKruqIhQ5Kc47iAJ/zOi8vlzUaMd2OW8/xa0CqF3MmOQ4VOnRQrt/mP0Wq91cw0gBRoTrPYjDwXnIM/WNUCh+wD3vPBktz0leYG+j0Mn8anYMSKIZhrUNr1v+qdMB4/tE6DtSVaTo X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231023)(3002001)(10201501046)(6055026)(6096035)(20161123559100)(20161123561025)(20161123563025)(201703131430075)(201703131433075)(201703131441075)(201703131448075)(201703161259150)(20161123565025)(20161123556025)(201708071742011); SRVR:MWHPR03MB2701; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:MWHPR03MB2701; X-Forefront-PRVS: 052017CAF1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR03MB2701; 23:peLoLG2uogIxAPAOwZXqVP2Fnxf5gyJhhfMZ45Umd?= =?us-ascii?Q?SYy0Np+3l/8VeU/+yav4wozTjuKAfWwMtHnWnWVrxY9CPKU7ulalNvPSE4l2?= =?us-ascii?Q?x0710ptIKKmgIq76K2UXYywIEEXM1OuOxLWKo7ImoXiywujHPKRufCe6DAKB?= =?us-ascii?Q?se5SOx0oxxIpZ6TPknwE35mX9dxoRny707iwMYeDs8O9/GQu7SEtlzm1tx1z?= =?us-ascii?Q?5HbU8AUxE3wzWRK8d8wCGisvvZJhs2PjNg56eaOI6yhv3/en2SmAINi3RFzC?= =?us-ascii?Q?vNKNWO8nYkgkLssBKsle+cvj03ToQdAJbZJvS4A8Uw4UV9pVRWR2FuSaixU0?= =?us-ascii?Q?tfczwbmXk2GpbeU5qeJr1xlNfNlTgwuccBvsDxwv5ZDgs+EFCSW5sNSSVEub?= =?us-ascii?Q?7VLl3q+dou+3WI4Pe3ZBfriJUtqmI911AWejRsYpT5QEmG5XjLRKcz6QgEwh?= =?us-ascii?Q?hWWEZvBxfu3lntmAxst4zrL/Js+9cOXzQ09yctcJmCTsy9/pseMDgBs7O0oP?= =?us-ascii?Q?T73oapTSQCMqH2lIiuMGYWy5n13VvKuCtkEJCHucGGPwkLh95pdB+QbQv+Q6?= =?us-ascii?Q?vv5rSewUpTePdgOnYBLhX5ZET79lDARbHkSv7nqwulp9nOE5vR03Hyuedajn?= =?us-ascii?Q?ZvwmY3NbHKcXyxV+ZDZFMaqkeA53p+0vDgL9eCBMGFu2gMUxxwjEL18n62Oy?= =?us-ascii?Q?cztoXI+ga5zmM5hWm47Cveugzf/g8Iysi9W06DnjbWqFfdcDy0Rs5OIzGfeB?= =?us-ascii?Q?3K+Si12EErGhIgF7WliZ3/N8L/f7AYKsrEQOxGbo2oiP2K91ZlRN9W3vDXgx?= =?us-ascii?Q?oNRljc8C3TY0RF6EFWUZ9/ninPRMO8HNl4OjRyNiVwVv+ipgtb7RDuHxG8lU?= =?us-ascii?Q?qrEuvgI06x4aRFaNXQ+Xketm2Es52l8NxXw8rBZaP57IOhW82tPRSjv8C272?= =?us-ascii?Q?p6RRZKPGHMP4n12lZw/+fmCTaHwZN33krrv4yY8Y7t/3H65lbyeoP7w8ELR4?= =?us-ascii?Q?6nl3zToVGffvVFE+YmCfQG3Dah94R2ODhabc05SR6cX9achQFVKXQzf+E+q9?= =?us-ascii?Q?CyMJWSFAZAeTaGK5gRtPLfvFD22eu10ALBs+5+2hrg5WBpjUQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 6:w3g6D7oj7EwgzrlXObsJKfindxFM2vL3MLHp5Hw/Hti+TfwWlMMSLmmiEBH5I353/RUNHS9u9MAS70Sb3+vPfwDjnCa/E4uVwzwv2y05LPoVV470NHgrtzsFphmb6jIJe2u7BkeTSypOIK/5CVXa6QnXa+EobJyQEC/cgMLNAP69+ynPbG+Ct9O6EhbsHTWuNL3gWLZWej4asC4fdTorN68hH6Sjempq1ygi13//5cLpM2Yv94N1KmwyUiLN9tfhnoqxdbbhtIe/XdATxlNxPbs2CKVIOPQE8T2E2ink1aO8Y5OR+lCeYgDr7VjYD1ZCWK4i1Ks6SPVGwG/xBw/uaJxEdX6DFnXSiAunzvoBWmI=; 5:G+IeruI1xo8QrL8Gz+Xb08HqbmiSjZa9tMIIx4uq2UbpxxU4UgNIM/gZjNWmfyBh8McPLIaWN6R7e3qVUT3NUCXrAeQhYPEQHFkAGKGYejbV1HtU4m0XQ05Z3VAhhe2j2Pq2l8MyvxlI0sRfgD5KiCyXSKyt6HV1QIU6elVqF+8=; 24:SrK75dw6UTC4rCg350b8068sIex83/W/7jpTtDZHHU4wiMdTXQWQhgSsCoZMPWLB+bnOW5c6Sd2TUqgC6xQLf8Fs+6w+qyuhdTrC3FqbGW4=; 7:HNqy0UErD31FyT5rExjZrbwC8YP3p1dOagaQdPA7PAqfW3jr+Qe1u6tfSW2VdYXmQgB0twzkPP6u7HlHnv12skeBP33YDlqs1Tyk2BvWJkNm1kJilwPVlg0gNKJgraGSJk6Is+SyPHBSJEhPAFuLT99fYk9H0Tk9S6T/w0PfsI+d9IxhwvBCukt+OMTB1ZeW8hfwXY92n0zBwpgR8xt04F05lmzsvbFcba3oIvIFMSIE0k6NFuhCfskg3rbwqzJI SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Dec 2017 18:10:43.6835 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e13d90ca-55ab-4e58-104c-08d54254d3a9 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2701 Cc: daniel.vetter@ffwll.ch, keithp@keithp.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP This case can been seen when creating the lease with the same objects passed. [ 605.515097] 2 locks held by testapp/3337: [ 605.519027] #0: (&dev->mode_config.idr_mutex){......}, at: [] drm_mode_create_lease_ioctl+0x384/0x858 [ 605.530045] #1: (&dev->mode_config.idr_mutex){......}, at: [] drm_lease_destroy+0x2c/0x110 Which was causing the process to hang: [ 605.398827] [] __switch_to+0x94/0xa8 [ 605.404030] [] __schedule+0x1b0/0x698 [ 605.409322] [] schedule+0x3c/0xa8 [ 605.414260] [] schedule_preempt_disabled+0x20/0x38 [ 605.420677] [] mutex_lock_nested+0x158/0x340 [ 605.426572] [] drm_lease_destroy+0x2c/0x110 [ 605.432389] [] drm_master_put+0xc0/0xc8 [ 605.437845] [] drm_mode_create_lease_ioctl+0x47c/0x858 [ 605.444612] [] drm_ioctl+0x198/0x448 [ 605.449811] [] do_vfs_ioctl+0xa4/0x748 [ 605.455192] [] SyS_ioctl+0x8c/0xa0 [ 605.460216] [] __sys_trace_return+0x0/0x4 drm_mode_create_lease_ioctl() calls drm_lease_create() which acquires a lock on dev->mode_config.idr_mutex. In case of failure, drm_lease_create() calls drm_master_put() which in turn tries to acquire the same lock when calling drm_lease_destroy(). v2: - Reverse the order at exit in case of fail, so that unlocking takes place before dropping the reference. - Include detail information about deadlock (Daniel Vetter) Signed-off-by: Marius Vlad --- drivers/gpu/drm/drm_lease.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_lease.c b/drivers/gpu/drm/drm_lease.c index d1eb56a..59849f0 100644 --- a/drivers/gpu/drm/drm_lease.c +++ b/drivers/gpu/drm/drm_lease.c @@ -254,10 +254,10 @@ static struct drm_master *drm_lease_create(struct drm_master *lessor, struct idr return lessee; out_lessee: - drm_master_put(&lessee); - mutex_unlock(&dev->mode_config.idr_mutex); + drm_master_put(&lessee); + return ERR_PTR(error); }