From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qk1-f177.google.com (mail-qk1-f177.google.com [209.85.222.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B88153C819A for ; Fri, 7 Aug 2026 03:54:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.222.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786074906; cv=none; b=u5F8MnbBSX/XBADZFPMOI8S0BX9lI3aadSjM+KCa5LazXHJt+wqcuAGRdQ5JUf03AN7sZ73XoAxl+aMUWKWu8GFZh6YK/u/DtER6gRsZ3lo8eJVEENeOuyplqxRoiitE8Au0XJNEO3KcKh6N210JBI2Q75jja0XOo5kzlwaWrtc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786074906; c=relaxed/simple; bh=Elhaw7454IcxOxFvajFIj/zc+9hsb3/Q9YfUijVfmjU=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=YaKvVl/0GF4bPpB6z84mmKaVYg4z26TLKVwGIxq0/nPq7txkIDDTyovuSHNWJXUPqDRciR2p7VPjoAjoenYcunb/0WvRDUkEyt9yBXvISJaoCpgdAEgHsM/4hIMEEBfb4CbIgfrYrkc1NrnRBfow0j3Q3TSJrrZ3ZWtMSHW57BY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=fWKOsA69; arc=none smtp.client-ip=209.85.222.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="fWKOsA69" Received: by mail-qk1-f177.google.com with SMTP id af79cd13be357-934a3d14924so295064085a.2 for ; Thu, 06 Aug 2026 20:54:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786074898; x=1786679698; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=V73Au8wEhU0LrohqbWiG8So58r1u7vwRuaOrdVjuz8Y=; b=fWKOsA69tHrnoXuMtSRFOThpnW5seCHiWJmWA/Z/LhbX+vgFp1/ucYoyGPJedbc+Xt Zhbn2FYGQ7QxT1YhgdJYxVAGNmM9IO+rhjiH6BbnvyGWp/siAztCcP4YH0ITizskZeKV totXkdhmVnuiQjs5geE169sa6h14GA7IvoQ4pJpuvQqTzj/HsPDsID4x6PFUo+MqqOxF AfVSR18w2SozUtr+fNTZOD67QKFkdz4/rgQ7Dlq+/7y2FmPwop9xzwGuwGSc4VyHOfgc uaU3doqwbNTAZtiyBd+sowBjICRfn1A/3JOi8WjovWvE+ezfYapE2LZ54Sq3oB9/MfxR Ghlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786074898; x=1786679698; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=V73Au8wEhU0LrohqbWiG8So58r1u7vwRuaOrdVjuz8Y=; b=A9YE9sZoquK9UfaV/YYZwIrHfFtv/T5gKQ/jrq6DXoBCTPOwwvAcIMwJNViCphDNYj RUTiGeqCXuTIZmO/ExwWVQJgimACtz18tx4zyiRV3wKreIVCTBL4RsZ+muQGRgmyjmFc yGI4ZHDyPKnoLF9vSYK9X0qO+RPj5x9DsoawMPZU2tmHgwBYy5IoS4zSrMWcimyWxK3h 8/dcBRnGWShqdD6eRsry1Q1Q4ylXD6b7bT6cC+RnLnIQeUCHmieTQhFKcs3q7JhhSWwn f+BiWqZ4YZKiW3TWOI4jUHFeUXtlI1CSKGAomfMMGsGAEkFBrlC+6KWACWmDIUvXa8/C SKjg== X-Forwarded-Encrypted: i=1; AHgh+RqnAYPYalkU5/OVa5KwtBPF/0pKk06OSebBJaXsJqNAJBtDyTXexF5J3OqQZP1x9Y2WzsfjtBM9k/EPd6g=@vger.kernel.org X-Gm-Message-State: AOJu0YyrjNmkvB2dm/k3D+lWkvzRADEeMNx5vMrWknxf6f800LIA7s3p HG726I2ibNL4bNhnZfCtVTneYuuDqjRqEttM6nAmN1tKgoXaIXqNR2pd X-Gm-Gg: AR+sD11BVVFTudX5iXrskq0cSYpa+fOOjozHgmo4ppB3UfR+m1souuXQN20NWlzeSaj nu+CIllKaDTBjwvOxQrJhcpaIDiTsXnoRYa2DKbMCJnUHnT8AYQRXetiFHInwEiFrbhTroLq3cr hoMizgm8cgP4338Fl3yYrWG94/hgKfyoWDEiUE/XEyCQmL40xtSjOPqqbXGDnUBen4CJvMnm9dC CsOIBHfhUiNNh3vqykyKmDwddmlZCkJDsWUNp53JbPwP4/FBNwy3fw7qU/YYfvPTRE4f2NAZtgH ZS/Q96xibJb8kS4UbTykVS1/mDFgev4FXCwsQOwviQMFY6gxlH4v+VN98TGbvWlkVOCwXb9r/xf A3Dqet5/AE4Nwsk4clqouqye5Y3CC7fGMnA21qgy8gErXobPEr5DyqDM41w7L5pY5TyZZalZbfR z+gpHydID5dZNjeTZta/KBSq2sfKoWOhDhDmg36vqX7+7Pgr+XaOHxMEUCJpIPC5gL9oAcGJXAb 90zUYhbRreomoscg8eyhGcJYaTTy1ojDK4HoLAtCFX7LG6PqVtIN/enpLattAo= X-Received: by 2002:a05:620a:f07:b0:936:583a:dd75 with SMTP id af79cd13be357-9366646501amr671111785a.17.1786074898332; Thu, 06 Aug 2026 20:54:58 -0700 (PDT) Received: from i4-gl-tmk5904.ad.psu.edu ([130.203.156.186]) by smtp.gmail.com with ESMTPSA id af79cd13be357-9366e258608sm61386985a.33.2026.08.06.20.54.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Aug 2026 20:54:57 -0700 (PDT) From: Yuho Choi To: rafael@kernel.org Cc: lenb@kernel.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, Yuho Choi Subject: [PATCH v1] PNP: Release protocol device on registration failure Date: Thu, 6 Aug 2026 23:54:53 -0400 Message-ID: <20260807035453.948129-1-dbgh9129@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit pnp_register_protocol() adds a protocol to the PNP list before calling device_register(). If device registration fails, pnp_remove_protocol() only removes the list entry and leaves the device-core reference acquired by device_initialize() held. Give static protocol devices a release callback and drop the reference on registration failure. Also stop PNP ACPI device enumeration when protocol registration fails, instead of using an unregistered protocol device as a parent. Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Yuho Choi --- drivers/pnp/core.c | 9 ++++++++- drivers/pnp/pnpacpi/core.c | 7 ++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/pnp/core.c b/drivers/pnp/core.c index 81603327079c..fc3bff43fdd8 100644 --- a/drivers/pnp/core.c +++ b/drivers/pnp/core.c @@ -23,6 +23,10 @@ static LIST_HEAD(pnp_protocols); LIST_HEAD(pnp_global); DEFINE_MUTEX(pnp_lock); +static void pnp_protocol_release(struct device *dev) +{ +} + /* * ACPI or PNPBIOS should tell us about all platform devices, so we can * skip some blind probes. ISAPNP typically enumerates only plug-in ISA @@ -66,14 +70,17 @@ int pnp_register_protocol(struct pnp_protocol *protocol) protocol->number = nodenum; dev_set_name(&protocol->dev, "pnp%d", nodenum); + protocol->dev.release = pnp_protocol_release; list_add_tail(&protocol->protocol_list, &pnp_protocols); mutex_unlock(&pnp_lock); ret = device_register(&protocol->dev); - if (ret) + if (ret) { pnp_remove_protocol(protocol); + put_device(&protocol->dev); + } return ret; } diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index fbf03ff007eb..da0ebc378696 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c @@ -298,12 +298,17 @@ static acpi_status __init pnpacpi_add_device_handler(acpi_handle handle, int pnpacpi_disabled __initdata; static int __init pnpacpi_init(void) { + int ret; + if (acpi_disabled || pnpacpi_disabled) { printk(KERN_INFO "pnp: PnP ACPI: disabled\n"); return 0; } printk(KERN_INFO "pnp: PnP ACPI init\n"); - pnp_register_protocol(&pnpacpi_protocol); + ret = pnp_register_protocol(&pnpacpi_protocol); + if (ret) + return ret; + acpi_get_devices(NULL, pnpacpi_add_device_handler, NULL, NULL); printk(KERN_INFO "pnp: PnP ACPI: found %d devices\n", num); pnp_platform_devices = 1; -- 2.43.0