From: sashiko-bot@kernel.org
To: "Sebastian Alba Vives" <sebasjosue84@gmail.com>
Cc: linux-serial@vger.kernel.org
Subject: Re: [PATCH 2/2] serial: sifive: avoid division by zero in the clock notifier
Date: Sat, 17 Oct 2026 07:47:55 +0000 [thread overview]
Message-ID: <sashiko-outbox-175371@kernel.org> (raw)
In-Reply-To: <20261017074453.62645-3-sebasjosue84@gmail.com>
> From: Sebastian Alba <sebasjosue84@estudiantec.cr>
>
> sifive_serial_probe() registers the clock rate-change notifier before
> it initialises the two fields that notifier divides by. ssp comes from
> devm_kzalloc(), so between clk_notifier_register() and the assignments
> a few lines below, both ssp->baud_rate and ssp->port.uartclk are zero.
>
> A rate change taken in that window reaches:
>
> PRE_RATE_CHANGE: udelay(DIV_ROUND_UP(12 * 1000 * 1000, ssp->baud_rate))
> POST_RATE_CHANGE: __ssp_update_div() ->
> DIV_ROUND_UP(ssp->port.uartclk, ssp->baud_rate) - 1
>
> On RISC-V an integer division by zero does not trap; the ISA defines the
> result as all bits set. DIV_ROUND_UP() therefore yields ULONG_MAX and
> udelay() busy-waits essentially forever, hanging the CPU, rather than
> producing a clean oops. The POST_RATE_CHANGE path additionally programs
> a bogus divisor into the hardware.
>
> On the FU740 the UART clock is derived from the CPU clock through a
> synchronous divide-by-two, as the notifier's own comment describes, so
> any CPU rate change during probe can hit this.
>
> Initialise uartclk and baud_rate before registering the notifier, and
> bail out early if the notifier is ever called with no baud rate set.
>
> Fixes: 45c054d0815b ("tty: serial: add driver for the SiFive UART")
> Signed-off-by: Sebastian Alba <sebasjosue84@estudiantec.cr>
Sashiko has reviewed this patch and found no issues.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261017074453.62645-1-sebasjosue84@gmail.com?part=2
prev parent reply other threads:[~2026-10-17 7:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-17 7:44 [PATCH 0/2] serial: sifive: fix two init ordering bugs in probe Sebastian Alba Vives
2026-10-17 7:44 ` Sebastian Alba Vives
2026-10-17 7:44 ` [PATCH 1/2] serial: sifive: fix NULL pointer dereference in probe IRQ window Sebastian Alba Vives
2026-10-17 7:44 ` Sebastian Alba Vives
2026-10-17 7:51 ` sashiko-bot
2026-10-17 7:44 ` [PATCH 2/2] serial: sifive: avoid division by zero in the clock notifier Sebastian Alba Vives
2026-10-17 7:44 ` Sebastian Alba Vives
2026-10-17 7:47 ` 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=sashiko-outbox-175371@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=linux-serial@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
--cc=sebasjosue84@gmail.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.