Skip to content

Commit 039b1f4

Browse files
ffmanceraummakynes
authored andcommitted
netfilter: nft_socket: fix erroneous socket assignment
The socket assignment is wrong, see skb_orphan(): When skb->destructor callback is not set, but skb->sk is set, this hits BUG(). Link: https://bugzilla.redhat.com/show_bug.cgi?id=1651813 Fixes: 554ced0 ("netfilter: nf_tables: add support for native socket matching") Signed-off-by: Fernando Fernandez Mancera <[email protected]> Signed-off-by: Pablo Neira Ayuso <[email protected]>
1 parent 48bd0d6 commit 039b1f4

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

net/netfilter/nft_socket.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@ static void nft_socket_eval(const struct nft_expr *expr,
4747
return;
4848
}
4949

50-
/* So that subsequent socket matching not to require other lookups. */
51-
skb->sk = sk;
52-
5350
switch(priv->key) {
5451
case NFT_SOCKET_TRANSPARENT:
5552
nft_reg_store8(dest, inet_sk_transparent(sk));
@@ -66,6 +63,9 @@ static void nft_socket_eval(const struct nft_expr *expr,
6663
WARN_ON(1);
6764
regs->verdict.code = NFT_BREAK;
6865
}
66+
67+
if (sk != skb->sk)
68+
sock_gen_put(sk);
6969
}
7070

7171
static const struct nla_policy nft_socket_policy[NFTA_SOCKET_MAX + 1] = {

0 commit comments

Comments
 (0)