Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2661619pxa; Mon, 17 Aug 2020 15:51:42 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxXT1t1KK59ShWE2DZ3jNG9GhKvfKu6Zzaf/uDyz98k+WHFG8r92MO0Xbn0jOeWfBtwiR+V X-Received: by 2002:a17:906:c187:: with SMTP id g7mr18024582ejz.108.1597704701953; Mon, 17 Aug 2020 15:51:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597704701; cv=none; d=google.com; s=arc-20160816; b=RzkKsXQwdakhFh+u1B8LO7GurGsSh4BRwTUu108JPIbQSmBaHppIT0NasqDiBegdWn R5WWHt6PHkCc3DpZjIscBj0deMVlZm52McMwDFOphsrcPiP+HYrx5G+/ytfREnFVSSAL YAWwQqeRnVqMDabHZPnA0TGRPhKHbkSvNpO4235evgoHlm724fyB0BVHhKBRwxMuVBBv UZjJSFw6XVbddyhRDceYgfxVneLNi72NhltnTG5x+qRI26hBtjIx897F7m4U9oBbEWZK 8UNtH6hlxb+cf+LUjUWfNv4eyLoSNr5TeGoEvnXydPA/tgQ1sBn5J19dsfOjkhTOe2hn lkqg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=xvexqMrmP2WRMKTk7dKv0i8QtZPkAiuzR7flaHda/GE=; b=BHQZwq3Gi7II/sL0w9gK4SMBlDMJ7GBqvORo3ZV01e44SddCnWA+NITwGANIaRhJw1 oq7pMFtC9ZXCPcv5KUapOaf3yUXiGRXiKLJSmC7NKi4OW0UYlCV6qNdPhaLRKzOTG+UB atimtgcL8RSuCQu2SAIlt/JVmk+uFB7E/FO4vustkf+4MEHQ4+OOCohgrfigPr070I8Y sj+jSobQCIRcUgA3fW7iGR1sSMpt7VLqJnT3zU+visIZr8EDo3b+T6mgXr29HpNQydYl zDIwnQnml4DHSJSfs0704VkvoUme1cyXafoTbIwMI15zqSlBSoy+WGRMtur7TqJE8AHx /0wA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jd+Lx8E8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id mm19si13016868ejb.501.2020.08.17.15.51.19; Mon, 17 Aug 2020 15:51:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jd+Lx8E8; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390304AbgHQTP6 (ORCPT + 99 others); Mon, 17 Aug 2020 15:15:58 -0400 Received: from mail.kernel.org ([198.145.29.99]:48264 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387450AbgHQPjl (ORCPT ); Mon, 17 Aug 2020 11:39:41 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 539BD22DD6; Mon, 17 Aug 2020 15:39:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1597678781; bh=R0QLPaEn5SylRjQHBNE7hrmwe2DVacujRcor1yz0pyM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jd+Lx8E8E9QhZVK0arLoM2+AbIyytMhBlPgELyQSGN6gAWiKhzQahYNVnkkg0uJwy cS2fFQDyZDUNkO+eXfseJCwO2444mi4lWuHPRh1Awr/XOl742J7wtevvLc1pkwB5aP MTDGqBl252oluPx8f2PNq03vUGop1lTwyXj38Vac= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, syzbot , Geert Uytterhoeven , Tetsuo Handa , stable Subject: [PATCH 5.8 421/464] driver core: Fix probe_count imbalance in really_probe() Date: Mon, 17 Aug 2020 17:16:14 +0200 Message-Id: <20200817143853.941082307@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200817143833.737102804@linuxfoundation.org> References: <20200817143833.737102804@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Tetsuo Handa commit b292b50b0efcc7095d8bf15505fba6909bb35dce upstream. syzbot is reporting hung task in wait_for_device_probe() [1]. At least, we always need to decrement probe_count if we incremented probe_count in really_probe(). However, since I can't find "Resources present before probing" message in the console log, both "this message simply flowed off" and "syzbot is not hitting this path" will be possible. Therefore, while we are at it, let's also prepare for concurrent wait_for_device_probe() calls by replacing wake_up() with wake_up_all(). [1] https://syzkaller.appspot.com/bug?id=25c833f1983c9c1d512f4ff860dd0d7f5a2e2c0f Reported-by: syzbot Fixes: 7c35e699c88bd607 ("driver core: Print device when resources present in really_probe()") Cc: Geert Uytterhoeven Signed-off-by: Tetsuo Handa Cc: stable Link: https://lore.kernel.org/r/20200713021254.3444-1-penguin-kernel@I-love.SAKURA.ne.jp Signed-off-by: Greg Kroah-Hartman --- drivers/base/dd.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) --- a/drivers/base/dd.c +++ b/drivers/base/dd.c @@ -276,7 +276,7 @@ static void deferred_probe_timeout_work_ list_for_each_entry_safe(private, p, &deferred_probe_pending_list, deferred_probe) dev_info(private->device, "deferred probe pending\n"); - wake_up(&probe_timeout_waitqueue); + wake_up_all(&probe_timeout_waitqueue); } static DECLARE_DELAYED_WORK(deferred_probe_timeout_work, deferred_probe_timeout_work_func); @@ -487,7 +487,8 @@ static int really_probe(struct device *d drv->bus->name, __func__, drv->name, dev_name(dev)); if (!list_empty(&dev->devres_head)) { dev_crit(dev, "Resources present before probing\n"); - return -EBUSY; + ret = -EBUSY; + goto done; } re_probe: @@ -607,7 +608,7 @@ pinctrl_bind_failed: ret = 0; done: atomic_dec(&probe_count); - wake_up(&probe_waitqueue); + wake_up_all(&probe_waitqueue); return ret; }