Thread (7 messages) flat view 7 messages, 3 authors, 12d ago

Re: [PATCH v2] net: starfire: fix ioaddr sign-extension causing ioremap() failure

From: Simon Horman <horms@kernel.org>
Date: 2026-09-08 12:41:24
Also in: lkml

On Mon, Sep 07, 2026 at 04:57:48PM -0600, Ivy Lopez wrote:
ioaddr is declared as a signed long, but is assigned the result of
pci_resource_start(), which returns an unsigned resource_size_t.
On configurations where the BAR address has its high bit set, the
value sign-extends when passed to ioremap(), producing a bogus
64-bit address and causing device probe to fail:

  ioremap: invalid physical address fffffffffe480000
  starfire 0000:08:04.0: cannot Remap 0x80000 @ 0xfe480000, aborting

Change ioaddr to resource_size_t, matching both the return type of
pci_resource_start() and the type ioremap() expects for its physical
address argument, rather than unsigned long, which is not guaranteed
to be wide enough on all configurations. Switch the associated error
print to %pa accordingly.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=198035
Signed-off-by: Ivy Lopez <redacted>
---
v2: use resource_size_t instead of unsigned long, and switch the
    error print to %pa, per Simon Horman's review.
In general this change looks good to me.
But unfortunately it does not apply against net-next.

Please rebase.

-- 
pw-bot: changes-requested

...
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help