]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
uio_hv_generic: Use correct size for interrupt and monitor pages
authorLong Li <longli@microsoft.com>
Tue, 6 May 2025 00:56:34 +0000 (17:56 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 27 Jun 2025 10:04:14 +0000 (11:04 +0100)
commit c951ab8fd3589cf6991ed4111d2130816f2e3ac2 upstream.

Interrupt and monitor pages should be in Hyper-V page size (4k bytes).
This can be different from the system page size.

This size is read and used by the user-mode program to determine the
mapped data region. An example of such user-mode program is the VMBus
driver in DPDK.

Cc: stable@vger.kernel.org
Fixes: 95096f2fbd10 ("uio-hv-generic: new userspace i/o driver for VMBus")
Signed-off-by: Long Li <longli@microsoft.com>
Reviewed-by: Michael Kelley <mhklinux@outlook.com>
Link: https://lore.kernel.org/r/1746492997-4599-3-git-send-email-longli@linuxonhyperv.com
Signed-off-by: Wei Liu <wei.liu@kernel.org>
Message-ID: <1746492997-4599-3-git-send-email-longli@linuxonhyperv.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/uio/uio_hv_generic.c

index 3343cac607379d43e5fbb9a02e08b476b37849c9..67cfe838a7874309b023a5b099b388498e9ce229 100644 (file)
@@ -288,13 +288,13 @@ hv_uio_probe(struct hv_device *dev,
        pdata->info.mem[INT_PAGE_MAP].name = "int_page";
        pdata->info.mem[INT_PAGE_MAP].addr
                = (uintptr_t)vmbus_connection.int_page;
-       pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE;
+       pdata->info.mem[INT_PAGE_MAP].size = HV_HYP_PAGE_SIZE;
        pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
 
        pdata->info.mem[MON_PAGE_MAP].name = "monitor_page";
        pdata->info.mem[MON_PAGE_MAP].addr
                = (uintptr_t)vmbus_connection.monitor_pages[1];
-       pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE;
+       pdata->info.mem[MON_PAGE_MAP].size = HV_HYP_PAGE_SIZE;
        pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
 
        pdata->recv_buf = vzalloc(RECV_BUFFER_SIZE);