If l3 protocol value is not specified for ct timeout object then use the
value from nft_ctx protocol family.

Signed-off-by: Harsha Sharma <harshasharmai...@gmail.com>
---
 net/netfilter/nft_ct.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c
index 4855d4ce1c8f..1c7ac6bde0b5 100644
--- a/net/netfilter/nft_ct.c
+++ b/net/netfilter/nft_ct.c
@@ -832,12 +832,12 @@ static int nft_ct_timeout_obj_init(const struct nft_ctx 
*ctx,
        __u8 l4num;
        int ret;
 
-       if (!tb[NFTA_CT_TIMEOUT_L3PROTO] ||
-           !tb[NFTA_CT_TIMEOUT_L4PROTO] ||
-           !tb[NFTA_CT_TIMEOUT_DATA])
+       if (!tb[NFTA_CT_TIMEOUT_L4PROTO] || !tb[NFTA_CT_TIMEOUT_DATA])
                return -EINVAL;
 
-       l3num = ntohs(nla_get_be16(tb[NFTA_CT_TIMEOUT_L3PROTO]));
+       if (tb[NFTA_CT_TIMEOUT_L3PROTO])
+               l3num = ntohs(nla_get_be16(tb[NFTA_CT_TIMEOUT_L3PROTO]));
+
        l4num = nla_get_u8(tb[NFTA_CT_TIMEOUT_L4PROTO]);
        priv->l4proto = l4num;
 
-- 
2.14.1

Reply via email to