diff options
-rw-r--r-- | net/bridge/netfilter/ebtables.c | 21 |
1 files changed, 7 insertions, 14 deletions
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c index 18ebc664769b..c4540144f0f4 100644 --- a/net/bridge/netfilter/ebtables.c +++ b/net/bridge/netfilter/ebtables.c | |||
@@ -859,8 +859,7 @@ static int translate_table(struct ebt_replace *repl, | |||
859 | if (repl->valid_hooks & (1 << i)) | 859 | if (repl->valid_hooks & (1 << i)) |
860 | if (check_chainloops(newinfo->hook_entry[i], | 860 | if (check_chainloops(newinfo->hook_entry[i], |
861 | cl_s, udc_cnt, i, newinfo->entries)) { | 861 | cl_s, udc_cnt, i, newinfo->entries)) { |
862 | if (cl_s) | 862 | vfree(cl_s); |
863 | vfree(cl_s); | ||
864 | return -EINVAL; | 863 | return -EINVAL; |
865 | } | 864 | } |
866 | 865 | ||
@@ -883,8 +882,7 @@ static int translate_table(struct ebt_replace *repl, | |||
883 | EBT_ENTRY_ITERATE(newinfo->entries, newinfo->entries_size, | 882 | EBT_ENTRY_ITERATE(newinfo->entries, newinfo->entries_size, |
884 | ebt_cleanup_entry, &i); | 883 | ebt_cleanup_entry, &i); |
885 | } | 884 | } |
886 | if (cl_s) | 885 | vfree(cl_s); |
887 | vfree(cl_s); | ||
888 | return ret; | 886 | return ret; |
889 | } | 887 | } |
890 | 888 | ||
@@ -1030,8 +1028,7 @@ static int do_replace(void __user *user, unsigned int len) | |||
1030 | } | 1028 | } |
1031 | vfree(table); | 1029 | vfree(table); |
1032 | 1030 | ||
1033 | if (counterstmp) | 1031 | vfree(counterstmp); |
1034 | vfree(counterstmp); | ||
1035 | return ret; | 1032 | return ret; |
1036 | 1033 | ||
1037 | free_unlock: | 1034 | free_unlock: |
@@ -1040,8 +1037,7 @@ free_iterate: | |||
1040 | EBT_ENTRY_ITERATE(newinfo->entries, newinfo->entries_size, | 1037 | EBT_ENTRY_ITERATE(newinfo->entries, newinfo->entries_size, |
1041 | ebt_cleanup_entry, NULL); | 1038 | ebt_cleanup_entry, NULL); |
1042 | free_counterstmp: | 1039 | free_counterstmp: |
1043 | if (counterstmp) | 1040 | vfree(counterstmp); |
1044 | vfree(counterstmp); | ||
1045 | /* can be initialized in translate_table() */ | 1041 | /* can be initialized in translate_table() */ |
1046 | if (newinfo->chainstack) { | 1042 | if (newinfo->chainstack) { |
1047 | for (i = 0; i < num_possible_cpus(); i++) | 1043 | for (i = 0; i < num_possible_cpus(); i++) |
@@ -1049,11 +1045,9 @@ free_counterstmp: | |||
1049 | vfree(newinfo->chainstack); | 1045 | vfree(newinfo->chainstack); |
1050 | } | 1046 | } |
1051 | free_entries: | 1047 | free_entries: |
1052 | if (newinfo->entries) | 1048 | vfree(newinfo->entries); |
1053 | vfree(newinfo->entries); | ||
1054 | free_newinfo: | 1049 | free_newinfo: |
1055 | if (newinfo) | 1050 | vfree(newinfo); |
1056 | vfree(newinfo); | ||
1057 | return ret; | 1051 | return ret; |
1058 | } | 1052 | } |
1059 | 1053 | ||
@@ -1213,8 +1207,7 @@ void ebt_unregister_table(struct ebt_table *table) | |||
1213 | down(&ebt_mutex); | 1207 | down(&ebt_mutex); |
1214 | LIST_DELETE(&ebt_tables, table); | 1208 | LIST_DELETE(&ebt_tables, table); |
1215 | up(&ebt_mutex); | 1209 | up(&ebt_mutex); |
1216 | if (table->private->entries) | 1210 | vfree(table->private->entries); |
1217 | vfree(table->private->entries); | ||
1218 | if (table->private->chainstack) { | 1211 | if (table->private->chainstack) { |
1219 | for (i = 0; i < num_possible_cpus(); i++) | 1212 | for (i = 0; i < num_possible_cpus(); i++) |
1220 | vfree(table->private->chainstack[i]); | 1213 | vfree(table->private->chainstack[i]); |