This changes sk_run_filter()'s return type from int to unsigned. Signed-off-by: Kris Katterjohn <[EMAIL PROTECTED]>
Zero all ready gets returned if an error occurs, and net/packet/af_packet.c treats the return type as unsigned anyway. For some reason, under the BPF RET statements, fentry->k and A were cast to unsigned when A is all ready unsigned and they'd both be converted back to int! I dropped the cast on both; fentry->k get converted anyway. No other files need to be changed because no return values are really changed. Thanks! --- x/net/core/filter.c 2006-01-05 12:27:17.000000000 -0600 +++ y/net/core/filter.c 2006-01-05 17:02:32.000000000 -0600 @@ -75,7 +75,7 @@ static inline void *load_pointer(struct * len is the number of filter blocks in the array. */ -int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen) +unsigned sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen) { struct sock_filter *fentry; /* We walk down these */ void *ptr; @@ -241,9 +241,9 @@ load_b: A = X; continue; case BPF_RET|BPF_K: - return ((unsigned int)fentry->k); + return fentry->k; case BPF_RET|BPF_A: - return ((unsigned int)A); + return A; case BPF_ST: mem[fentry->k] = A; continue; --- x/include/linux/filter.h 2006-01-02 21:21:10.000000000 -0600 +++ y/include/linux/filter.h 2006-01-05 17:02:58.000000000 -0600 @@ -143,7 +143,7 @@ static inline unsigned int sk_filter_len struct sk_buff; struct sock; -extern int sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen); +extern unsigned sk_run_filter(struct sk_buff *skb, struct sock_filter *filter, int flen); extern int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk); extern int sk_chk_filter(struct sock_filter *filter, int flen); #endif /* __KERNEL__ */ - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html