Patch "netfilter: nf_tables: fix underflow in chain reference counter" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    netfilter: nf_tables: fix underflow in chain reference counter

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     netfilter-nf_tables-fix-underflow-in-chain-reference.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 0bc1294878d0808046105ebab188a10ca29ed44c
Author: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
Date:   Mon Jun 26 00:42:19 2023 +0200

    netfilter: nf_tables: fix underflow in chain reference counter
    
    [ Upstream commit b389139f12f287b8ed2e2628b72df89a081f0b59 ]
    
    Set element addition error path decrements reference counter on chains
    twice: once on element release and again via nft_data_release().
    
    Then, d6b478666ffa ("netfilter: nf_tables: fix underflow in object
    reference counter") incorrectly fixed this by removing the stateful
    object reference count decrement.
    
    Restore the stateful object decrement as in b91d90368837 ("netfilter:
    nf_tables: fix leaking object reference count") and let
    nft_data_release() decrement the chain reference counter, so this is
    done only once.
    
    Fixes: d6b478666ffa ("netfilter: nf_tables: fix underflow in object reference counter")
    Fixes: 628bd3e49cba ("netfilter: nf_tables: drop map element references from preparation phase")
    Signed-off-by: Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index 1d64c163076a1..c742918f22a4a 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -6771,7 +6771,9 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
 err_element_clash:
 	kfree(trans);
 err_elem_free:
-	nft_set_elem_destroy(set, elem.priv, true);
+	nf_tables_set_elem_destroy(ctx, set, elem.priv);
+	if (obj)
+		obj->use--;
 err_parse_data:
 	if (nla[NFTA_SET_ELEM_DATA] != NULL)
 		nft_data_release(&elem.data.val, desc.type);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux