From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Xi Pardee <xi.pardee@linux.intel.com>
Cc: irenic.rajneesh@gmail.com, david.e.box@linux.intel.com,
Hans de Goede <hdegoede@redhat.com>,
platform-driver-x86@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>,
linux-pm@vger.kernel.org
Subject: Re: [PATCH] platform/x86: intel/pmc: Fix iounmap call for valid addresses
Date: Fri, 21 Mar 2025 16:49:19 +0200 (EET) [thread overview]
Message-ID: <66c1a0f1-7d7a-da07-e80f-027964c503b8@linux.intel.com> (raw)
In-Reply-To: <20250319224410.788273-1-xi.pardee@linux.intel.com>
On Wed, 19 Mar 2025, Xi Pardee wrote:
> pmc_core_clean_structure() is called when generic_core_init() fails.
> generic_core_init() could fail before ioremap() is called to get
> a valid regbase for pmc structure. The current code does not check
> regbase before calling iounmap(). Add a check to fix it.
Hi,
The approach that calls the same "full cleanup" function as deinit uses
when init function fails midway is very error prone as once again is
demonstrated. Is this the only error handling problem? Are you 100% sure?
Think about it, init is x% (<100%) done when it fails, then it calls a
function that tries to undo 100%. One needs to add lots of special logic
to handle 0-100% rollback into that cleanup function. The init function,
on the other hand, knows exactly where it was so it can rollback just what
is needed and not even try to rollback for more.
It's also very inconsistent to rollback ssram_pcidev in this file as ssram
code was moved into core_ssram so I think the ssram deinit should be moved
there too.
I think these init functions should be converted to do proper rollback
within the init function(s) to avoid very hard to track error handling.
I tried to check the error handling now in the pmc driver and after I
would have needed to jump between the files, I gave up.
> Fixes: 1b8c7b843c00 ("platform/x86:intel/pmc: Discover PMC devices")
> Signed-off-by: Xi Pardee <xi.pardee@linux.intel.com>
> ---
> drivers/platform/x86/intel/pmc/core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/platform/x86/intel/pmc/core.c b/drivers/platform/x86/intel/pmc/core.c
> index 7a1d11f2914f..de5fc06232e5 100644
> --- a/drivers/platform/x86/intel/pmc/core.c
> +++ b/drivers/platform/x86/intel/pmc/core.c
> @@ -1471,7 +1471,7 @@ static void pmc_core_clean_structure(struct platform_device *pdev)
> for (i = 0; i < ARRAY_SIZE(pmcdev->pmcs); ++i) {
> struct pmc *pmc = pmcdev->pmcs[i];
>
> - if (pmc)
> + if (pmc && pmc->regbase)
> iounmap(pmc->regbase);
--
i.
next prev parent reply other threads:[~2025-03-21 14:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-19 22:44 [PATCH] platform/x86: intel/pmc: Fix iounmap call for valid addresses Xi Pardee
2025-03-21 14:49 ` Ilpo Järvinen [this message]
2025-03-24 20:54 ` Xi Pardee
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=66c1a0f1-7d7a-da07-e80f-027964c503b8@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=david.e.box@linux.intel.com \
--cc=hdegoede@redhat.com \
--cc=irenic.rajneesh@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=platform-driver-x86@vger.kernel.org \
--cc=xi.pardee@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox