drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare.patch removed from -mm tree
The quilt patch titled
Subject: drivers: hv: vmbus: replace deprecated mmap hook with mmap_prepare
has been removed from the -mm tree. Its filename was
drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare.patch
This patch was dropped because it was merged into the mm-stable branch of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
------------------------------------------------------
From: "Lorenzo Stoakes (Oracle)" <[email protected]>
Subject: drivers: hv: vmbus: replace deprecated mmap hook with mmap_prepare
Date: Fri, 20 Mar 2026 22:39:44 +0000
The f_op->mmap interface is deprecated, so update the vmbus driver to use its successor, mmap_prepare.
This updates all callbacks which referenced the function pointer hv_mmap_ring_buffer to instead reference hv_mmap_prepare_ring_buffer, utilising the newly introduced compat_set_desc_from_vma() and __compat_vma_mmap() to be able to implement this change.
The UIO HV generic driver is the only user of hv_create_ring_sysfs(), which is the only function which references vmbus_channel->mmap_prepare_ring_buffer which, in turn, is the only external interface to hv_mmap_prepare_ring_buffer.
This patch therefore updates this caller to use mmap_prepare instead, which also previously used vm_iomap_memory(), so this change replaces it with its mmap_prepare equivalent, mmap_action_simple_ioremap().
---
drivers/hv/hyperv_vmbus.h | 4 ++-- drivers/hv/vmbus_drv.c | 31 +++++++++++++++++++------------ drivers/uio/uio_hv_generic.c | 11 ++++++----- include/linux/hyperv.h | 4 ++-- 4 files changed, 29 insertions(+), 21 deletions(-)
drivers/hv/hyperv_vmbus.h renamed from drivers/hv/hyperv_vmbus.h~drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare +2 -2
@@ -545,8 +545,8 @@ static inline int hv_debug_add_dev_dir(s/* Create and remove sysfs entry for memory mapped ring buffers for a channel */ int hv_create_ring_sysfs (struct vmbus_channel *channel, -int (*hv_mmap_ring_buffer)(struct vmbus_channel *channel, -struct vm_area_struct *vma)); +int (*hv_mmap_prepare_ring_buffer)(struct vmbus_channel *channel, +struct vm_area_desc *desc));int hv_remove_ring_sysfs (struct vmbus_channel *channel);#endif /* _HYPERV_VMBUS_H */
drivers/hv/vmbus_drv.c renamed from drivers/hv/vmbus_drv.c~drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare +19 -12
@@ -1951,12 +1951,19 @@ static int hv_mmap_ring_buffer_wrapper(s struct vm_area_struct *vma) { struct vmbus_channel *channel = container_of(kobj, struct vmbus_channel, kobj); +struct vm_area_desc desc; +int err;/* -* hv_(create|remove)_ring_sysfs implementation ensures that mmap_ring_buffer -* is not NULL. +* hv_(create|remove)_ring_sysfs implementation ensures that +* mmap_prepare_ring_buffer is not NULL. */ -return channel->mmap_ring_buffer (channel, vma); +compat_set_desc_from_vma (&desc, filp, vma); + err = channel->mmap_prepare_ring_buffer (channel, &desc); +if (err) +return err; + +return __compat_vma_mmap (&desc, vma); }static struct bin_attribute chan_attr_ring_buffer = {
@@ -2048,13 +2055,13 @@ static const struct kobj_type vmbus_chan/** * hv_create_ring_sysfs() - create "ring" sysfs entry corresponding to ring buffers for a channel. * @channel: Pointer to vmbus_channel structure -* @hv_mmap_ring_buffer: function pointer for initializing the function to be called on mmap of +* @hv_mmap_prepare_ring_buffer: function pointer for initializing the function to be called on mmap * channel's "ring" sysfs node, which is for the ring buffer of that channel. * Function pointer is of below type: -* int (*hv_mmap_ring_buffer)(struct vmbus_channel *channel, -* struct vm_area_struct *vma)) -* This has a pointer to the channel and a pointer to vm_area_struct, -* used for mmap, as arguments. +* int (*hv_mmap_prepare_ring_buffer)(struct vmbus_channel *channel, +* struct vm_area_desc *desc)) +* This has a pointer to the channel and a pointer to vm_area_desc, +* used for mmap_prepare, as arguments. * * Sysfs node for ring buffer of a channel is created along with other fields, however its * visibility is disabled by default. Sysfs creation needs to be controlled when the use-case
@@ -2071,12 +2078,12 @@ static const struct kobj_type vmbus_chan* Returns 0 on success or error code on failure. */ int hv_create_ring_sysfs (struct vmbus_channel *channel, -int (*hv_mmap_ring_buffer)(struct vmbus_channel *channel, -struct vm_area_struct *vma)) +int (*hv_mmap_prepare_ring_buffer)(struct vmbus_channel *channel, +struct vm_area_desc *desc)) {struct kobject *kobj = &channel->kobj; - channel->mmap_ring_buffer = hv_mmap_ring_buffer; + channel->mmap_prepare_ring_buffer = hv_mmap_prepare_ring_buffer; channel->ring_sysfs_visible = true;return sysfs_update_group (kobj, &vmbus_chan_group);
@@ -2098,7 +2105,7 @@ int hv_remove_ring_sysfs(struct vmbus_ch channel->ring_sysfs_visible = false; ret =sysfs_update_group (kobj, &vmbus_chan_group); - channel->mmap_ring_buffer =NULL ; + channel->mmap_prepare_ring_buffer =NULL ;return ret; }EXPORT_SYMBOL_GPL (hv_remove_ring_sysfs);
drivers/uio/uio_hv_generic.c renamed from drivers/uio/uio_hv_generic.c~drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare +6 -5
@@ -154,15 +154,16 @@ static void hv_uio_rescind(struct vmbus_* The ring buffer is allocated as contiguous memory by vmbus_open */ static int -hv_uio_ring_mmap (struct vmbus_channel *channel,struct vm_area_struct *vma) +hv_uio_ring_mmap_prepare (struct vmbus_channel *channel,struct vm_area_desc *desc) {void *ring_buffer =page_address (channel->ringbuffer_page);if (channel->state !=CHANNEL_OPENED_STATE )return -ENODEV ; -return vm_iomap_memory (vma,virt_to_phys (ring_buffer), - channel->ringbuffer_pagecount <<PAGE_SHIFT ); +mmap_action_simple_ioremap (desc,virt_to_phys (ring_buffer), + channel->ringbuffer_pagecount <<PAGE_SHIFT ); +return 0 ; }/* Callback from VMBUS subsystem when new channel created. */
@@ -183,7 +184,7 @@ hv_uio_new_channel(struct vmbus_channel }set_channel_read_mode (new_sc,HV_CALL_ISR ); - ret =hv_create_ring_sysfs (new_sc, hv_uio_ring_mmap); + ret =hv_create_ring_sysfs (new_sc, hv_uio_ring_mmap_prepare);if (ret) {dev_err (device,"sysfs create ring bin file failed; %d\n" , ret);vmbus_close (new_sc);
@@ -366,7 +367,7 @@ hv_uio_probe(struct hv_device *dev,* or decoupled from uio_hv_generic probe. Userspace programs can make use of inotify * APIs to make sure that ring is created. */ -hv_create_ring_sysfs (channel, hv_uio_ring_mmap); +hv_create_ring_sysfs (channel, hv_uio_ring_mmap_prepare);hv_set_drvdata (dev, pdata);
include/linux/hyperv.h renamed from include/linux/hyperv.h~drivers-hv-vmbus-replace-deprecated-mmap-hook-with-mmap_prepare +2 -2
@@ -1015,8 +1015,8 @@ struct vmbus_channel {/* The max size of a packet on this channel */ u32 max_pkt_size; -/* function to mmap ring buffer memory to the channel's sysfs ring attribute */ -int (*mmap_ring_buffer)(struct vmbus_channel *channel,struct vm_area_struct *vma); +/* function to mmap ring buffer memory to the channel's sysfs ring attribute */ +int (*mmap_prepare_ring_buffer)(struct vmbus_channel *channel,struct vm_area_desc *desc);/* boolean to control visibility of sysfs for ring buffer */ bool ring_sysfs_visible;
_
Patches currently in -mm which might be from [email protected] are
maintainers-update-mglru-entry-to-reflect-current-status.patch selftests-mm-add-merge-test-for-partial-msealed-range.patch