Skip to content

Commit 19a38cd

Browse files
authored
Release 6.18.20.3 (#257)
- Release rolling-lts/wsl/6.18.20.3 - Bug fixes - Fix HV sockets returning -EIO on FIN packets (fix/hv_sock_eio) - Fix dxgkrnl __dma_fence_is_later signature mismatch
2 parents a85f558 + 0a8f5a4 commit 19a38cd

4 files changed

Lines changed: 21 additions & 8 deletions

File tree

MSFT-Merge/log

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ config/wsl-6.18 47e6dda87358a7a45087a75021a55
44
feature/arm64-hyperv-hypercall-interface/6.18 712c88941ba7cfd3c9eec3a58eef4c231226d66f
55
feature/arm64-hyperv-synthetic-clocks-timers/6.18 ea0cd9a5b6202ef81b45f137c37b17478a54f382
66
feature/wsl-module-script/6.18 9c6d7c0a3fadd2ce32c90dad74429ed7e463ad4a
7-
feature/dxgkrnl/6.18 cfd1dd6fa869afa857065d28b511e9bd5c3a2f8d
7+
feature/dxgkrnl/6.18 7645bb43d045d813c5a11a5746c28bd763868b28
88
product/wsl/readme/6.18 bbf044c25e1203bed3182cedae466235420e7e96
99
product/wsl/security/6.18 20778f3fd73f259549f66a8bea0227dbdfe3e170
1010
fix/virtiofs-dax-hang/6.18 668def1339349ba0ff85f22b6244066a8369b022
11+
fix/hv_sock_eio/6.18 d483c85de3de96c58957510cda5eb2b24e9b3d91

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
VERSION = 6
33
PATCHLEVEL = 18
44
SUBLEVEL = 20
5-
EXTRAVERSION = .1
5+
EXTRAVERSION = .3
66
NAME = Baby Opossum Posse
77

88
# *DOCUMENTATION*

drivers/hv/dxgkrnl/dxgsyncfile.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -446,8 +446,8 @@ static bool dxgdmafence_signaled(struct dma_fence *fence)
446446
syncpoint = to_syncpoint(fence);
447447
if (syncpoint == 0)
448448
return true;
449-
return __dma_fence_is_later(syncpoint->fence_value, fence->seqno,
450-
fence->ops);
449+
return __dma_fence_is_later(fence, syncpoint->fence_value,
450+
fence->seqno);
451451
}
452452

453453
static bool dxgdmafence_enable_signaling(struct dma_fence *fence)

net/vmw_vsock/hyperv_transport.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -694,17 +694,29 @@ static ssize_t hvs_stream_enqueue(struct vsock_sock *vsk, struct msghdr *msg,
694694
static s64 hvs_stream_has_data(struct vsock_sock *vsk)
695695
{
696696
struct hvsock *hvs = vsk->trans;
697-
bool need_refill;
698697
s64 ret;
699698

700699
if (hvs->recv_data_len > 0)
701700
return hvs->recv_data_len;
702701

703702
switch (hvs_channel_readable_payload(hvs->chan)) {
704703
case 1:
705-
need_refill = !hvs->recv_desc;
706-
if (!need_refill)
707-
return -EIO;
704+
if (hvs->recv_desc) {
705+
/* Here hvs->recv_data_len is 0, so hvs->recv_desc must
706+
* be NULL unless it points to the 0-byte-payload FIN
707+
* packet: see hvs_update_recv_data().
708+
*
709+
* Here all the payload has been dequeued, but
710+
* hvs_channel_readable_payload() still returns 1,
711+
* because the VMBus ringbuffer's read_index is not
712+
* updated for the FIN packet: hvs_stream_dequeue() ->
713+
* hv_pkt_iter_next() updates the cached priv_read_index
714+
* but has no opportunity to update the read_index in
715+
* hv_pkt_iter_close() as hvs_stream_has_data() returns
716+
* 0 for the FIN packet, so it won't get dequeued.
717+
*/
718+
return 0;
719+
}
708720

709721
hvs->recv_desc = hv_pkt_iter_first(hvs->chan);
710722
if (!hvs->recv_desc)

0 commit comments

Comments
 (0)