|
@@ -1445,6 +1445,7 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset,
|
|
|
|
|
|
|
|
if (spd.nr_pages) {
|
|
if (spd.nr_pages) {
|
|
|
int ret;
|
|
int ret;
|
|
|
|
|
+ struct sock *sk = __skb->sk;
|
|
|
|
|
|
|
|
/*
|
|
/*
|
|
|
* Drop the socket lock, otherwise we have reverse
|
|
* Drop the socket lock, otherwise we have reverse
|
|
@@ -1455,9 +1456,9 @@ int skb_splice_bits(struct sk_buff *__skb, unsigned int offset,
|
|
|
* we call into ->sendpage() with the i_mutex lock held
|
|
* we call into ->sendpage() with the i_mutex lock held
|
|
|
* and networking will grab the socket lock.
|
|
* and networking will grab the socket lock.
|
|
|
*/
|
|
*/
|
|
|
- release_sock(__skb->sk);
|
|
|
|
|
|
|
+ release_sock(sk);
|
|
|
ret = splice_to_pipe(pipe, &spd);
|
|
ret = splice_to_pipe(pipe, &spd);
|
|
|
- lock_sock(__skb->sk);
|
|
|
|
|
|
|
+ lock_sock(sk);
|
|
|
return ret;
|
|
return ret;
|
|
|
}
|
|
}
|
|
|
|
|
|