* [PATCH] tty: serial: 8250: Fix uninitialized variable warnings in pci_oxsemi_tornado_get_divisor
@ 2025-04-11 11:50 Purva Yeshi
2025-04-11 12:29 ` Greg KH
0 siblings, 1 reply; 2+ messages in thread
From: Purva Yeshi @ 2025-04-11 11:50 UTC (permalink / raw)
To: gregkh, jirislaby
Cc: andriy.shevchenko, arnd, cang1, bhelgaas, linux-kernel,
linux-serial, Purva Yeshi
Fix Smatch-detected issue:
drivers/tty/serial/8250/8250_pci.c:1233 pci_oxsemi_tornado_get_divisor()
error: uninitialized symbol 'tcr'.
drivers/tty/serial/8250/8250_pci.c:1234 pci_oxsemi_tornado_get_divisor()
error: uninitialized symbol 'quot'.
drivers/tty/serial/8250/8250_pci.c:1238 pci_oxsemi_tornado_get_divisor()
error: uninitialized symbol 'quot'.
drivers/tty/serial/8250/8250_pci.c:1242 pci_oxsemi_tornado_get_divisor()
error: uninitialized symbol 'cpr'.
drivers/tty/serial/8250/8250_pci.c:1252 pci_oxsemi_tornado_get_divisor()
error: uninitialized symbol 'cpr'.
Fix uninitialized variable usage in pci_oxsemi_tornado_get_divisor() that
was triggering sparse warnings and potential undefined behavior. The
variables tcr, cpr, and quot were used before being explicitly assigned
values, leading to smatch warning in multiple lines of the function.
Initialize quot to 1, tcr to 16, and cpr to OXSEMI_TORNADO_CPR_DEF at the
point of declaration. This ensures safe fallback values are used when these
variables are not conditionally set later in the function, avoiding
uninitialized access.
Signed-off-by: Purva Yeshi <purvayeshi550@gmail.com>
---
drivers/tty/serial/8250/8250_pci.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 73c200127b08..ba4dedccc29e 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1187,9 +1187,9 @@ static unsigned int pci_oxsemi_tornado_get_divisor(struct uart_port *port,
unsigned int sdiv = DIV_ROUND_CLOSEST(sclk, baud);
unsigned int best_squot;
unsigned int squot;
- unsigned int quot;
- u16 cpr;
- u8 tcr;
+ unsigned int quot = 1;
+ u16 cpr = OXSEMI_TORNADO_CPR_DEF; /* Default Control Prescaler Register */
+ u8 tcr = 16; /* Typical default value for the Timer Control Register */
int i;
/* Old custom speed handling. */
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] tty: serial: 8250: Fix uninitialized variable warnings in pci_oxsemi_tornado_get_divisor
2025-04-11 11:50 [PATCH] tty: serial: 8250: Fix uninitialized variable warnings in pci_oxsemi_tornado_get_divisor Purva Yeshi
@ 2025-04-11 12:29 ` Greg KH
0 siblings, 0 replies; 2+ messages in thread
From: Greg KH @ 2025-04-11 12:29 UTC (permalink / raw)
To: Purva Yeshi
Cc: jirislaby, andriy.shevchenko, arnd, cang1, bhelgaas, linux-kernel,
linux-serial
On Fri, Apr 11, 2025 at 05:20:48PM +0530, Purva Yeshi wrote:
> Fix Smatch-detected issue:
>
> drivers/tty/serial/8250/8250_pci.c:1233 pci_oxsemi_tornado_get_divisor()
> error: uninitialized symbol 'tcr'.
> drivers/tty/serial/8250/8250_pci.c:1234 pci_oxsemi_tornado_get_divisor()
> error: uninitialized symbol 'quot'.
> drivers/tty/serial/8250/8250_pci.c:1238 pci_oxsemi_tornado_get_divisor()
> error: uninitialized symbol 'quot'.
> drivers/tty/serial/8250/8250_pci.c:1242 pci_oxsemi_tornado_get_divisor()
> error: uninitialized symbol 'cpr'.
> drivers/tty/serial/8250/8250_pci.c:1252 pci_oxsemi_tornado_get_divisor()
> error: uninitialized symbol 'cpr'.
>
> Fix uninitialized variable usage in pci_oxsemi_tornado_get_divisor() that
> was triggering sparse warnings and potential undefined behavior. The
> variables tcr, cpr, and quot were used before being explicitly assigned
> values, leading to smatch warning in multiple lines of the function.
Are you really sure? If you follow through the logic, it looks fine to
me. What am I missing? And why doesn't gcc or clang catch this?
> Initialize quot to 1, tcr to 16, and cpr to OXSEMI_TORNADO_CPR_DEF at the
> point of declaration. This ensures safe fallback values are used when these
> variables are not conditionally set later in the function, avoiding
> uninitialized access.
Where did these magic values come from?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-04-11 12:29 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-11 11:50 [PATCH] tty: serial: 8250: Fix uninitialized variable warnings in pci_oxsemi_tornado_get_divisor Purva Yeshi
2025-04-11 12:29 ` Greg KH
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox