The aoe driver (or similar) generates a non-IPv6 packet
(e.g., ETH_P_AOE) and queues it for transmission via dev_queue_xmit()
on a 6LoWPAN interface (configured by the user or test case).
Since the packet is not IPv6, the 6LoWPAN header_ops->create function
(lowpan_header_create or header_create) returns early without initializing
the lowpan_addr_info structure in the skb headroom.
In the transmit function (lowpan_xmit), the driver calls lowpan_header
(or setup_header) which unconditionally copies and uses the lowpan_addr_info
from the headroom, which contains uninitialized data.
Fix this by dropping non IPv6 packets.
A similar fix is needed in net/bluetooth/6lowpan.c bt_xmit().
Fixes:
|
||
|---|---|---|
| .. | ||
| 6lowpan | ||
| core.c | ||
| core.h | ||
| header_ops.c | ||
| ieee802154.h | ||
| Kconfig | ||
| Makefile | ||
| netlink.c | ||
| nl-mac.c | ||
| nl-phy.c | ||
| nl802154.c | ||
| nl802154.h | ||
| nl_policy.c | ||
| pan.c | ||
| rdev-ops.h | ||
| socket.c | ||
| sysfs.c | ||
| sysfs.h | ||
| trace.c | ||
| trace.h | ||