]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: release caches from nft_ctx_free() path
authorEric Leblond <eric@regit.org>
Thu, 24 Aug 2017 15:52:26 +0000 (17:52 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 24 Aug 2017 17:27:51 +0000 (19:27 +0200)
Release existing caches from nft_ctx_free(). Still, the iface cache
should be good to place it in the nft_ctx structure.

Joint work with Pablo Neira.

Signed-off-by: Eric Leblond <eric@regit.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/main.c

index 8a3c097d2d93d1183ab7443511cb67a4d897b5ce..1df53adb6553360397ee9d8e2c3a542e98fd7ceb 100644 (file)
@@ -297,6 +297,8 @@ static struct nft_ctx *nft_ctx_new(void)
 
 static void nft_ctx_free(const struct nft_ctx *ctx)
 {
+       iface_cache_release();
+       cache_release(&nft->cache);
        xfree(ctx);
 }
 
@@ -318,7 +320,6 @@ static int nft_run_cmd_from_buffer(struct nft_ctx *nft,
 
        erec_print_list(stderr, &msgs, nft->debug_mask);
        scanner_destroy(scanner);
-       cache_release(&nft->cache);
 
        return rc;
 }
@@ -347,7 +348,6 @@ static int nft_run_cmd_from_filename(struct nft_ctx *nft,
 err:
        erec_print_list(stderr, &msgs, nft->debug_mask);
        scanner_destroy(scanner);
-       cache_release(&nft->cache);
 
        return rc;
 }
@@ -476,7 +476,6 @@ int main(int argc, char * const *argv)
        }
 
        xfree(buf);
-       iface_cache_release();
        netlink_close_sock(nf_sock);
        nft_ctx_free(nft);
        nft_exit();