]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
netfilter: nf_tables: typo NULL check in _clone() function
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 10 Jan 2022 19:48:17 +0000 (20:48 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Jan 2024 22:52:55 +0000 (14:52 -0800)
commit 51edb2ff1c6fc27d3fa73f0773a31597ecd8e230 upstream.

This should check for NULL in case memory allocation fails.

Reported-by: Julian Wiedmann <jwiedmann.dev@gmail.com>
Fixes: 3b9e2ea6c11b ("netfilter: nft_limit: move stateful fields out of expression data")
Fixes: 37f319f37d90 ("netfilter: nft_connlimit: move stateful fields out of expression data")
Fixes: 33a24de37e81 ("netfilter: nft_last: move stateful fields out of expression data")
Fixes: ed0a0c60f0e5 ("netfilter: nft_quota: move stateful fields out of expression data")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Link: https://lore.kernel.org/r/20220110194817.53481-1-pablo@netfilter.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/netfilter/nft_connlimit.c
net/netfilter/nft_last.c
net/netfilter/nft_limit.c
net/netfilter/nft_quota.c

index 2a2042adf3b1b1b35e119fb5f5ebffa1d53d1619..8f0cba15eb21eb4726ae03baa0ff056a1894c389 100644 (file)
@@ -206,7 +206,7 @@ static int nft_connlimit_clone(struct nft_expr *dst, const struct nft_expr *src)
        struct nft_connlimit *priv_src = nft_expr_priv(src);
 
        priv_dst->list = kmalloc(sizeof(*priv_dst->list), GFP_ATOMIC);
-       if (priv_dst->list)
+       if (!priv_dst->list)
                return -ENOMEM;
 
        nf_conncount_list_init(priv_dst->list);
index df48a11e224e274950fa44012c7ee6313d460e53..97d0d09d48d314717b722b7e3981f7fbd4813d4e 100644 (file)
@@ -106,7 +106,7 @@ static int nft_last_clone(struct nft_expr *dst, const struct nft_expr *src)
        struct nft_last_priv *priv_dst = nft_expr_priv(dst);
 
        priv_dst->last = kzalloc(sizeof(*priv_dst->last), GFP_ATOMIC);
-       if (priv_dst->last)
+       if (!priv_dst->last)
                return -ENOMEM;
 
        return 0;
index a355fbabe99f234e01da7aadc1932b3cf4f3e2f2..99846a536f2f06642759ca02d69015f9f2908f43 100644 (file)
@@ -150,7 +150,7 @@ static int nft_limit_clone(struct nft_limit_priv *priv_dst,
        priv_dst->invert = priv_src->invert;
 
        priv_dst->limit = kmalloc(sizeof(*priv_dst->limit), GFP_ATOMIC);
-       if (priv_dst->limit)
+       if (!priv_dst->limit)
                return -ENOMEM;
 
        spin_lock_init(&priv_dst->limit->lock);
index 18ff38682de4b8dc6101f1911d82d2e622d44a52..0d2f55900f7b874afa04202fd147c0957d403a85 100644 (file)
@@ -237,7 +237,7 @@ static int nft_quota_clone(struct nft_expr *dst, const struct nft_expr *src)
        struct nft_quota *priv_dst = nft_expr_priv(dst);
 
        priv_dst->consumed = kmalloc(sizeof(*priv_dst->consumed), GFP_ATOMIC);
-       if (priv_dst->consumed)
+       if (!priv_dst->consumed)
                return -ENOMEM;
 
        atomic64_set(priv_dst->consumed, 0);