From: Borislav Petkov <bp@alien8.de>
To: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Alviro Iskandar Setiawan <alviro.iskandar@gmail.com>,
Alviro Iskandar Setiawan <alviro.iskandar@gnuweeb.org>,
Dave Hansen <dave.hansen@linux.intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
"H. Peter Anvin" <hpa@zytor.com>, Ingo Molnar <mingo@redhat.com>,
Tony Luck <tony.luck@intel.com>,
Yazen Ghannam <yazen.ghannam@amd.com>,
linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
stable@vger.kernel.org, gwml@vger.gnuweeb.org, x86@kernel.org
Subject: Re: [PATCH v5 2/2] x86/MCE/AMD: Fix memory leak when `threshold_create_bank()` fails
Date: Mon, 28 Mar 2022 00:52:19 +0200 [thread overview]
Message-ID: <YkDqo2eEbABbtSGY@zn.tnic> (raw)
In-Reply-To: <20220310015306.445359-3-ammarfaizi2@gnuweeb.org>
On Thu, Mar 10, 2022 at 08:53:06AM +0700, Ammar Faizi wrote:
> In mce_threshold_create_device(), if threshold_create_bank() fails, the
> @bp will be leaked, because the call to mce_threshold_remove_device()
> will not free the @bp. mce_threshold_remove_device() frees
> @threshold_banks. At that point, the @bp has not been written to
> @threshold_banks, @threshold_banks is NULL, so the call is just a nop.
>
> Fix this by extracting the cleanup part into a new static function
> _mce_threshold_remove_device(), then call it from create/remove device
> functions.
>
> Also, eliminate the "goto out_err", just early return inside the loop
> if the creation fails.
>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: stable@vger.kernel.org # v5.8+
> Fixes: 6458de97fc15 ("x86/mce/amd: Straighten CPU hotplug path")
How did you decide this is the commit that this is fixing?
> Link: https://lore.kernel.org/lkml/9dfe087a-f941-1bc4-657d-7e7c198888ff@gnuweeb.org
That Link tag is not needed.
> Co-authored-by: Alviro Iskandar Setiawan <alviro.iskandar@gnuweeb.org>
> Signed-off-by: Alviro Iskandar Setiawan <alviro.iskandar@gnuweeb.org>
> Co-authored-by: Yazen Ghannam <yazen.ghannam@amd.com>
There's no "Co-authored-by".
The correct tag is described in
Documentation/process/submitting-patches.rst
Please make sure you've read that file before sending patches.
> Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
> Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
> ---
> arch/x86/kernel/cpu/mce/amd.c | 32 +++++++++++++++++++-------------
> 1 file changed, 19 insertions(+), 13 deletions(-)
...
> @@ -1350,15 +1357,14 @@ int mce_threshold_create_device(unsigned int cpu)
> if (!(this_cpu_read(bank_map) & (1 << bank)))
> continue;
> err = threshold_create_bank(bp, cpu, bank);
> - if (err)
> - goto out_err;
> + if (err) {
> + _mce_threshold_remove_device(bp, numbanks);
> + return err;
> + }
> }
> this_cpu_write(threshold_banks, bp);
Do I see it correctly that the publishing of the @bp pointer - i.e.,
this line - should be moved right above the for loop?
Then mce_threshold_remove_device() would properly free it in the error
case and your patch turns into a oneliner?
And then your Fixes: tag would be correct too...
--
Regards/Gruss,
Boris.
https://people.kernel.org/tglx/notes-about-netiquette
next prev parent reply other threads:[~2022-03-27 22:52 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-10 1:53 [PATCH v5 0/2] Two x86 fixes Ammar Faizi
2022-03-10 1:53 ` [PATCH v5 1/2] x86/delay: Fix the wrong asm constraint in `delay_loop()` Ammar Faizi
2022-03-27 21:38 ` Borislav Petkov
2022-03-28 4:16 ` Ammar Faizi
2022-03-28 4:29 ` Ammar Faizi
2022-03-28 7:56 ` Borislav Petkov
2022-03-10 1:53 ` [PATCH v5 2/2] x86/MCE/AMD: Fix memory leak when `threshold_create_bank()` fails Ammar Faizi
2022-03-27 22:52 ` Borislav Petkov [this message]
2022-03-28 4:12 ` Ammar Faizi
2022-03-28 8:05 ` Borislav Petkov
2022-03-17 8:19 ` [PATCH v5 0/2] Two x86 fixes Ammar Faizi
2022-03-17 9:27 ` Borislav Petkov
2022-03-17 9:50 ` Ammar Faizi
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=YkDqo2eEbABbtSGY@zn.tnic \
--to=bp@alien8.de \
--cc=alviro.iskandar@gmail.com \
--cc=alviro.iskandar@gnuweeb.org \
--cc=ammarfaizi2@gnuweeb.org \
--cc=dave.hansen@linux.intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=gwml@vger.gnuweeb.org \
--cc=hpa@zytor.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=stable@vger.kernel.org \
--cc=tglx@linutronix.de \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=yazen.ghannam@amd.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.