projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bpf: Add new cgroup attach type to enable sock modifications
[linux-2.6-microblaze.git]
/
net
/
ipv4
/
af_inet.c
diff --git
a/net/ipv4/af_inet.c
b/net/ipv4/af_inet.c
index
9648c97
..
24d2550
100644
(file)
--- a/
net/ipv4/af_inet.c
+++ b/
net/ipv4/af_inet.c
@@
-374,8
+374,18
@@
lookup_protocol:
if (sk->sk_prot->init) {
err = sk->sk_prot->init(sk);
if (sk->sk_prot->init) {
err = sk->sk_prot->init(sk);
- if (err)
+ if (err) {
+ sk_common_release(sk);
+ goto out;
+ }
+ }
+
+ if (!kern) {
+ err = BPF_CGROUP_RUN_PROG_INET_SOCK(sk);
+ if (err) {
sk_common_release(sk);
sk_common_release(sk);
+ goto out;
+ }
}
out:
return err;
}
out:
return err;
@@
-533,9
+543,9
@@
EXPORT_SYMBOL(inet_dgram_connect);
static long inet_wait_for_connect(struct sock *sk, long timeo, int writebias)
{
static long inet_wait_for_connect(struct sock *sk, long timeo, int writebias)
{
- DEFINE_WAIT
(wait
);
+ DEFINE_WAIT
_FUNC(wait, woken_wake_function
);
-
prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE
);
+
add_wait_queue(sk_sleep(sk), &wait
);
sk->sk_write_pending += writebias;
/* Basic assumption: if someone sets sk->sk_err, he _must_
sk->sk_write_pending += writebias;
/* Basic assumption: if someone sets sk->sk_err, he _must_
@@
-545,13
+555,12
@@
static long inet_wait_for_connect(struct sock *sk, long timeo, int writebias)
*/
while ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) {
release_sock(sk);
*/
while ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) {
release_sock(sk);
- timeo =
schedule_timeout(
timeo);
+ timeo =
wait_woken(&wait, TASK_INTERRUPTIBLE,
timeo);
lock_sock(sk);
if (signal_pending(current) || !timeo)
break;
lock_sock(sk);
if (signal_pending(current) || !timeo)
break;
- prepare_to_wait(sk_sleep(sk), &wait, TASK_INTERRUPTIBLE);
}
}
-
finish_wait
(sk_sleep(sk), &wait);
+
remove_wait_queue
(sk_sleep(sk), &wait);
sk->sk_write_pending -= writebias;
return timeo;
}
sk->sk_write_pending -= writebias;
return timeo;
}