inet: factor out inet_send_prepare()
The same code is replicated verbatim in multiple places, and the next patches will introduce an additional user for it. Factor out a helper and use it where appropriate. No functional change intended. Signed-off-by: Paolo Abeni <pabeni@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>alistair/sunxi64-5.4-dsi
parent
2559d7c4dd
commit
e473093639
|
@ -25,6 +25,7 @@ int inet_dgram_connect(struct socket *sock, struct sockaddr *uaddr,
|
||||||
int addr_len, int flags);
|
int addr_len, int flags);
|
||||||
int inet_accept(struct socket *sock, struct socket *newsock, int flags,
|
int inet_accept(struct socket *sock, struct socket *newsock, int flags,
|
||||||
bool kern);
|
bool kern);
|
||||||
|
int inet_send_prepare(struct sock *sk);
|
||||||
int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size);
|
int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size);
|
||||||
ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
|
ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
|
||||||
size_t size, int flags);
|
size_t size, int flags);
|
||||||
|
|
|
@ -784,10 +784,8 @@ int inet_getname(struct socket *sock, struct sockaddr *uaddr,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(inet_getname);
|
EXPORT_SYMBOL(inet_getname);
|
||||||
|
|
||||||
int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
|
int inet_send_prepare(struct sock *sk)
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
|
||||||
|
|
||||||
sock_rps_record_flow(sk);
|
sock_rps_record_flow(sk);
|
||||||
|
|
||||||
/* We may need to bind the socket. */
|
/* We may need to bind the socket. */
|
||||||
|
@ -795,6 +793,17 @@ int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
|
||||||
inet_autobind(sk))
|
inet_autobind(sk))
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(inet_send_prepare);
|
||||||
|
|
||||||
|
int inet_sendmsg(struct socket *sock, struct msghdr *msg, size_t size)
|
||||||
|
{
|
||||||
|
struct sock *sk = sock->sk;
|
||||||
|
|
||||||
|
if (unlikely(inet_send_prepare(sk)))
|
||||||
|
return -EAGAIN;
|
||||||
|
|
||||||
return sk->sk_prot->sendmsg(sk, msg, size);
|
return sk->sk_prot->sendmsg(sk, msg, size);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(inet_sendmsg);
|
EXPORT_SYMBOL(inet_sendmsg);
|
||||||
|
@ -804,11 +813,7 @@ ssize_t inet_sendpage(struct socket *sock, struct page *page, int offset,
|
||||||
{
|
{
|
||||||
struct sock *sk = sock->sk;
|
struct sock *sk = sock->sk;
|
||||||
|
|
||||||
sock_rps_record_flow(sk);
|
if (unlikely(inet_send_prepare(sk)))
|
||||||
|
|
||||||
/* We may need to bind the socket. */
|
|
||||||
if (!inet_sk(sk)->inet_num && !sk->sk_prot->no_autobind &&
|
|
||||||
inet_autobind(sk))
|
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
|
|
||||||
if (sk->sk_prot->sendpage)
|
if (sk->sk_prot->sendpage)
|
||||||
|
|
Loading…
Reference in New Issue