Merge branch 'for-linus-v3.20' of git://git.infradead.org/linux-ubifs
[firefly-linux-kernel-4.4.55.git] / net / netfilter / nft_lookup.c
index 7fd2bea8aa239f347dc461c7bc45869dac405573..6404a726d17b78fc6db6f411216195e68db63950 100644 (file)
@@ -56,8 +56,14 @@ static int nft_lookup_init(const struct nft_ctx *ctx,
                return -EINVAL;
 
        set = nf_tables_set_lookup(ctx->table, tb[NFTA_LOOKUP_SET]);
-       if (IS_ERR(set))
-               return PTR_ERR(set);
+       if (IS_ERR(set)) {
+               if (tb[NFTA_LOOKUP_SET_ID]) {
+                       set = nf_tables_set_lookup_byid(ctx->net,
+                                                       tb[NFTA_LOOKUP_SET_ID]);
+               }
+               if (IS_ERR(set))
+                       return PTR_ERR(set);
+       }
 
        priv->sreg = ntohl(nla_get_be32(tb[NFTA_LOOKUP_SREG]));
        err = nft_validate_input_register(priv->sreg);