diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-09-27 20:44:10 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-09-27 20:44:10 +0000 |
commit | 7b186b0779561d1d63d291d10143e8cdfc6e3064 (patch) | |
tree | f6d71acdbcc68aaa17c5128df805a6d9633da63a /sys/src/9/ip/loopbackmedium.c | |
parent | 14aea8266dbbbdcfe9947451e10db4889e3cbcb7 (diff) |
arp: make sure arpresolve() only returns single packet
Due to locking changes, it is possible for arpresolve()
to return multiple packets in the multicast case,
resulting in etherbwrite() to fail assert(bp->list == nil).
Ensure that arpresolve() always returns the first packet
from the hold chain and frees the rest if any.
For arpenter(), we want to transmit the whole chain of
packets, so we detach them from the arp entry before
calling arpresolve() and ignoring its result.
Diffstat (limited to 'sys/src/9/ip/loopbackmedium.c')
0 files changed, 0 insertions, 0 deletions