]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
hv_sock: fix ARM64 support
authorHamza Mahfooz <hamzamahfooz@linux.microsoft.com>
Tue, 28 Apr 2026 12:53:39 +0000 (08:53 -0400)
committerJakub Kicinski <kuba@kernel.org>
Thu, 30 Apr 2026 00:30:45 +0000 (17:30 -0700)
VMBUS ring buffers must be page aligned. Therefore, the current value of
24K presents a challenge on ARM64 kernels (with 64K pages). So, use
VMBUS_RING_SIZE() to ensure they are always aligned and large enough to
hold all of the relevant data.

Cc: stable@vger.kernel.org
Fixes: 77ffe33363c0 ("hv_sock: use HV_HYP_PAGE_SIZE for Hyper-V communication")
Tested-by: Dexuan Cui <decui@microsoft.com>
Reviewed-by: Dexuan Cui <decui@microsoft.com>
Signed-off-by: Hamza Mahfooz <hamzamahfooz@linux.microsoft.com>
Acked-by: Stefano Garzarella <sgarzare@redhat.com>
Link: https://patch.msgid.link/20260428125339.13963-1-hamzamahfooz@linux.microsoft.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
net/vmw_vsock/hyperv_transport.c

index f862988c1e865ebd0efaa62e9765325e8ac76a23..7a8963595bf9823c3a4fdd8248d2c378c7cc8c41 100644 (file)
@@ -375,10 +375,10 @@ static void hvs_open_connection(struct vmbus_channel *chan)
        } else {
                sndbuf = max_t(int, sk->sk_sndbuf, RINGBUFFER_HVS_SND_SIZE);
                sndbuf = min_t(int, sndbuf, RINGBUFFER_HVS_MAX_SIZE);
-               sndbuf = ALIGN(sndbuf, HV_HYP_PAGE_SIZE);
+               sndbuf = VMBUS_RING_SIZE(sndbuf);
                rcvbuf = max_t(int, sk->sk_rcvbuf, RINGBUFFER_HVS_RCV_SIZE);
                rcvbuf = min_t(int, rcvbuf, RINGBUFFER_HVS_MAX_SIZE);
-               rcvbuf = ALIGN(rcvbuf, HV_HYP_PAGE_SIZE);
+               rcvbuf = VMBUS_RING_SIZE(rcvbuf);
        }
 
        chan->max_pkt_size = HVS_MAX_PKT_SIZE;