powerpc/vas: Return -EINVAL if the offset is non-zero in mmap()
authorHaren Myneni <haren@linux.ibm.com>
Tue, 10 Jun 2025 02:12:27 +0000 (07:42 +0530)
committerMadhavan Srinivasan <maddy@linux.ibm.com>
Tue, 10 Jun 2025 02:26:41 +0000 (07:56 +0530)
The user space calls mmap() to map VAS window paste address
and the kernel returns the complete mapped page for each
window. So return -EINVAL if non-zero is passed for offset
parameter to mmap().

See Documentation/arch/powerpc/vas-api.rst for mmap()
restrictions.

Co-developed-by: Jonathan Greental <yonatan02greental@gmail.com>
Signed-off-by: Jonathan Greental <yonatan02greental@gmail.com>
Reported-by: Jonathan Greental <yonatan02greental@gmail.com>
Fixes: dda44eb29c23 ("powerpc/vas: Add VAS user space API")
Signed-off-by: Haren Myneni <haren@linux.ibm.com>
Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
Link: https://patch.msgid.link/20250610021227.361980-2-maddy@linux.ibm.com
arch/powerpc/platforms/book3s/vas-api.c

index 0b6365d85d11714a87174dc8ebfee854eb3442c8..dc6f75d3ac6ef76b272fbd3997d0511abb9204df 100644 (file)
@@ -521,6 +521,15 @@ static int coproc_mmap(struct file *fp, struct vm_area_struct *vma)
                return -EINVAL;
        }
 
+       /*
+        * Map complete page to the paste address. So the user
+        * space should pass 0ULL to the offset parameter.
+        */
+       if (vma->vm_pgoff) {
+               pr_debug("Page offset unsupported to map paste address\n");
+               return -EINVAL;
+       }
+
        /* Ensure instance has an open send window */
        if (!txwin) {
                pr_err("No send window open?\n");