git: 000aad3d093a - stable/12 - loader: allocate properly aligned buffer for network packet
Date: Thu, 07 Oct 2021 03:37:42 UTC
The branch stable/12 has been updated by kevans: URL: https://cgit.FreeBSD.org/src/commit/?id=000aad3d093a376bb1104a284b4102149db43155 commit 000aad3d093a376bb1104a284b4102149db43155 Author: Toomas Soome <tsoome@FreeBSD.org> AuthorDate: 2020-01-13 18:22:54 +0000 Commit: Kyle Evans <kevans@FreeBSD.org> CommitDate: 2021-10-07 03:36:34 +0000 loader: allocate properly aligned buffer for network packet Use memalign(4, size) to ensure we have properly aligned buffer. (cherry picked from commit 659bf32dfc595b6cd6aeda7f05cb57872c64d2d1) --- stand/efi/libefi/efinet.c | 2 +- stand/i386/libi386/pxe.c | 2 +- stand/libofw/ofw_net.c | 2 +- stand/uboot/lib/net.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/stand/efi/libefi/efinet.c b/stand/efi/libefi/efinet.c index 418790524e4a..989b2efdaac2 100644 --- a/stand/efi/libefi/efinet.c +++ b/stand/efi/libefi/efinet.c @@ -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; diff --git a/stand/i386/libi386/pxe.c b/stand/i386/libi386/pxe.c index e80a1961e191..e94c63878284 100644 --- a/stand/i386/libi386/pxe.c +++ b/stand/i386/libi386/pxe.c @@ -501,7 +501,7 @@ pxe_netif_receive_isr(t_PXENV_UNDI_ISR *isr, void **pkt, ssize_t *retsize) * multiple GET_NEXT calls. */ size = isr->FrameLength; - buf = malloc(size + ETHER_ALIGN); + buf = memalign(4, size + ETHER_ALIGN); if (buf == NULL) return (ENOMEM); diff --git a/stand/libofw/ofw_net.c b/stand/libofw/ofw_net.c index 14494ecc2b2e..a037c3defaf5 100644 --- a/stand/libofw/ofw_net.c +++ b/stand/libofw/ofw_net.c @@ -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; diff --git a/stand/uboot/lib/net.c b/stand/uboot/lib/net.c index 81b8c5bc9f5b..3d0ba5fdc6d3 100644 --- a/stand/uboot/lib/net.c +++ b/stand/uboot/lib/net.c @@ -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);