Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts: drivers/net/phy/bcm7xxx.c drivers/net/phy/marvell.c drivers/net/vxlan.c All three conflicts were cases of simple overlapping changes. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1496,7 +1496,7 @@ static void unix_detach_fds(struct scm_cookie *scm, struct sk_buff *skb)
|
||||
UNIXCB(skb).fp = NULL;
|
||||
|
||||
for (i = scm->fp->count-1; i >= 0; i--)
|
||||
unix_notinflight(scm->fp->fp[i]);
|
||||
unix_notinflight(scm->fp->user, scm->fp->fp[i]);
|
||||
}
|
||||
|
||||
static void unix_destruct_scm(struct sk_buff *skb)
|
||||
@@ -1558,7 +1558,7 @@ static int unix_attach_fds(struct scm_cookie *scm, struct sk_buff *skb)
|
||||
return -ENOMEM;
|
||||
|
||||
for (i = scm->fp->count - 1; i >= 0; i--)
|
||||
unix_inflight(scm->fp->fp[i]);
|
||||
unix_inflight(scm->fp->user, scm->fp->fp[i]);
|
||||
return max_level;
|
||||
}
|
||||
|
||||
@@ -1778,7 +1778,12 @@ restart_locked:
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
if (unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
|
||||
/* other == sk && unix_peer(other) != sk if
|
||||
* - unix_peer(sk) == NULL, destination address bound to sk
|
||||
* - unix_peer(sk) == sk by time of get but disconnected before lock
|
||||
*/
|
||||
if (other != sk &&
|
||||
unlikely(unix_peer(other) != sk && unix_recvq_full(other))) {
|
||||
if (timeo) {
|
||||
timeo = unix_wait_for_peer(other, timeo);
|
||||
|
||||
@@ -2274,13 +2279,15 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state)
|
||||
size_t size = state->size;
|
||||
unsigned int last_len;
|
||||
|
||||
err = -EINVAL;
|
||||
if (sk->sk_state != TCP_ESTABLISHED)
|
||||
if (unlikely(sk->sk_state != TCP_ESTABLISHED)) {
|
||||
err = -EINVAL;
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = -EOPNOTSUPP;
|
||||
if (flags & MSG_OOB)
|
||||
if (unlikely(flags & MSG_OOB)) {
|
||||
err = -EOPNOTSUPP;
|
||||
goto out;
|
||||
}
|
||||
|
||||
target = sock_rcvlowat(sk, flags & MSG_WAITALL, size);
|
||||
timeo = sock_rcvtimeo(sk, noblock);
|
||||
@@ -2302,6 +2309,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state)
|
||||
bool drop_skb;
|
||||
struct sk_buff *skb, *last;
|
||||
|
||||
redo:
|
||||
unix_state_lock(sk);
|
||||
if (sock_flag(sk, SOCK_DEAD)) {
|
||||
err = -ECONNRESET;
|
||||
@@ -2326,9 +2334,11 @@ again:
|
||||
goto unlock;
|
||||
|
||||
unix_state_unlock(sk);
|
||||
err = -EAGAIN;
|
||||
if (!timeo)
|
||||
if (!timeo) {
|
||||
err = -EAGAIN;
|
||||
break;
|
||||
}
|
||||
|
||||
mutex_unlock(&u->readlock);
|
||||
|
||||
timeo = unix_stream_data_wait(sk, timeo, last,
|
||||
@@ -2341,7 +2351,7 @@ again:
|
||||
}
|
||||
|
||||
mutex_lock(&u->readlock);
|
||||
continue;
|
||||
goto redo;
|
||||
unlock:
|
||||
unix_state_unlock(sk);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user