From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (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 47F71283FDD for ; Tue, 23 Jun 2026 15:58:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782230285; cv=none; b=o6hmkQ4ATFbzHuY+FS/pkZHG0wyFWv381FDbDiTvUZ989Z3L370umgu7RvvTHFnCJKEUgtlFgtRZEP+AGd+q5E3MMMpP/zrgBQZVyczRpW+VQEZK1cM5aXfSSaw/mudPOCL7mpG1/tWTeB0iOJtKUtUbfUu0a/eTcyLxuHuMAVU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782230285; c=relaxed/simple; bh=++ry80Y3y42WkZjhbUuymwWBOEsJxamcqMlEYw95Msw=; h=From:Date:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=HbqBP9euAQiEnyX7ofNLdCnKsJQVSbdfkVSdnH7SRejQLpIqgti9MYLGiFhgIageB1Tz/DX6sEa98C0BzwgDz8NsCneXHfc3ujukx7c0GS5DM4mc9Ho85cLUl5eG2UncLBp2G6mlDBYp41N5nXJKJbaVNey6HUsG0le8jcDxIF0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com; spf=pass smtp.mailfrom=suse.com; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b=FfNIjtNM; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=suse.com header.i=@suse.com header.b="FfNIjtNM" Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-4923fb1f095so632215e9.1 for ; Tue, 23 Jun 2026 08:58:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1782230282; x=1782835082; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:from:to:cc:subject:date:message-id:reply-to; bh=xtmMDA437w39MVAofWVkJcWIkJQwuTnYZm+BlnoAlow=; b=FfNIjtNMHPPw5x8yJ+SE8i+mQTTtDI2aNPJjOsX1iyBcD/5yRVx39htBhHqmaQWVIA s5fLECUdZir+FBXc24Y768q4U/Gg+GvR2y6veF3VLQrZUWYuJxr4K8MTCjiyE2ywvaI+ xv2tkiVaX6XYGgBKpIq2LCpM/Fqe0u3yHxsvKCW5pK/6Q7mooFuLcnOwZVFz3yduFpUN gKMagxzMUJSIx1QhX2qTjQroCLNfJFcMom+3Ffb6KVgpWA3yw0zIxFvslZjP8v6DfRnj VZKHEus0kBqq6+VxseZL1BxV0hzWeXZ+44aOxVjyosNOwkqpi9ikV8r1bMH8A1KBlzfC DuCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782230282; x=1782835082; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:date:from:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xtmMDA437w39MVAofWVkJcWIkJQwuTnYZm+BlnoAlow=; b=ZTkhZKgR4rgK/XtzRZkKtuEXsbBs3Sxcrq+ysuyTADQam+NhspdggK0PtbfnaMvNkK RUiBcp8mAj7v2MZ96nQDZlRp6pKm472H92jL28Rf0M4/9mVyjJQD3MVj5xAk5vzgC7ip ZPbq7pzTxvpecn31CixNdZjvDKsk1/DJ8OQMkOLITsay4spxdpNe70A+8byWkadneN3M 2RhneNKCO3YZc2V+WSh5ooJ1g4qtS1a5/n+sKUR7tWFonPV7hzmPDQj5CrYSci7yBEa4 v3jNtKCimNp5jeTw5uXBc/idMwnr5kLCbSZE7CNjZQBs8WL30R9T0GbS62LPEj7KmQwb 7V5Q== X-Forwarded-Encrypted: i=1; AFNElJ/y+CYrwlugeOnQ45wb2yYpWNQaTfUBQUAE6q197YX22NLOeRJPDoUR5eqPTgtUxgudzbWLt54XG+cwhIU=@vger.kernel.org X-Gm-Message-State: AOJu0YzRMxDFJvPx6XFBiZA1dWdIORz0S4/65z7lTww2gjDeAI58n2Ry 65CJdw4XPN6X2E7RcAlQtvAnWuZQxpqmurhvUYl+ftia/EHYunKdMtbE45c33ZjXHBj1WoIFzF1 8jhRkLgg= X-Gm-Gg: AfdE7cmYbrzOYfQEVx2wgT1jgD3dD6r/DnmRtLw2gI4+e098jML7wfbBNMTQNr9y8wX VmiIqiq+jRRcfWPkSOND0wevymq7swzDv2JIVuwC1bw+kksEGyz62SKFd1XX0vAWkhOhqj2/o5V SB0XAogFLNZQWGPD4wrASDD+/cs48VfXPFrI6OaYLgCVTC6Rx/OVZ8oIaarUz0XB+/y3EvaW8+F k7s5pwuMoS3MrZzN1HO4mv7QDMGmgxwPNRVrI1KPmWbkJi7sXeEhic1DQqQanbJqpaitGKWP7d+ N2a41fj9FQYBwPd5RhX6JEWl8SEQKYvrTIuh2ilSBIFGRofaPy+uWQ7FqjEasAL+be7x9RASUwD dSnCvlTyMkFkPoAdkZf2qtQOLX4rQvkQsGhQ5HH2/fTKtZ2/hS+ZPoRZ7YusMMViROOPw5mXtC/ aGpmXdMeNePQ== X-Received: by 2002:a05:600c:1f8b:b0:490:b58a:dcc1 with SMTP id 5b1f17b1804b1-4925b380756mr52900315e9.29.1782230282540; Tue, 23 Jun 2026 08:58:02 -0700 (PDT) Received: from localhost ([195.94.150.2]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4666678828dsm35970041f8f.19.2026.06.23.08.58.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jun 2026 08:58:01 -0700 (PDT) From: Andrea della Porta X-Google-Original-From: Andrea della Porta Date: Tue, 23 Jun 2026 18:01:26 +0200 To: Pengpeng Hou Cc: Andrea della Porta , Arnd Bergmann , Greg Kroah-Hartman , linux-kernel@vger.kernel.org Subject: Re: [PATCH] misc: rp1: do not put borrowed OF node Message-ID: References: <20260616150802.52050-1-pengpeng@iscas.ac.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260616150802.52050-1-pengpeng@iscas.ac.cn> Hi, On 23:08 Tue 16 Jun , Pengpeng Hou wrote: > dev_of_node() returns the device's OF node without taking a new > reference. rp1_probe() stores that borrowed pointer in rp1_node, but > drops it with of_node_put() on both success and failure paths. > > Dropping a reference that was never acquired can underflow the node's > refcount and leave later users with a stale OF node. Remove the > of_node_put() calls and keep rp1_node as a borrowed pointer. > > Signed-off-by: Pengpeng Hou > --- > drivers/misc/rp1/rp1_pci.c | 20 ++++++++------------ > 1 file changed, 8 insertions(+), 12 deletions(-) > > diff --git a/drivers/misc/rp1/rp1_pci.c b/drivers/misc/rp1/rp1_pci.c > index 81685e3f3296..ddee00045fd3 100644 > --- a/drivers/misc/rp1/rp1_pci.c > +++ b/drivers/misc/rp1/rp1_pci.c > @@ -191,13 +191,13 @@ static int rp1_probe(struct pci_dev *pdev, const struct pci_device_id *id) > if (!rp1_node) { > dev_err(dev, "Missing of_node for device\n"); > err = -EINVAL; > - goto err_put_node; > + goto err_out; > } > > rp1 = devm_kzalloc(&pdev->dev, sizeof(*rp1), GFP_KERNEL); > if (!rp1) { > err = -ENOMEM; > - goto err_put_node; > + goto err_out; > } > > rp1->pdev = pdev; > @@ -206,21 +206,21 @@ static int rp1_probe(struct pci_dev *pdev, const struct pci_device_id *id) > dev_err(&pdev->dev, > "Not initialized - is the firmware running?\n"); > err = -EINVAL; > - goto err_put_node; > + goto err_out; > } > > err = pcim_enable_device(pdev); > if (err < 0) { > err = dev_err_probe(&pdev->dev, err, > "Enabling PCI device has failed"); > - goto err_put_node; > + goto err_out; > } > > rp1->bar1 = pcim_iomap(pdev, 1, 0); > if (!rp1->bar1) { > dev_err(&pdev->dev, "Cannot map PCI BAR\n"); > err = -EIO; > - goto err_put_node; > + goto err_out; > } > > pci_set_master(pdev); > @@ -230,11 +230,11 @@ static int rp1_probe(struct pci_dev *pdev, const struct pci_device_id *id) > if (err < 0) { > err = dev_err_probe(&pdev->dev, err, > "Failed to allocate MSI-X vectors\n"); > - goto err_put_node; > + goto err_out; > } else if (err != RP1_INT_END) { > dev_err(&pdev->dev, "Cannot allocate enough interrupts\n"); > err = -EINVAL; > - goto err_put_node; > + goto err_out; > } > > pci_set_drvdata(pdev, rp1); > @@ -267,15 +267,11 @@ static int rp1_probe(struct pci_dev *pdev, const struct pci_device_id *id) > goto err_unregister_interrupts; > } > > - of_node_put(rp1_node); > - > return 0; > > err_unregister_interrupts: > rp1_unregister_interrupts(pdev); > -err_put_node: > - of_node_put(rp1_node); > - > +err_out: > return err; > } > > -- > 2.43.0 > Thanks for your patch! Reviewed-by: Andrea della Porta