From nobody Tue Jan 14 10:37:52 2025 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4YXQZ973Vjz5kVql; Tue, 14 Jan 2025 10:37:53 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4YXQZ86gYSz3C4J; Tue, 14 Jan 2025 10:37:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736851073; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=aQ/2O87bHSHQD/PbaquKUQHX3ThLkW7/d4zOkHdKSgY=; b=eiascFNMAMGyKpJxDgSHz6TEOUNB+hjsXRNrbq9BMFkbEDXCff+YmpwzS1zlJeepsMozqG VLV1j0hR2A52Um5mNK12J+aUYMv6drZdrx0deyeCSbmCEU4xVu6LyVxZATo1z7de8f4NxI C0qJxpROheFZavfmVt2KA7hCguGHTjb5HcPEC8qzK0LC6nVeNi0hCMtmArwZF4CntICE6L Q/frbPSpOlqKj986f8ZhwCxo09EisBYBjsKnpxh1QsThVEIvagOOyOYlLBdX0vGfcX6cOb mbVuTzw5rPkfW5DhZxYkHS1KMDZ1jnkachPC/Ckxm9AvqKKDPrniAdbq6DAQGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1736851073; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=aQ/2O87bHSHQD/PbaquKUQHX3ThLkW7/d4zOkHdKSgY=; b=sF8gF/70ymJqzUcItqF4C7im4jF9+RBkk8K/xto9iYIEWCwrXYqrXIs5DIf8nczNdQBn+5 YVnHgKmNDoBliXKwaGyU0xcM+vKw2O/c6ekM2CJ0ES1FLTHEqTclxLhnOHUFaTp17cY0CH GQGbZDk58Lxv2bKVVgH6/HsF/7Z9aPJsNrC9F1D1DALJj/eWU3+BKqZx/IIs6Izz3Sxyes ZVqlYb+TB5INpsLNyV5P9B/eGlELa5bIqe3ZShWp24W/iqp1p+Mp/60bnsvK3aFFZWFJ/f Lq+vPRZ2nv3iU9COWJnexeM8JlkFevvMdPMvrfUAGTMkf731YuuGPOKlmGswzg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1736851073; a=rsa-sha256; cv=none; b=MPBbfUYQ33iyUgLWzB9OyUjFYcDAUG7uKSDLXcBk69K9KWRkvnnhHYi8XWsvawkvAdEbKC MYSMI/Nzm2dcfsZlsJFrTAYul3gFl3yVY49tB/nT+7j1pjb9rpPXktWm9ihKqPmNAqsn7v 5GEpwZfKeVCjGGqk4PxEARvw0oCaMAPw5U6aXMBVuTfxPBTLgs4inuZgbw/cvD8V3S6Cin ZL5rETMNOw91LIF9ngaXbB4T7Ox/3ezda8Mj9Y3echGF0/iQivF+1/uLGkZHQHsNQaJ4QQ rPTm9D/zwa3OkVlxysGZ3hFbdN0/z5vYp8qYBU5PNrtzZyMKWSD9CbGsrUpZXQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4YXQZ85qTqz1CLS; Tue, 14 Jan 2025 10:37:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 50EAbqio048040; Tue, 14 Jan 2025 10:37:52 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 50EAbqc3048037; Tue, 14 Jan 2025 10:37:52 GMT (envelope-from git) Date: Tue, 14 Jan 2025 10:37:52 GMT Message-Id: <202501141037.50EAbqc3048037@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Kristof Provost Subject: git: 481374d5f7b0 - main - pf: remove pf_remove_fragment() List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 481374d5f7b056cd6fbf344238beb70fdae1eabe Auto-Submitted: auto-generated The branch main has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=481374d5f7b056cd6fbf344238beb70fdae1eabe commit 481374d5f7b056cd6fbf344238beb70fdae1eabe Author: Kristof Provost AuthorDate: 2025-01-07 14:46:05 +0000 Commit: Kristof Provost CommitDate: 2025-01-14 08:54:18 +0000 pf: remove pf_remove_fragment() Instead of having two functions pf_free_fragment() and pf_remove_fragment() doing more or less the same, merge them into one. Just remove fragment entries from the queue in pf_join_fragment() before they are freed. Then pf_remove_fragment() is not needed anymore. ok henning@ Obtained from: OpenBSD, bluhm , dc8c96a470 Sponsored by: Rubicon Communications, LLC ("Netgate") --- sys/netpfil/pf/pf_norm.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/sys/netpfil/pf/pf_norm.c b/sys/netpfil/pf/pf_norm.c index 4adace4c92cf..5b34e825203b 100644 --- a/sys/netpfil/pf/pf_norm.c +++ b/sys/netpfil/pf/pf_norm.c @@ -130,7 +130,6 @@ static RB_GENERATE(pf_frag_tree, pf_fragment, fr_entry, pf_frag_compare); static void pf_flush_fragments(void); static void pf_free_fragment(struct pf_fragment *); -static void pf_remove_fragment(struct pf_fragment *); static struct pf_frent *pf_create_fragment(u_short *); static int pf_frent_holes(struct pf_frent *frent); @@ -273,7 +272,10 @@ pf_flush_fragments(void) } } -/* Frees the fragments and all associated entries */ +/* + * Remove a fragment from the fragment queue, free its fragment entries, + * and free the fragment itself. + */ static void pf_free_fragment(struct pf_fragment *frag) { @@ -281,16 +283,18 @@ pf_free_fragment(struct pf_fragment *frag) PF_FRAG_ASSERT(); - /* Free all fragments */ - for (frent = TAILQ_FIRST(&frag->fr_queue); frent; - frent = TAILQ_FIRST(&frag->fr_queue)) { + RB_REMOVE(pf_frag_tree, &V_pf_frag_tree, frag); + TAILQ_REMOVE(&V_pf_fragqueue, frag, frag_next); + + /* Free all fragment entries */ + while ((frent = TAILQ_FIRST(&frag->fr_queue)) != NULL) { TAILQ_REMOVE(&frag->fr_queue, frent, fr_next); m_freem(frent->fe_m); uma_zfree(V_pf_frent_z, frent); } - pf_remove_fragment(frag); + uma_zfree(V_pf_frag_z, frag); } static struct pf_fragment * @@ -708,16 +712,16 @@ static struct mbuf * pf_join_fragment(struct pf_fragment *frag) { struct mbuf *m, *m2; - struct pf_frent *frent, *next; + struct pf_frent *frent; frent = TAILQ_FIRST(&frag->fr_queue); - next = TAILQ_NEXT(frent, fr_next); + TAILQ_REMOVE(&frag->fr_queue, frent, fr_next); m = frent->fe_m; m_adj(m, (frent->fe_hdrlen + frent->fe_len) - m->m_pkthdr.len); uma_zfree(V_pf_frent_z, frent); - for (frent = next; frent != NULL; frent = next) { - next = TAILQ_NEXT(frent, fr_next); + while ((frent = TAILQ_FIRST(&frag->fr_queue)) != NULL) { + TAILQ_REMOVE(&frag->fr_queue, frent, fr_next); m2 = frent->fe_m; /* Strip off ip header. */ @@ -730,7 +734,7 @@ pf_join_fragment(struct pf_fragment *frag) } /* Remove from fragment queue. */ - pf_remove_fragment(frag); + pf_free_fragment(frag); return (m); }