|
@@ -568,6 +568,9 @@ static int pppoe_create(struct net *net, struct socket *sock, int kern)
|
|
sk->sk_family = PF_PPPOX;
|
|
sk->sk_family = PF_PPPOX;
|
|
sk->sk_protocol = PX_PROTO_OE;
|
|
sk->sk_protocol = PX_PROTO_OE;
|
|
|
|
|
|
|
|
+ INIT_WORK(&pppox_sk(sk)->proto.pppoe.padt_work,
|
|
|
|
+ pppoe_unbind_sock_work);
|
|
|
|
+
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -632,8 +635,6 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
|
|
|
|
|
lock_sock(sk);
|
|
lock_sock(sk);
|
|
|
|
|
|
- INIT_WORK(&po->proto.pppoe.padt_work, pppoe_unbind_sock_work);
|
|
|
|
-
|
|
|
|
error = -EINVAL;
|
|
error = -EINVAL;
|
|
if (sp->sa_protocol != PX_PROTO_OE)
|
|
if (sp->sa_protocol != PX_PROTO_OE)
|
|
goto end;
|
|
goto end;
|
|
@@ -663,8 +664,13 @@ static int pppoe_connect(struct socket *sock, struct sockaddr *uservaddr,
|
|
po->pppoe_dev = NULL;
|
|
po->pppoe_dev = NULL;
|
|
}
|
|
}
|
|
|
|
|
|
- memset(sk_pppox(po) + 1, 0,
|
|
|
|
- sizeof(struct pppox_sock) - sizeof(struct sock));
|
|
|
|
|
|
+ po->pppoe_ifindex = 0;
|
|
|
|
+ memset(&po->pppoe_pa, 0, sizeof(po->pppoe_pa));
|
|
|
|
+ memset(&po->pppoe_relay, 0, sizeof(po->pppoe_relay));
|
|
|
|
+ memset(&po->chan, 0, sizeof(po->chan));
|
|
|
|
+ po->next = NULL;
|
|
|
|
+ po->num = 0;
|
|
|
|
+
|
|
sk->sk_state = PPPOX_NONE;
|
|
sk->sk_state = PPPOX_NONE;
|
|
}
|
|
}
|
|
|
|
|