aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/core/filter.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/net/core/filter.c b/net/core/filter.c
index 9eb9d0017a01..a52665f75224 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -287,7 +287,9 @@ load_b:
287 * no references or jumps that are out of range, no illegal 287 * no references or jumps that are out of range, no illegal
288 * instructions, and must end with a RET instruction. 288 * instructions, and must end with a RET instruction.
289 * 289 *
290 * Returns 0 if the rule set is legal or a negative errno code if not. 290 * All jumps are forward as they are not signed.
291 *
292 * Returns 0 if the rule set is legal or -EINVAL if not.
291 */ 293 */
292int sk_chk_filter(struct sock_filter *filter, int flen) 294int sk_chk_filter(struct sock_filter *filter, int flen)
293{ 295{
@@ -299,7 +301,6 @@ int sk_chk_filter(struct sock_filter *filter, int flen)
299 301
300 /* check the filter code now */ 302 /* check the filter code now */
301 for (pc = 0; pc < flen; pc++) { 303 for (pc = 0; pc < flen; pc++) {
302 /* all jumps are forward as they are not signed */
303 ftest = &filter[pc]; 304 ftest = &filter[pc];
304 305
305 /* Only allow valid instructions */ 306 /* Only allow valid instructions */
@@ -383,11 +384,6 @@ int sk_chk_filter(struct sock_filter *filter, int flen)
383 } 384 }
384 } 385 }
385 386
386 /*
387 * The program must end with a return. We don't care where they
388 * jumped within the script (its always forwards) but in the end
389 * they _will_ hit this.
390 */
391 return (BPF_CLASS(filter[flen - 1].code) == BPF_RET) ? 0 : -EINVAL; 387 return (BPF_CLASS(filter[flen - 1].code) == BPF_RET) ? 0 : -EINVAL;
392} 388}
393 389