forked from Minki/linux
net: early init support for strparser
It is useful to allow strparser to init sockets before the read_sock callback has been established. Signed-off-by: John Fastabend <john.fastabend@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
d369bcaf7d
commit
f26de110f4
@ -373,6 +373,9 @@ static int strp_read_sock(struct strparser *strp)
|
||||
struct socket *sock = strp->sk->sk_socket;
|
||||
read_descriptor_t desc;
|
||||
|
||||
if (unlikely(!sock || !sock->ops || !sock->ops->read_sock))
|
||||
return -EBUSY;
|
||||
|
||||
desc.arg.data = strp;
|
||||
desc.error = 0;
|
||||
desc.count = 1; /* give more than one skb per call */
|
||||
@ -486,12 +489,7 @@ int strp_init(struct strparser *strp, struct sock *sk,
|
||||
* The upper layer calls strp_process for each skb to be parsed.
|
||||
*/
|
||||
|
||||
if (sk) {
|
||||
struct socket *sock = sk->sk_socket;
|
||||
|
||||
if (!sock->ops->read_sock || !sock->ops->peek_len)
|
||||
return -EAFNOSUPPORT;
|
||||
} else {
|
||||
if (!sk) {
|
||||
if (!cb->lock || !cb->unlock)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user