[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250710125227.GA25686@workstation.local>
Date: Thu, 10 Jul 2025 21:52:27 +0900
From: Takashi Sakamoto <o-takashi@...amocchi.jp>
To: Purva Yeshi <purvayeshi550@...il.com>
Cc: linux1394-devel@...ts.sourceforge.net, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] firewire: ohci: Initialize payload_bus to avoid
uninitialized use warning
Hi,
On Thu, Jul 10, 2025 at 01:09:06PM +0530, Purva Yeshi wrote:
> Fix Smatch-detected error:
> drivers/firewire/ohci.c:1514 at_context_queue_packet()
> error: uninitialized symbol 'payload_bus'.
>
> Smatch reports a potential uninitialized use of 'payload_bus' in
> at_context_queue_packet(). If packet->payload_length is zero, the
> variable may not be set before reaching the dma_unmap_single() call,
> which could lead to undefined behavior.
>
> Initialize 'payload_bus' to 0 to ensure it has a defined value in all
> code paths, preventing any uninitialized access.
>
> Signed-off-by: Purva Yeshi <purvayeshi550@...il.com>
In my opinion, we should pay enough attention to the value of
'packet->payload_mapped' variable when considering the issue.
```
$ cat -n drivers/firewire/ohci.c
...
1385 static int at_context_queue_packet(struct context *ctx,
1386 struct fw_packet *packet)
1387 {
1388 struct fw_ohci *ohci = ctx->ohci;
1389 dma_addr_t d_bus, payload_bus;
...
1474 if (packet->payload_length > 0) {
1475 if (packet->payload_length > sizeof(driver_data->inline_data)) {
1476 payload_bus = dma_map_single(ohci->card.device,
...
1485 packet->payload_mapped = true;
1486 } else {
...
1489 payload_bus = d_bus + 3 * sizeof(*d);
1490 }
...
1496 } else {
...
1499 }
...
1506 if (ohci->generation != packet->generation) {
1507 if (packet->payload_mapped)
1508 dma_unmap_single(ohci->card.device, payload_bus,
1509 packet->payload_length, DMA_TO_DEVICE);
...
1512 }
Unless the variable has true, the dma_unmap_single() is never called,
thus the issue does not occur.
Thanks
Takashi Sakamoto
Powered by blists - more mailing lists