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: 5+ 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 ` [PATCH 1/2] serial: sifive: fix NULL pointer dereference in probe IRQ window 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: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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox