CVE-2026-64540: usbnet: gl620a: fix out-of-bounds read in genelink_rx_fixup()

Greg Kroah-Hartman <[email protected]> Mon, 27 Jul 2026 22:10:38 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072735-CVE-2026-64540-d315@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

usbnet: gl620a: fix out-of-bounds read in genelink_rx_fixup()

genelink_rx_fixup() splits an aggregated RX frame into its individual
packets, using a per-packet length taken from device-supplied data. That
length is only bounded by GL_MAX_PACKET_LEN (1514); it is never compared
against how many bytes were actually received.

A malicious GeneLink (GL620A) device can therefore send a short URB whose
header claims packet_count > 1 and a first packet of up to 1514 bytes.

	skb_put_data(gl_skb, packet->packet_data, size);

then copies past the end of the receive buffer and hands the adjacent slab
contents up the network stack, an out-of-bounds read that leaks kernel heap.
No privilege is required: the path runs in the usbnet RX softirq as soon as
the interface is up.

  BUG: KASAN: slab-out-of-bounds in genelink_rx_fixup (drivers/net/usb/gl620a.c:112)
  Read of size 1514 at addr ffff888011309708 by task ksoftirqd/0/14
  Call Trace:
    ...
    __asan_memcpy (mm/kasan/shadow.c:105)
    genelink_rx_fixup (include/linux/skbuff.h:2814 drivers/net/usb/gl620a.c:112)
    usbnet_bh (drivers/net/usb/usbnet.c:572 drivers/net/usb/usbnet.c:1589)
    process_one_work (kernel/workqueue.c:3322)
    bh_worker (kernel/workqueue.c:3405)
    tasklet_action (kernel/softirq.c:965)
    handle_softirqs (kernel/softirq.c:622)
    run_ksoftirqd (kernel/softirq.c:1076)
    ...

skb_pull() already verifies that the requested length fits the buffer and
returns NULL otherwise. Move it ahead of the copy and check its result, so
a packet that overruns the received data is rejected before it is read.
Well-formed frames, whose packets are fully present, are unaffected.

The Linux kernel CVE team has assigned CVE-2026-64540 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 5.10.261 with commit 255d03551f94c7bdd86c7d9181a70b21917d829f
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 5.15.212 with commit 4359376e6238d89977a35086e47ca3b07f43e850
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 6.1.178 with commit 8624e179fa3ce23c2fbd1a198ce30764b73f054a
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 6.6.145 with commit 573418f7ea8f859a841417eb4b915594094fd967
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 6.12.97 with commit 0575599e451aff3c5329922562374a2cab25fc51
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 6.18.40 with commit 0a7d9c7c5f1f208c523abbb4db6aea7bc1fad3db
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 7.1.5 with commit 3ef79fa3860e644c8de7834fa7300e1c58f38862
	Issue introduced in 2.6.14 with commit 47ee3051c856cc2aa95d35d577a8cb37279d540f and fixed in 7.2-rc2 with commit 8ff7f2a6da4fccaa5cc9be7251a24e71e29fbd1a

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64540
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	drivers/net/usb/gl620a.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/255d03551f94c7bdd86c7d9181a70b21917d829f
	https://git.kernel.org/stable/c/4359376e6238d89977a35086e47ca3b07f43e850
	https://git.kernel.org/stable/c/8624e179fa3ce23c2fbd1a198ce30764b73f054a
	https://git.kernel.org/stable/c/573418f7ea8f859a841417eb4b915594094fd967
	https://git.kernel.org/stable/c/0575599e451aff3c5329922562374a2cab25fc51
	https://git.kernel.org/stable/c/0a7d9c7c5f1f208c523abbb4db6aea7bc1fad3db
	https://git.kernel.org/stable/c/3ef79fa3860e644c8de7834fa7300e1c58f38862
	https://git.kernel.org/stable/c/8ff7f2a6da4fccaa5cc9be7251a24e71e29fbd1a