Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp1101433pxa; Thu, 20 Aug 2020 02:29:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy24y9Jo5zUK0ZxeCvFPc16mVYDTxw3MHcdV1RuN9EMf3gapRfWY9xs9zC6TpiCLkKGvzmY X-Received: by 2002:a17:906:3493:: with SMTP id g19mr2458227ejb.253.1597915745484; Thu, 20 Aug 2020 02:29:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597915745; cv=none; d=google.com; s=arc-20160816; b=dSIR1Vv1WqpoLuf+06JKHuL3NbKYXLbPbJyeMpKQhIl2OQ0arGu3AH99OQHKeR7+uB c3oLP9fK2m9UWX/Mqozpb/+upBfh6gLtwCu3SgAg+HIEYnDubngPDpEFwb2NarNZ6lLk gQqvuwRVWdZCiafRC2NrXP30YKEpeCTRMXqeNYBHhIZWQaUOiFaJbiXRWxDcRpIJHEA5 rA92QQN8EZQe5GlDwZKf+sx6poHtnBIwS2nDh+eKLFvf6hLlstj3m3YuREhSti+6gSci w9LruXKPooscxSVu9Hg+scjVs5suSaq1h8W7JBWY7/i3FxKT5HpONI5P2dcLTPA/vSYw tbHw== 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=B6J0f6aR5ZhYpIOzJkPshM2K6XqpWaXheOLqVvxW6NQ=; b=jRSrdi0J/ElEH5DEF3DnNecUFibWE76JOnt4Q890LQICTaLdMNrHugYWAPe0xzUctf SO/iO46W+Zh35QBhbM/Uy+qPxZll1fzh8onKvDqdZxEyFJ4oT0y/yQ37651la0gU3Obb XPwWDmIVHrnoOob4G0bddLMNLoa0wJbwCs1IO8FAheNfrUYHIEpgnxnUR1ITfldAmygh 2X7Y0H8zIJ1wXWh9NOjrnwWd35zQGOYkuCU8HiY8ZT5hRCrc3umbV+N8o939zqa4ZDiW vBmJ+TpT/Ve4ZlzTmhXmW8yhrIgUy2rgCBsuSDf3vUBFM63uavx3lZe6l94Q5591RhJt PgIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=z5tuxasZ; 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 qc16si776750ejb.746.2020.08.20.02.28.41; Thu, 20 Aug 2020 02:29:05 -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=z5tuxasZ; 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 S1725820AbgHTJZY (ORCPT + 99 others); Thu, 20 Aug 2020 05:25:24 -0400 Received: from mail.kernel.org ([198.145.29.99]:60762 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727021AbgHTJYu (ORCPT ); Thu, 20 Aug 2020 05:24:50 -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 50C7122CB1; Thu, 20 Aug 2020 09:24:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1597915489; bh=CB91mRZZtwRX5Rs6Z2McPo2ROvipo0Nrx6PjkXAUo9k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=z5tuxasZaSCevODMiw1oS70+13Bhmk8/Adk40T+B8fNFskBXsZgU1wyV+TwpUErc5 pqdVeMR6NClUYlrR1usYUjjPdMCwwXjnjStBIN1lsrQ5MbzqU7/JCH9AaSj8W5/pWn 7z5m4IbD8VJZc72i8TDmOifCO9AODzUOK5eOf2ww= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vasily Averin , "Rafael J. Wysocki" Subject: [PATCH 5.8 007/232] PCI: hotplug: ACPI: Fix context refcounting in acpiphp_grab_context() Date: Thu, 20 Aug 2020 11:17:38 +0200 Message-Id: <20200820091613.059001316@linuxfoundation.org> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200820091612.692383444@linuxfoundation.org> References: <20200820091612.692383444@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: Rafael J. Wysocki commit dae68d7fd4930315389117e9da35b763f12238f9 upstream. If context is not NULL in acpiphp_grab_context(), but the is_going_away flag is set for the device's parent, the reference counter of the context needs to be decremented before returning NULL or the context will never be freed, so make that happen. Fixes: edf5bf34d408 ("ACPI / dock: Use callback pointers from devices' ACPI hotplug contexts") Reported-by: Vasily Averin Cc: 3.15+ # 3.15+ Signed-off-by: Rafael J. Wysocki Signed-off-by: Greg Kroah-Hartman --- drivers/pci/hotplug/acpiphp_glue.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) --- a/drivers/pci/hotplug/acpiphp_glue.c +++ b/drivers/pci/hotplug/acpiphp_glue.c @@ -122,13 +122,21 @@ static struct acpiphp_context *acpiphp_g struct acpiphp_context *context; acpi_lock_hp_context(); + context = acpiphp_get_context(adev); - if (!context || context->func.parent->is_going_away) { - acpi_unlock_hp_context(); - return NULL; + if (!context) + goto unlock; + + if (context->func.parent->is_going_away) { + acpiphp_put_context(context); + context = NULL; + goto unlock; } + get_bridge(context->func.parent); acpiphp_put_context(context); + +unlock: acpi_unlock_hp_context(); return context; }