git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
[safe/jmp/linux-2.6]
/
net
/
core
/
filter.c
diff --git
a/net/core/filter.c
b/net/core/filter.c
index
e3987e1
..
d38ef7f
100644
(file)
--- a/
net/core/filter.c
+++ b/
net/core/filter.c
@@
-86,7
+86,7
@@
int sk_filter(struct sock *sk, struct sk_buff *skb)
return err;
rcu_read_lock_bh();
return err;
rcu_read_lock_bh();
- filter = rcu_dereference(sk->sk_filter);
+ filter = rcu_dereference
_bh
(sk->sk_filter);
if (filter) {
unsigned int pkt_len = sk_run_filter(skb, filter->insns,
filter->len);
if (filter) {
unsigned int pkt_len = sk_run_filter(skb, filter->insns,
filter->len);
@@
-306,6
+306,9
@@
load_b:
case SKF_AD_MARK:
A = skb->mark;
continue;
case SKF_AD_MARK:
A = skb->mark;
continue;
+ case SKF_AD_QUEUE:
+ A = skb->queue_mapping;
+ continue;
case SKF_AD_NLATTR: {
struct nlattr *nla;
case SKF_AD_NLATTR: {
struct nlattr *nla;
@@
-518,7
+521,7
@@
int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
}
rcu_read_lock_bh();
}
rcu_read_lock_bh();
- old_fp = rcu_dereference(sk->sk_filter);
+ old_fp = rcu_dereference
_bh
(sk->sk_filter);
rcu_assign_pointer(sk->sk_filter, fp);
rcu_read_unlock_bh();
rcu_assign_pointer(sk->sk_filter, fp);
rcu_read_unlock_bh();
@@
-526,6
+529,7
@@
int sk_attach_filter(struct sock_fprog *fprog, struct sock *sk)
sk_filter_delayed_uncharge(sk, old_fp);
return 0;
}
sk_filter_delayed_uncharge(sk, old_fp);
return 0;
}
+EXPORT_SYMBOL_GPL(sk_attach_filter);
int sk_detach_filter(struct sock *sk)
{
int sk_detach_filter(struct sock *sk)
{
@@
-533,7
+537,7
@@
int sk_detach_filter(struct sock *sk)
struct sk_filter *filter;
rcu_read_lock_bh();
struct sk_filter *filter;
rcu_read_lock_bh();
- filter = rcu_dereference(sk->sk_filter);
+ filter = rcu_dereference
_bh
(sk->sk_filter);
if (filter) {
rcu_assign_pointer(sk->sk_filter, NULL);
sk_filter_delayed_uncharge(sk, filter);
if (filter) {
rcu_assign_pointer(sk->sk_filter, NULL);
sk_filter_delayed_uncharge(sk, filter);
@@
-542,3
+546,4
@@
int sk_detach_filter(struct sock *sk)
rcu_read_unlock_bh();
return ret;
}
rcu_read_unlock_bh();
return ret;
}
+EXPORT_SYMBOL_GPL(sk_detach_filter);