diff options
| author | Mark Brown <[email protected]> | 2015-11-10 19:01:58 +0000 |
|---|---|---|
| committer | Mark Brown <[email protected]> | 2015-11-10 19:01:58 +0000 |
| commit | 2a148b6f2726ced30f796435f61d6e915c979784 (patch) | |
| tree | 48d233fa5639677b16b10a3442029f3a2e40ef92 /net/unix/af_unix.c | |
| parent | ASoC: rsnd: fixup SCU_SYS_INT_EN1 address (diff) | |
| parent | Merge remote-tracking branches 'asoc/topic/wm8904', 'asoc/topic/wm8955' and '... (diff) | |
| download | kernel-2a148b6f2726ced30f796435f61d6e915c979784.tar.gz kernel-2a148b6f2726ced30f796435f61d6e915c979784.zip | |
Merge tag 'asoc-v4.3-rc6' into asoc-fix-rcar
ASoC: Updates for v4.4
Not much core work here, a few small tweaks to interfaces but mainly the
changes here are driver ones. Highlights include:
- Updates to the topology userspace interface
- Big updates to the Renesas support from Morimoto-san
- Most of the support for Intel Sky Lake systems.
- New drivers for Asahi Kasei Microdevices AK4613, Allwinnner A10,
Cirrus Logic WM8998, Dialog DA7219, Nuvoton NAU8825 and Rockchip
S/PDIF.
Diffstat (limited to 'net/unix/af_unix.c')
| -rw-r--r-- | net/unix/af_unix.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 03ee4d359f6a..94f658235fb4 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -2064,6 +2064,11 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state) goto out; } + if (flags & MSG_PEEK) + skip = sk_peek_offset(sk, flags); + else + skip = 0; + do { int chunk; struct sk_buff *skb, *last; @@ -2112,7 +2117,6 @@ unlock: break; } - skip = sk_peek_offset(sk, flags); while (skip >= unix_skb_len(skb)) { skip -= unix_skb_len(skb); last = skb; @@ -2181,6 +2185,17 @@ unlock: sk_peek_offset_fwd(sk, chunk); + if (UNIXCB(skb).fp) + break; + + skip = 0; + last = skb; + last_len = skb->len; + unix_state_lock(sk); + skb = skb_peek_next(skb, &sk->sk_receive_queue); + if (skb) + goto again; + unix_state_unlock(sk); break; } } while (size); |
