diff options
| -rw-r--r-- | net/core/filter.c | 10 |
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 | */ |
| 292 | int sk_chk_filter(struct sock_filter *filter, int flen) | 294 | int 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 | ||
