Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp2787833imm; Mon, 16 Jul 2018 14:17:55 -0700 (PDT) X-Google-Smtp-Source: AAOMgpeJqs64vFQbkka3EusQtZQ+0D9ImtfQpTFXJppWq6ZzPigitlGdFPAqkaLA9DOBxKY2LJhH X-Received: by 2002:a17:902:9695:: with SMTP id n21-v6mr18286202plp.6.1531775875256; Mon, 16 Jul 2018 14:17:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531775875; cv=none; d=google.com; s=arc-20160816; b=ir0gIIpSELyXKh9qVffvCwe8bJnm8OMxkL6VMYLG58gTRQJRfDmoT+p4uUNdHVE7fe e0cgMxXirHqX684GD1vG3GRicjd4hvSuB7dxzYkjiEgcsB847VOTlaA6BpG3SvIPvYEo 1axK8zUX3/FUMnbJ+TjRclMmYrTB77f5AestrhXSKBW/Jt8KtXYV+PN9SCSohuA+K5Pr 297byt72gxtTXqxxmg8QSwl9HrTs91c1tv/rtE6KX8NMESYwSEsZLgdlVCqn6DC0ISg8 6J6wevKevRXJe3+XFqzdnJn3QyzHd2vQZBZLKez0/euQC+3mDTFZCtBtS2m6vsF/gsXS nwug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=xZ41iNaqOki9J22NOJdLz04MJiWb9HnqMaCKm1Di7Bk=; b=T7t+niL1oLLSr24zD8V5PYcmxUPJGYwYqRJipV/Kb/gL4GR0e4rN8Tm9TqTIEWoQ5w VfwrxIeRQSQ+hd6WiAIfdEGi9TKkkh+SjDLvrw9JvaAPF2UrHSZGWi8wd1RAqj4Qgnd8 8mkxacH9exvej6EkLbIelYsBWwPMvyjIKNz2XB1arWp8v5vnkwuLf0GwwSLN3maNsoul SJZCvaQeE0SOf2mrVhUlabV4OMeBpoo97adS2yqoxv/njc24wdcAG599crPwPT58xW8M MCxItP8DIfCbgBbx2ixw+2VxMZDQekaYSeAVUFLsIRsZIA7vclhNmsBcxlFxhK6V8/JA C9Xg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=HBpX0A9w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id ca2-v6si2353652plb.305.2018.07.16.14.17.39; Mon, 16 Jul 2018 14:17:55 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=HBpX0A9w; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729952AbeGPVqH (ORCPT + 99 others); Mon, 16 Jul 2018 17:46:07 -0400 Received: from mail-yw0-f193.google.com ([209.85.161.193]:43154 "EHLO mail-yw0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728413AbeGPVqH (ORCPT ); Mon, 16 Jul 2018 17:46:07 -0400 Received: by mail-yw0-f193.google.com with SMTP id l189-v6so14711114ywb.10 for ; Mon, 16 Jul 2018 14:16:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=xZ41iNaqOki9J22NOJdLz04MJiWb9HnqMaCKm1Di7Bk=; b=HBpX0A9wWdzDkoqP6G7kXV19f4C5+RwmMBGkHdNHcUQSzP8S0VBi5DhqFcSuBRoP2C nA8eGwX5xCrcbDl2k2FzZatDB3UGkxujGANpCCjjfPLNwB0QoAdRRoNgKIM1svj38N48 MpNJvh5qcyuv+dpVa1jqm23J0Lpvr+s7vNRJ0wwVVdJaP+r4w08/+r5mt+ktL0FY/EcT Cu1Q4+sQVkqXX/TLrMfAHCAeUWjud5x1zD2Pfzp/L1EGTz2YsR83+WXwwd7Zp1D17pYh 8BMEk58rTqlsXu2KIEOxoPjD0E2Fx8tPBD/tDzZht5imEWxg9QylX2bsPP7LgGVFPKO6 KvDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=xZ41iNaqOki9J22NOJdLz04MJiWb9HnqMaCKm1Di7Bk=; b=CnYMYGRu1xIq/xj62IQA6U6YhoxuqOme4s03pU8K8YqJFzCvDd4+dvUE4gojlC/zsL 3wAWcw+ZDjGyX2TQkMZsxIX2XedNOJ08ikMHt2ZdvdGXTozkJadSHqbQjybg7ljgRJks N88zE7ga8GJ49/Kx1XvVABGq5x/wzYnSw04vEVKqSDrIn3Xi/41FAykkz1QhTw+2E+xi uDfgF2eJjBe0VOdZGT/oY/YA8fVrSuyCze7L5cfNbR720tOgW8cm5TF+kZWsGDRFhJap H0vQD6x6xoVnI56dIlRPuZliJeopfDAYPBQPxiLq/3mcf6Qn0tdVPEdZZFPCpzZ0E540 uSPA== X-Gm-Message-State: AOUpUlFuZppbH6O3vo8asz3B0azGnVfjrRyCEIuw+ruyFko6RtglBasd ed4VzrYegQMcwITCCrGsf0qTuojMQXRxNv8Usn8= X-Received: by 2002:a81:a949:: with SMTP id g70-v6mr8551791ywh.324.1531775813194; Mon, 16 Jul 2018 14:16:53 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a25:5e42:0:0:0:0:0 with HTTP; Mon, 16 Jul 2018 14:16:52 -0700 (PDT) In-Reply-To: <20180714125749.GA19498@kroah.com> References: <20180714055816.223754-1-toddpoynor@gmail.com> <20180714055816.223754-7-toddpoynor@gmail.com> <20180714125749.GA19498@kroah.com> From: Todd Poynor Date: Mon, 16 Jul 2018 14:16:52 -0700 Message-ID: Subject: Re: [PATCH 06/18] staging: gasket: fix deadlock in pci driver unregister path To: Greg Kroah-Hartman Cc: Dmitry Torokhov , Rob Springer , John Joseph , Ben Chan , Zhongze Hu , Simon Que , Guenter Roeck , devel@driverdev.osuosl.org, lkml , Todd Poynor Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jul 14, 2018 at 5:57 AM, Greg Kroah-Hartman wrote: > On Sat, Jul 14, 2018 at 11:07:21AM +0300, Dmitry Torokhov wrote: >> On Sat, Jul 14, 2018 at 8:58 AM Todd Poynor wrote: >> > >> > From: Todd Poynor >> > >> > g_mutex held across pci_unregister_driver() call, also held in >> > gasket_pci_remove(), which deadlocks. >> > >> > Reported-by: Dmitry Torokhov >> > Signed-off-by: Zhongze Hu >> > Signed-off-by: Todd Poynor >> > --- >> > drivers/staging/gasket/gasket_core.c | 7 ++----- >> > 1 file changed, 2 insertions(+), 5 deletions(-) >> > >> > diff --git a/drivers/staging/gasket/gasket_core.c b/drivers/staging/gasket/gasket_core.c >> > index 3bdf7d36b397..6d240dc59557 100644 >> > --- a/drivers/staging/gasket/gasket_core.c >> > +++ b/drivers/staging/gasket/gasket_core.c >> > @@ -668,13 +668,10 @@ static void gasket_pci_remove(struct pci_dev *pci_dev) >> > struct gasket_dev *gasket_dev = NULL; >> > const struct gasket_driver_desc *driver_desc; >> > /* Find the device desc. */ >> > - mutex_lock(&g_mutex); >> > + __must_hold(&g_mutex); >> >> And what exactly ensures that mutex is held here? Yes, we are holding >> the mutex when we unload the driver, but PCI hot-unplug or unbinding >> the device though sysfs do not go through module unload code path, so >> you'll end up here without holding the mutex. > > Which is a huge reason the whole "wrap the pci core calls" is not going > to work here at all. The device ownership rules are all wonky because > of this. Unwinding that is key to getting all of this right. OK, I'll drop this patch in favor of redoing things not to wrap PCI core calls in the future, thanks. > > thanks, > > greg k-h -- Todd