Skip to content
CVE PROGRAM SOURCE RECORDUnscored

CVE-2026-64571

wifi: p54: validate RX frame length in p54_rx_eeprom_readback()

Description

In the Linux kernel, the following vulnerability has been resolved: wifi: p54: validate RX frame length in p54_rx_eeprom_readback() p54_rx_eeprom_readback() copies the requested EEPROM slice out of a device-supplied readback frame without checking that the skb actually holds that many bytes. Commit da1b9a55ff11 ("wifi: p54: prevent buffer-overflow in p54_rx_eeprom_readback()") closed the destination overflow by copying a fixed priv->eeprom_slice_size (and rejecting a mismatched advertised len), but the source side is still unbounded: nothing verifies the frame is long enough to supply that many bytes. A malicious USB device can send a short frame whose advertised len matches priv->eeprom_slice_size while the payload is truncated. The equality check passes and memcpy() reads past the end of the skb, leaking adjacent heap: BUG: KASAN: slab-out-of-bounds in p54_rx (drivers/net/wireless/intersil/p54/txrx.c:507) Read of size 1016 at addr ffff88800f077114 by task swapper/0/0 Call Trace: <IRQ> ... __asan_memcpy (mm/kasan/shadow.c:105) p54_rx (drivers/net/wireless/intersil/p54/txrx.c:507) p54u_rx_cb (drivers/net/wireless/intersil/p54/p54usb.c:163) __usb_hcd_giveback_urb (drivers/usb/core/hcd.c:1657) dummy_timer (drivers/usb/gadget/udc/dummy_hcd.c:2005) ... </IRQ> The buggy address belongs to the object at ffff88800f0770c0 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 84 bytes inside of allocated 704-byte region [ffff88800f0770c0, ffff88800f077380) Check that the slice fits in the skb before copying.

Affected products

Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.

Linux Linux

Default version status: unaffected

  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < 7a456ffcd20bd92ad0ef46c1aaa0e39e3be1f7e7affected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < 88f7044f92b8326fbfab26d0d8ed297c367ebb76affected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < f21b7e096fe5371bf697cd410537fb434a763f5eaffected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < 25c3b85af3fc4f8043159b14e65790fc3bbdaf48affected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < f46f8f9c43fd02f4dd5f716d4bda296a523c04f0affected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < d38f5d868a0a4770e3bcd0925e16c46acdbc9509affected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < 9096e1f7014174067239a63df18ae5f28301990daffected
  • 7cb770729ba895f73253dfcd46c3fcba45d896f9 to < ebd6d37fa94bee929e0b4c9ca19fdf9b1dcf6ceaaffected

Linux Linux

Default version status: affected

  • 2.6.28affected
  • 0 to < 2.6.28unaffected
  • 5.10.265 to ≤ 5.10.*unaffected
  • 5.15.216 to ≤ 5.15.*unaffected
  • 6.1.183 to ≤ 6.1.*unaffected
  • 6.6.148 to ≤ 6.6.*unaffected
  • 6.12.101 to ≤ 6.12.*unaffected
  • 6.18.42 to ≤ 6.18.*unaffected
  • 7.1.6 to ≤ 7.1.*unaffected
  • 7.2 to ≤ *unaffected

References