loader: allocate properly aligned buffer for network packet
Use memalign(4, size) to ensure we have properly aligned buffer. MFC after: 2 weeks
This commit is contained in:
parent
f4f17121e6
commit
b5e93b5832
@ -178,7 +178,7 @@ efinet_get(struct iodesc *desc, void **pkt, time_t timeout)
|
||||
return (ret);
|
||||
|
||||
bufsz = net->Mode->MaxPacketSize + ETHER_HDR_LEN + ETHER_CRC_LEN;
|
||||
buf = malloc(bufsz + ETHER_ALIGN);
|
||||
buf = memalign(4, bufsz + ETHER_ALIGN);
|
||||
if (buf == NULL)
|
||||
return (ret);
|
||||
ptr = buf + ETHER_ALIGN;
|
||||
|
@ -484,7 +484,7 @@ pxe_netif_receive(void **pkt)
|
||||
}
|
||||
|
||||
size = isr->FrameLength;
|
||||
buf = malloc(size + ETHER_ALIGN);
|
||||
buf = memalign(4, size + ETHER_ALIGN);
|
||||
if (buf == NULL) {
|
||||
bio_free(isr, sizeof(*isr));
|
||||
return (-1);
|
||||
|
@ -142,7 +142,7 @@ ofwn_get(struct iodesc *desc, void **pkt, time_t timeout)
|
||||
* a small shortcut here.
|
||||
*/
|
||||
len = ETHER_MAX_LEN;
|
||||
buf = malloc(len + ETHER_ALIGN);
|
||||
buf = memalign(4, len + ETHER_ALIGN);
|
||||
if (buf == NULL)
|
||||
return (-1);
|
||||
ptr = buf + ETHER_ALIGN;
|
||||
|
@ -302,7 +302,7 @@ net_get(struct iodesc *desc, void **pkt, time_t timeout)
|
||||
#endif
|
||||
|
||||
if (rlen > 0) {
|
||||
buf = malloc(rlen + ETHER_ALIGN);
|
||||
buf = memalign(4, rlen + ETHER_ALIGN);
|
||||
if (buf == NULL)
|
||||
return (-1);
|
||||
memcpy(buf + ETHER_ALIGN, sc->sc_rxbuf, rlen);
|
||||
|
Loading…
Reference in New Issue
Block a user