Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp318029imm; Sat, 14 Jul 2018 01:08:28 -0700 (PDT) X-Google-Smtp-Source: AAOMgpcgIovQlrdObt/6l+bggEOmkvI3a7Ausf0vBWzaH7uryQ7hxY0DcpMMyIYvt723BJpHpqAv X-Received: by 2002:a63:c312:: with SMTP id c18-v6mr8765434pgd.449.1531555708119; Sat, 14 Jul 2018 01:08:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531555708; cv=none; d=google.com; s=arc-20160816; b=WSBcr0XO/neAaRjrt9Ua0AmxrC2UN4VYNKY4IzgOf/JqoaJd8oT1GnfqlZ5RbVEhae lOCQNUKaoSKeVwH1qfw99lybmkkxrlqoYuZHTDSBCe6rkIPU7qVvLPWF8lp83xGgGwQs wdh3tTVuKofLwtRvYw2Ct2bueKOoqI81bgwCJwfcEYKJYJ0MtdOe00nPt7JLhlJ74etL cG7ONuIwSdG4ZTN7RuYoBpP3xJb7Mw3Uo6RhWcIInB07cyqQEC4KMdgQhdp9k0F1Ou0w X9K6lb0yKzFBDU2EesaqMC2dcGt0YcDS4y+A1YVPFYMfaUuhTYxCRsEhUQQTUk+XFncG 5mTA== 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 :in-reply-to:references:mime-version:dkim-signature :arc-authentication-results; bh=nL6BQKuwkG4bBOt4i3NR2ApsksW7C5jSTAm0yQKngUY=; b=IU+CRhGPGQEf+UmtI8l9jvM9HYNl6+yXOSnMe8lJc37NO0S3pAamjkEyKJlhnrJpwF ebuoxtxkTrR2B9GHrjeo0MfZn8KFejSbEZWhFXnxlF0DLqsKfi18Oa3ymIfZuGN/9Och Pm8gjb6zJS2IYg90LuwCoYPaVG7OWzxC8/U2rdKa1mo0D/0b7jpC9CCRV+uSE/KWrI0D t2nl7oMOtt0YU5oBCjVTCVGzlLA1tF+Cpq71osUVhZuuQrbS1tFNoG3hcsbovqYFnqLj axbW4uMngjS7G6+shRCqKCdh8N+vqeSzq4qC/3+lSrLaVpz2cv7n7xbho12RmFBD1j9y J49A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=cW2cYvgD; 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=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 6-v6si25188481pgz.592.2018.07.14.01.08.12; Sat, 14 Jul 2018 01:08:28 -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=@chromium.org header.s=google header.b=cW2cYvgD; 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=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726527AbeGNIZw (ORCPT + 99 others); Sat, 14 Jul 2018 04:25:52 -0400 Received: from mail-ed1-f66.google.com ([209.85.208.66]:44927 "EHLO mail-ed1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726025AbeGNIZv (ORCPT ); Sat, 14 Jul 2018 04:25:51 -0400 Received: by mail-ed1-f66.google.com with SMTP id d17-v6so14180325eds.11 for ; Sat, 14 Jul 2018 01:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=nL6BQKuwkG4bBOt4i3NR2ApsksW7C5jSTAm0yQKngUY=; b=cW2cYvgDcip2LQs3Sb9941d4sYVL+HItaGfzqMc+tvxf4+u+C5vzwOCxTTV8c5gsbl BiQX1UOZI6qpmXXlDRFHdHjBL4hkcRZsJYqjdrk9WGMShoVK+GB1aSDvqa2JojrkVzRA pyLQZGggfcYPQuThnw/O89xOtX1VKIYmJD3bA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=nL6BQKuwkG4bBOt4i3NR2ApsksW7C5jSTAm0yQKngUY=; b=PZ91rlrhutfvlFZmgXI4KsZn2S/gOBW38n5kPFfkwu0f4MtwFwaws6rMgD1csEhZ0/ dPS96u0tI1LK32lUWZwEoUP7EncnuSpM1/DkMRWjdht5kCG1iZmZZ3ppaBen5ih6fovC JF059B3I6WzLbgIlVIYFTKEj7FQAHla8PqcZKun313irLCShWS63iO+Oe+7onUo00Bsu 77R3Wn1TPbxFuGSRKIriGp7WGlDR1ECWq04e/OPVc8X70hUCVXiqpy3uMFUaWQU33PW1 QAl5YP+fu2LAuFk7eaOO0ptfzjBlhYlD1h6VQbL14YjiM/OsFM7pJHAW3HqBI5mObNbP GfxA== X-Gm-Message-State: AOUpUlGefe38zmcdpIUvJUtIC+YVz15QSaPMv+Eh6L0lCSr7Egq8b4lS fot/9h3ZfRBND9YHQUYkwCfX6AGashEakA== X-Received: by 2002:a50:bdc7:: with SMTP id z7-v6mr10196384edh.84.1531555656478; Sat, 14 Jul 2018 01:07:36 -0700 (PDT) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com. [209.85.221.42]) by smtp.gmail.com with ESMTPSA id b4-v6sm10730032edl.57.2018.07.14.01.07.34 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 14 Jul 2018 01:07:34 -0700 (PDT) Received: by mail-wr1-f42.google.com with SMTP id c4-v6so14455258wrs.12 for ; Sat, 14 Jul 2018 01:07:34 -0700 (PDT) X-Received: by 2002:adf:bc92:: with SMTP id g18-v6mr6985259wrh.266.1531555653918; Sat, 14 Jul 2018 01:07:33 -0700 (PDT) MIME-Version: 1.0 References: <20180714055816.223754-1-toddpoynor@gmail.com> <20180714055816.223754-7-toddpoynor@gmail.com> In-Reply-To: <20180714055816.223754-7-toddpoynor@gmail.com> From: Dmitry Torokhov Date: Sat, 14 Jul 2018 11:07:21 +0300 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH 06/18] staging: gasket: fix deadlock in pci driver unregister path To: toddpoynor@gmail.com Cc: rspringer@google.com, jnjoseph@google.com, benchan@chromium.org, Greg Kroah-Hartman , frankhu@chromium.org, Simon Que , Guenter Roeck , devel@driverdev.osuosl.org, lkml , toddpoynor@google.com 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 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. > internal_desc = lookup_internal_desc(pci_dev); > - if (!internal_desc) { > - mutex_unlock(&g_mutex); > + if (!internal_desc) > return; > - } > - mutex_unlock(&g_mutex); > > driver_desc = internal_desc->driver_desc; Thanks, Dmitry