| From: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Subject: relay: update relay to use mmap_prepare |
| Date: Mon, 20 Oct 2025 13:11:22 +0100 |
| |
| It is relatively trivial to update this code to use the f_op->mmap_prepare |
| hook in favour of the deprecated f_op->mmap hook, so do so. |
| |
| Link: https://lkml.kernel.org/r/7c9e82cdddf8b573ea3edb8cdb697363e3ccb5d7.1760959442.git.lorenzo.stoakes@oracle.com |
| Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com> |
| Reviewed-by: David Hildenbrand <david@redhat.com> |
| Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> |
| Reviewed-by: Pedro Falcato <pfalcato@suse.de> |
| Cc: Alexander Gordeev <agordeev@linux.ibm.com> |
| Cc: Al Viro <viro@zeniv.linux.org.uk> |
| Cc: Andreas Larsson <andreas@gaisler.com> |
| Cc: Andrey Konovalov <andreyknvl@gmail.com> |
| Cc: Arnd Bergmann <arnd@arndb.de> |
| Cc: Baolin Wang <baolin.wang@linux.alibaba.com> |
| Cc: Baoquan He <bhe@redhat.com> |
| Cc: Chatre, Reinette <reinette.chatre@intel.com> |
| Cc: Christian Borntraeger <borntraeger@linux.ibm.com> |
| Cc: Christian Brauner <brauner@kernel.org> |
| Cc: Dan Williams <dan.j.williams@intel.com> |
| Cc: Dave Jiang <dave.jiang@intel.com> |
| Cc: Dave Martin <dave.martin@arm.com> |
| Cc: Dave Young <dyoung@redhat.com> |
| Cc: David S. Miller <davem@davemloft.net> |
| Cc: Dmitriy Vyukov <dvyukov@google.com> |
| Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Cc: Guo Ren <guoren@kernel.org> |
| Cc: Heiko Carstens <hca@linux.ibm.com> |
| Cc: Hugh Dickins <hughd@google.com> |
| Cc: James Morse <james.morse@arm.com> |
| Cc: Jan Kara <jack@suse.cz> |
| Cc: Jann Horn <jannh@google.com> |
| Cc: Jonathan Corbet <corbet@lwn.net> |
| Cc: Kevin Tian <kevin.tian@intel.com> |
| Cc: Konstantin Komarov <almaz.alexandrovich@paragon-software.com> |
| Cc: Liam Howlett <liam.howlett@oracle.com> |
| Cc: "Luck, Tony" <tony.luck@intel.com> |
| Cc: Matthew Wilcox (Oracle) <willy@infradead.org> |
| Cc: Michal Hocko <mhocko@suse.com> |
| Cc: Mike Rapoport <rppt@kernel.org> |
| Cc: Muchun Song <muchun.song@linux.dev> |
| Cc: Nicolas Pitre <nico@fluxnic.net> |
| Cc: Oscar Salvador <osalvador@suse.de> |
| Cc: Robin Murohy <robin.murphy@arm.com> |
| Cc: Sumanth Korikkar <sumanthk@linux.ibm.com> |
| Cc: Suren Baghdasaryan <surenb@google.com> |
| Cc: Sven Schnelle <svens@linux.ibm.com> |
| Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Cc: "Uladzislau Rezki (Sony)" <urezki@gmail.com> |
| Cc: Vasily Gorbik <gor@linux.ibm.com> |
| Cc: Vishal Verma <vishal.l.verma@intel.com> |
| Cc: Vivek Goyal <vgoyal@redhat.com> |
| Cc: Vlastimil Babka <vbabka@suse.cz> |
| Cc: Will Deacon <will@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| kernel/relay.c | 33 +++++++++++++++++---------------- |
| 1 file changed, 17 insertions(+), 16 deletions(-) |
| |
| --- a/kernel/relay.c~relay-update-relay-to-use-mmap_prepare |
| +++ a/kernel/relay.c |
| @@ -72,17 +72,18 @@ static void relay_free_page_array(struct |
| } |
| |
| /** |
| - * relay_mmap_buf: - mmap channel buffer to process address space |
| - * @buf: relay channel buffer |
| - * @vma: vm_area_struct describing memory to be mapped |
| + * relay_mmap_prepare_buf: - mmap channel buffer to process address space |
| + * @buf: the relay channel buffer |
| + * @desc: describing what to map |
| * |
| * Returns 0 if ok, negative on error |
| * |
| * Caller should already have grabbed mmap_lock. |
| */ |
| -static int relay_mmap_buf(struct rchan_buf *buf, struct vm_area_struct *vma) |
| +static int relay_mmap_prepare_buf(struct rchan_buf *buf, |
| + struct vm_area_desc *desc) |
| { |
| - unsigned long length = vma->vm_end - vma->vm_start; |
| + unsigned long length = vma_desc_size(desc); |
| |
| if (!buf) |
| return -EBADF; |
| @@ -90,9 +91,9 @@ static int relay_mmap_buf(struct rchan_b |
| if (length != (unsigned long)buf->chan->alloc_size) |
| return -EINVAL; |
| |
| - vma->vm_ops = &relay_file_mmap_ops; |
| - vm_flags_set(vma, VM_DONTEXPAND); |
| - vma->vm_private_data = buf; |
| + desc->vm_ops = &relay_file_mmap_ops; |
| + desc->vm_flags |= VM_DONTEXPAND; |
| + desc->private_data = buf; |
| |
| return 0; |
| } |
| @@ -749,16 +750,16 @@ static int relay_file_open(struct inode |
| } |
| |
| /** |
| - * relay_file_mmap - mmap file op for relay files |
| - * @filp: the file |
| - * @vma: the vma describing what to map |
| + * relay_file_mmap_prepare - mmap file op for relay files |
| + * @desc: describing what to map |
| * |
| - * Calls upon relay_mmap_buf() to map the file into user space. |
| + * Calls upon relay_mmap_prepare_buf() to map the file into user space. |
| */ |
| -static int relay_file_mmap(struct file *filp, struct vm_area_struct *vma) |
| +static int relay_file_mmap_prepare(struct vm_area_desc *desc) |
| { |
| - struct rchan_buf *buf = filp->private_data; |
| - return relay_mmap_buf(buf, vma); |
| + struct rchan_buf *buf = desc->file->private_data; |
| + |
| + return relay_mmap_prepare_buf(buf, desc); |
| } |
| |
| /** |
| @@ -1006,7 +1007,7 @@ static ssize_t relay_file_read(struct fi |
| const struct file_operations relay_file_operations = { |
| .open = relay_file_open, |
| .poll = relay_file_poll, |
| - .mmap = relay_file_mmap, |
| + .mmap_prepare = relay_file_mmap_prepare, |
| .read = relay_file_read, |
| .release = relay_file_release, |
| }; |
| _ |