All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Mike Rapoport (Microsoft)" <rppt@kernel.org>
Cc: linux-serial@vger.kernel.org
Subject: Re: [PATCH v2 3/3] tty: hvcs: replace __get_free_page() with kmalloc()
Date: Mon, 31 Aug 2026 08:40:05 +0000	[thread overview]
Message-ID: <20260831084005.DC0AC1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260831-tty-v2-3-88cd58c3c640@kernel.org>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] Failure in kthread_run leaves global variables dangling and pointing to an ERR_PTR, bypassing initialization checks on subsequent probes (leading to UAF) and causing a kernel panic on module unload.
--

commit b1538891a24d98413046b6d1a4fb966407282fe0
Author: Mike Rapoport (Microsoft) <rppt@kernel.org>

tty: hvcs: replace __get_free_page() with kmalloc()

This patch replaces the use of __get_free_page() and free_page() with
kmalloc() and kfree() respectively for the hvcs_pi_buff allocation. It
simplifies the API usage and removes the need for size tracking during
deallocation.

Link: https://lore.kernel.org/all/635405e4-9423-4a25-a6e7-e03c8ea0bcbe@redhat.com

> diff --git a/drivers/tty/hvc/hvcs.c b/drivers/tty/hvc/hvcs.c
> index d32b1e3c50bfd..b94d59fa36274 100644
> --- a/drivers/tty/hvc/hvcs.c
> +++ b/drivers/tty/hvc/hvcs.c
[ ... ]
> @@ -1486,7 +1486,7 @@ static int hvcs_initialize(void)
>  	return 0;
>  
>  kthread_fail:
> -	free_page((unsigned long)hvcs_pi_buff);
> +	kfree(hvcs_pi_buff);

[Severity: High]
This isn't a bug introduced by this patch, but it looks like the error handling 
here leaves global variables dangling.

If kthread_run() fails earlier in hvcs_initialize(), it returns an ERR_PTR 
which is assigned to the global hvcs_task pointer. In this error path, 
hvcs_pi_buff is freed, but neither hvcs_task nor hvcs_pi_buff are reset to 
NULL.

Since hvcs_task is not NULL (it holds the ERR_PTR), a subsequent call to 
hvcs_initialize() might bypass initialization:

	if (hvcs_task) {
		mutex_unlock(&hvcs_init_mutex);
		return 0;
	}

Could this lead to use-after-free bugs if later code tries to use the freed 
hvcs_pi_buff?

[ ... ]
> @@ -1528,7 +1528,7 @@ static void __exit hvcs_module_exit(void)
>  	kthread_stop(hvcs_task);
>  
>  	spin_lock(&hvcs_pi_lock);
> -	free_page((unsigned long)hvcs_pi_buff);
> +	kfree(hvcs_pi_buff);

[Severity: High]
This is a pre-existing issue, but does this cleanup path attempt to dereference 
an invalid pointer if hvcs_initialize() previously failed during kthread_run()?

If hvcs_task contains an ERR_PTR, calling kthread_stop(hvcs_task) could cause 
an invalid dereference.

Also, because hvcs_pi_buff was already freed in the kthread_fail path and never 
set to NULL, would this result in a double free?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260831-tty-v2-0-88cd58c3c640@kernel.org?part=3

      reply	other threads:[~2026-08-31  8:40 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31  8:27 [PATCH v2 0/3] tty: replace page allocator calls with k[mz]alloc() Mike Rapoport (Microsoft)
2026-08-31  8:27 ` [PATCH v2 1/3] tty: port: replace get_zeroed_page() with kzalloc() Mike Rapoport (Microsoft)
2026-08-31  8:54   ` sashiko-bot
2026-08-31  8:27 ` [PATCH v2 2/3] serial: core: " Mike Rapoport (Microsoft)
2026-08-31  8:40   ` sashiko-bot
2026-08-31  8:27 ` [PATCH v2 3/3] tty: hvcs: replace __get_free_page() with kmalloc() Mike Rapoport (Microsoft)
2026-08-31  8:40   ` sashiko-bot [this message]

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=20260831084005.DC0AC1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=rppt@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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.