diff options
| author | Takashi Iwai <[email protected]> | 2024-05-01 18:05:13 +0200 | 
|---|---|---|
| committer | Takashi Iwai <[email protected]> | 2024-05-01 18:05:13 +0200 | 
| commit | a30a7a29c35ef9d90bdec86d3051c32f47d6041f (patch) | |
| tree | 8fb47eaf32b134de050019d6205f3a3677f22d6c /net/tls/tls_sw.c | |
| parent | 39815cdfc8d46ce2c72cbf2aa3d991c4bfb0024f (diff) | |
| parent | c5782bb5468acf86d8ca8e161267e8d055fb4161 (diff) | |
Merge tag 'asoc-fix-v6.9-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.9
This is much larger than is ideal, partly due to your holiday but also
due to several vendors having come in with relatively large fixes at
similar times.  It's all driver specific stuff.
The meson fixes from Jerome fix some rare timing issues with blocking
operations happening in triggers, plus the continuous clock support
which fixes clocking for some platforms.  The SOF series from Peter
builds to the fix to avoid spurious resets of ChainDMA which triggered
errors in cleanup paths with both PulseAudio and PipeWire, and there's
also some simple new debugfs files from Pierre which make support a lot
eaiser.
Diffstat (limited to 'net/tls/tls_sw.c')
| -rw-r--r-- | net/tls/tls_sw.c | 7 | 
1 files changed, 5 insertions, 2 deletions
diff --git a/net/tls/tls_sw.c b/net/tls/tls_sw.c index 211f57164cb6..b783231668c6 100644 --- a/net/tls/tls_sw.c +++ b/net/tls/tls_sw.c @@ -1976,10 +1976,10 @@ int tls_sw_recvmsg(struct sock *sk,  	if (unlikely(flags & MSG_ERRQUEUE))  		return sock_recv_errqueue(sk, msg, len, SOL_IP, IP_RECVERR); -	psock = sk_psock_get(sk);  	err = tls_rx_reader_lock(sk, ctx, flags & MSG_DONTWAIT);  	if (err < 0)  		return err; +	psock = sk_psock_get(sk);  	bpf_strp_enabled = sk_psock_strp_enabled(psock);  	/* If crypto failed the connection is broken */ @@ -2152,12 +2152,15 @@ recv_end:  		}  		/* Drain records from the rx_list & copy if required */ -		if (is_peek || is_kvec) +		if (is_peek)  			err = process_rx_list(ctx, msg, &control, copied + peeked,  					      decrypted - peeked, is_peek, NULL);  		else  			err = process_rx_list(ctx, msg, &control, 0,  					      async_copy_bytes, is_peek, NULL); + +		/* we could have copied less than we wanted, and possibly nothing */ +		decrypted += max(err, 0) - async_copy_bytes;  	}  	copied += decrypted;  |