diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-07-29 10:24:46 -0400 |
---|---|---|
committer | Patrick McHardy <kaber@trash.net> | 2011-07-29 10:24:46 -0400 |
commit | 00fe1ae91e0d69e52e8212d23cd3ecc74a7259a0 (patch) | |
tree | efe77e777825ac80a19e05eedd75758a138ae424 /net | |
parent | 55f9c40ff632d03c527d6a6ceddcda0a224587a6 (diff) |
netfilter: xt_rateest: fix xt_rateest_mt_checkentry()
commit 4a5a5c73b7cfee (slightly better error reporting) added some
useless code in xt_rateest_mt_checkentry().
Fix this so that different error codes can really be returned.
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/netfilter/xt_rateest.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/net/netfilter/xt_rateest.c b/net/netfilter/xt_rateest.c index 76a083184d8e..ed0db15ab00e 100644 --- a/net/netfilter/xt_rateest.c +++ b/net/netfilter/xt_rateest.c | |||
@@ -78,7 +78,7 @@ static int xt_rateest_mt_checkentry(const struct xt_mtchk_param *par) | |||
78 | { | 78 | { |
79 | struct xt_rateest_match_info *info = par->matchinfo; | 79 | struct xt_rateest_match_info *info = par->matchinfo; |
80 | struct xt_rateest *est1, *est2; | 80 | struct xt_rateest *est1, *est2; |
81 | int ret = false; | 81 | int ret = -EINVAL; |
82 | 82 | ||
83 | if (hweight32(info->flags & (XT_RATEEST_MATCH_ABS | | 83 | if (hweight32(info->flags & (XT_RATEEST_MATCH_ABS | |
84 | XT_RATEEST_MATCH_REL)) != 1) | 84 | XT_RATEEST_MATCH_REL)) != 1) |
@@ -101,13 +101,12 @@ static int xt_rateest_mt_checkentry(const struct xt_mtchk_param *par) | |||
101 | if (!est1) | 101 | if (!est1) |
102 | goto err1; | 102 | goto err1; |
103 | 103 | ||
104 | est2 = NULL; | ||
104 | if (info->flags & XT_RATEEST_MATCH_REL) { | 105 | if (info->flags & XT_RATEEST_MATCH_REL) { |
105 | est2 = xt_rateest_lookup(info->name2); | 106 | est2 = xt_rateest_lookup(info->name2); |
106 | if (!est2) | 107 | if (!est2) |
107 | goto err2; | 108 | goto err2; |
108 | } else | 109 | } |
109 | est2 = NULL; | ||
110 | |||
111 | 110 | ||
112 | info->est1 = est1; | 111 | info->est1 = est1; |
113 | info->est2 = est2; | 112 | info->est2 = est2; |
@@ -116,7 +115,7 @@ static int xt_rateest_mt_checkentry(const struct xt_mtchk_param *par) | |||
116 | err2: | 115 | err2: |
117 | xt_rateest_put(est1); | 116 | xt_rateest_put(est1); |
118 | err1: | 117 | err1: |
119 | return -EINVAL; | 118 | return ret; |
120 | } | 119 | } |
121 | 120 | ||
122 | static void xt_rateest_mt_destroy(const struct xt_mtdtor_param *par) | 121 | static void xt_rateest_mt_destroy(const struct xt_mtdtor_param *par) |