git: 1de9aa4d4f79 - main - genet: fix output packet corruption in uncommon case

From: Mike Karels <karels_at_FreeBSD.org>
Date: Mon, 09 May 2022 13:46:20 UTC
The branch main has been updated by karels:

URL: https://cgit.FreeBSD.org/src/commit/?id=1de9aa4d4f7938f36e6485dad817908a6e45bb32

commit 1de9aa4d4f7938f36e6485dad817908a6e45bb32
Author:     Mike Karels <karels@FreeBSD.org>
AuthorDate: 2022-05-09 12:19:52 +0000
Commit:     Mike Karels <karels@FreeBSD.org>
CommitDate: 2022-05-09 13:46:06 +0000

    genet: fix output packet corruption in uncommon case
    
    The code for the "shift" block in the COPY macro set the pointer for
    the next copy block to the wrong value.  In this case, the link-layer
    header would be overwritten by the network-layer header.  This case is
    difficult or impossible to exercise in the current driver without
    changing the value of the hw.genet.tx_hdr_min sysctl.  Correct the
    pointer.  While here, remove a line in the macro that was marked
    "unneeded", which was actually wrong.
    
    PR:             263824
    Submitted by:   jiahali@blackberry.com
    MFC after:      2 weeks
---
 sys/arm64/broadcom/genet/if_genet.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/sys/arm64/broadcom/genet/if_genet.c b/sys/arm64/broadcom/genet/if_genet.c
index 47ff3a484387..3e22f387bf61 100644
--- a/sys/arm64/broadcom/genet/if_genet.c
+++ b/sys/arm64/broadcom/genet/if_genet.c
@@ -1254,11 +1254,10 @@ gen_parse_tx(struct mbuf *m, int csum_flags)
 			m0->m_data = m0->m_pktdat;			\
 			bcopy(p0, mtodo(m0, sizeof(struct statusblock)),\
 			    m0->m_len - sizeof(struct statusblock));	\
-			copy_p = mtodo(m0, sizeof(struct statusblock));	\
+			copy_p = mtodo(m0, m0->m_len);			\
 		}							\
 		bcopy(p, copy_p, hsize);				\
 		m0->m_len += hsize;					\
-		m0->m_pkthdr.len += hsize;	/* unneeded */		\
 		m->m_len -= hsize;					\
 		m->m_data += hsize;					\
 	}								\