linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal
@ 2024-12-12 15:36 Lorenzo Stoakes
  2024-12-12 15:36 ` [RFC PATCH 1/2] mips: vdso: prefer do_mmap() to mmap_region() Lorenzo Stoakes
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Lorenzo Stoakes @ 2024-12-12 15:36 UTC (permalink / raw)
  To: Andrew Morton, Liam R . Howlett
  Cc: Thomas Bogendoerfer, Vlastimil Babka, Jann Horn, linux-mm,
	linux-kernel, linux-mips

Currently the only user of mmap_region() outside of the memory management
code is the MIPS VDSO implementation.

This uses mmap_region() to map a 'delay slot emulation page' at the top of
the stack which is read-only and executable.

This mapping requires that an already-acquired mmap write lock is utilised
and that uffd and populate logic is ignored. This rules out vm_mmap(),
however do_mmap() fits the bill.

Adapt this code to use do_mmap() and then once done, make mmap_region()
internal and userland testable, and avoid any other uses of mmap_region(),
which is absolutely and strictly an internal mm function which bypasses a
great number of checks and logic.

REVIEWERS NOTES:

Thomas - I lack the hardware or set up to test this beyond a simple
cross-compilation test, so I need some input from you MIPS guys as to
whether this is workable.

I've therefore sent this as an RFC so we can be sure this is suitable!
Please could you check to make sure this change is OK and I haven't missed
anything?

Thanks!

Lorenzo Stoakes (2):
  mips: vdso: prefer do_mmap() to mmap_region()
  mm: make mmap_region() internal

 arch/mips/kernel/vdso.c          | 10 +++--
 include/linux/mm.h               |  3 --
 mm/mmap.c                        | 34 -----------------
 mm/vma.c                         | 36 +++++++++++++++++-
 mm/vma.h                         |  6 +--
 tools/testing/vma/vma_internal.h | 65 ++++++++++++++++++++++++++++++++
 6 files changed, 109 insertions(+), 45 deletions(-)

--
2.47.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RFC PATCH 1/2] mips: vdso: prefer do_mmap() to mmap_region()
  2024-12-12 15:36 [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal Lorenzo Stoakes
@ 2024-12-12 15:36 ` Lorenzo Stoakes
  2024-12-12 15:36 ` [RFC PATCH 2/2] mm: make mmap_region() internal Lorenzo Stoakes
  2024-12-17  8:23 ` [RFC PATCH 0/2] mm: update mips to use do_mmap(), " Thomas Bogendoerfer
  2 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Stoakes @ 2024-12-12 15:36 UTC (permalink / raw)
  To: Andrew Morton, Liam R . Howlett
  Cc: Thomas Bogendoerfer, Vlastimil Babka, Jann Horn, linux-mm,
	linux-kernel, linux-mips

mmap_region() is an internal memory management implementation detail that
is not intended to be used outside of the memory management subsystem.

Map the delay slot emulation page using do_mmap() which makes use of the
already-held mmap write lock and bypasses unneeded populate and userfaultfd
logic.

This should have the precise same behaviour as the existing logic.

Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
 arch/mips/kernel/vdso.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/arch/mips/kernel/vdso.c b/arch/mips/kernel/vdso.c
index 4c8e3c0aa210..75c9d3618f58 100644
--- a/arch/mips/kernel/vdso.c
+++ b/arch/mips/kernel/vdso.c
@@ -11,6 +11,7 @@
 #include <linux/ioport.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/mman.h>
 #include <linux/random.h>
 #include <linux/sched.h>
 #include <linux/slab.h>
@@ -97,11 +98,12 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
 		return -EINTR;
 
 	if (IS_ENABLED(CONFIG_MIPS_FP_SUPPORT)) {
+		unsigned long unused;
+
 		/* Map delay slot emulation page */
-		base = mmap_region(NULL, STACK_TOP, PAGE_SIZE,
-				VM_READ | VM_EXEC |
-				VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC,
-				0, NULL);
+		base = do_mmap(NULL, STACK_TOP, PAGE_SIZE, PROT_READ | PROT_EXEC,
+			       MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, 0, 0, &unused,
+			       NULL);
 		if (IS_ERR_VALUE(base)) {
 			ret = base;
 			goto out;
-- 
2.47.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* [RFC PATCH 2/2] mm: make mmap_region() internal
  2024-12-12 15:36 [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal Lorenzo Stoakes
  2024-12-12 15:36 ` [RFC PATCH 1/2] mips: vdso: prefer do_mmap() to mmap_region() Lorenzo Stoakes
@ 2024-12-12 15:36 ` Lorenzo Stoakes
  2024-12-12 15:45   ` Matthew Wilcox
  2024-12-17  8:23 ` [RFC PATCH 0/2] mm: update mips to use do_mmap(), " Thomas Bogendoerfer
  2 siblings, 1 reply; 8+ messages in thread
From: Lorenzo Stoakes @ 2024-12-12 15:36 UTC (permalink / raw)
  To: Andrew Morton, Liam R . Howlett
  Cc: Thomas Bogendoerfer, Vlastimil Babka, Jann Horn, linux-mm,
	linux-kernel, linux-mips

Now that we have removed the one user of mmap_region() outside of mm, make
it internal and add it to vma.c so it can be userland tested.

This ensures that all external memory mappings are performed using the
appropriate interfaces and allows us to modify memory mapping logic as we
see fit.

Additionally expand test stubs to allow for the mmap_region() code to
compile and be userland testable.

Signed-off-by: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
---
 include/linux/mm.h               |  3 --
 mm/mmap.c                        | 34 -----------------
 mm/vma.c                         | 36 +++++++++++++++++-
 mm/vma.h                         |  6 +--
 tools/testing/vma/vma_internal.h | 65 ++++++++++++++++++++++++++++++++
 5 files changed, 103 insertions(+), 41 deletions(-)

diff --git a/include/linux/mm.h b/include/linux/mm.h
index a672339f2b8f..d145ddf1b2f0 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -3436,9 +3436,6 @@ get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
 	return __get_unmapped_area(file, addr, len, pgoff, flags, 0);
 }
 
-extern unsigned long mmap_region(struct file *file, unsigned long addr,
-	unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
-	struct list_head *uf);
 extern unsigned long do_mmap(struct file *file, unsigned long addr,
 	unsigned long len, unsigned long prot, unsigned long flags,
 	vm_flags_t vm_flags, unsigned long pgoff, unsigned long *populate,
diff --git a/mm/mmap.c b/mm/mmap.c
index df9154b15ef9..b771ae617629 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1016,40 +1016,6 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len,
 	return do_vmi_munmap(&vmi, mm, start, len, uf, false);
 }
 
-unsigned long mmap_region(struct file *file, unsigned long addr,
-			  unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
-			  struct list_head *uf)
-{
-	unsigned long ret;
-	bool writable_file_mapping = false;
-
-	/* Check to see if MDWE is applicable. */
-	if (map_deny_write_exec(vm_flags, vm_flags))
-		return -EACCES;
-
-	/* Allow architectures to sanity-check the vm_flags. */
-	if (!arch_validate_flags(vm_flags))
-		return -EINVAL;
-
-	/* Map writable and ensure this isn't a sealed memfd. */
-	if (file && is_shared_maywrite(vm_flags)) {
-		int error = mapping_map_writable(file->f_mapping);
-
-		if (error)
-			return error;
-		writable_file_mapping = true;
-	}
-
-	ret = __mmap_region(file, addr, len, vm_flags, pgoff, uf);
-
-	/* Clear our write mapping regardless of error. */
-	if (writable_file_mapping)
-		mapping_unmap_writable(file->f_mapping);
-
-	validate_mm(current->mm);
-	return ret;
-}
-
 int vm_munmap(unsigned long start, size_t len)
 {
 	return __vm_munmap(start, len, false);
diff --git a/mm/vma.c b/mm/vma.c
index 2fabfd6c8957..218d8f154e99 100644
--- a/mm/vma.c
+++ b/mm/vma.c
@@ -2432,7 +2432,7 @@ static void __mmap_complete(struct mmap_state *map, struct vm_area_struct *vma)
 	vma_set_page_prot(vma);
 }
 
-unsigned long __mmap_region(struct file *file, unsigned long addr,
+static unsigned long __mmap_region(struct file *file, unsigned long addr,
 		unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
 		struct list_head *uf)
 {
@@ -2484,6 +2484,40 @@ unsigned long __mmap_region(struct file *file, unsigned long addr,
 	return error;
 }
 
+unsigned long mmap_region(struct file *file, unsigned long addr,
+			  unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
+			  struct list_head *uf)
+{
+	unsigned long ret;
+	bool writable_file_mapping = false;
+
+	/* Check to see if MDWE is applicable. */
+	if (map_deny_write_exec(vm_flags, vm_flags))
+		return -EACCES;
+
+	/* Allow architectures to sanity-check the vm_flags. */
+	if (!arch_validate_flags(vm_flags))
+		return -EINVAL;
+
+	/* Map writable and ensure this isn't a sealed memfd. */
+	if (file && is_shared_maywrite(vm_flags)) {
+		int error = mapping_map_writable(file->f_mapping);
+
+		if (error)
+			return error;
+		writable_file_mapping = true;
+	}
+
+	ret = __mmap_region(file, addr, len, vm_flags, pgoff, uf);
+
+	/* Clear our write mapping regardless of error. */
+	if (writable_file_mapping)
+		mapping_unmap_writable(file->f_mapping);
+
+	validate_mm(current->mm);
+	return ret;
+}
+
 /*
  * do_brk_flags() - Increase the brk vma if the flags match.
  * @vmi: The vma iterator
diff --git a/mm/vma.h b/mm/vma.h
index 24636a2b0acf..dd943a593312 100644
--- a/mm/vma.h
+++ b/mm/vma.h
@@ -242,9 +242,9 @@ bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
 int mm_take_all_locks(struct mm_struct *mm);
 void mm_drop_all_locks(struct mm_struct *mm);
 
-unsigned long __mmap_region(struct file *file, unsigned long addr,
-		unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
-		struct list_head *uf);
+unsigned long mmap_region(struct file *file, unsigned long addr,
+			  unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
+			  struct list_head *uf);
 
 int do_brk_flags(struct vma_iterator *vmi, struct vm_area_struct *brkvma,
 		 unsigned long addr, unsigned long request, unsigned long flags);
diff --git a/tools/testing/vma/vma_internal.h b/tools/testing/vma/vma_internal.h
index 3eeb1317cc69..9f6cf80c9682 100644
--- a/tools/testing/vma/vma_internal.h
+++ b/tools/testing/vma/vma_internal.h
@@ -41,6 +41,8 @@ extern unsigned long dac_mmap_min_addr;
 #define VM_BUG_ON(_expr) (BUG_ON(_expr))
 #define VM_BUG_ON_VMA(_expr, _vma) (BUG_ON(_expr))
 
+#define MMF_HAS_MDWE		28
+
 #define VM_NONE		0x00000000
 #define VM_READ		0x00000001
 #define VM_WRITE	0x00000002
@@ -226,6 +228,8 @@ struct mm_struct {
 	unsigned long stack_vm;	   /* VM_STACK */
 
 	unsigned long def_flags;
+
+	unsigned long flags; /* Must use atomic bitops to access */
 };
 
 struct vma_lock {
@@ -1174,4 +1178,65 @@ static inline void userfaultfd_unmap_complete(struct mm_struct *mm,
 {
 }
 
+/*
+ * Denies creating a writable executable mapping or gaining executable permissions.
+ *
+ * This denies the following:
+ *
+ * 	a)	mmap(PROT_WRITE | PROT_EXEC)
+ *
+ *	b)	mmap(PROT_WRITE)
+ *		mprotect(PROT_EXEC)
+ *
+ *	c)	mmap(PROT_WRITE)
+ *		mprotect(PROT_READ)
+ *		mprotect(PROT_EXEC)
+ *
+ * But allows the following:
+ *
+ *	d)	mmap(PROT_READ | PROT_EXEC)
+ *		mmap(PROT_READ | PROT_EXEC | PROT_BTI)
+ *
+ * This is only applicable if the user has set the Memory-Deny-Write-Execute
+ * (MDWE) protection mask for the current process.
+ *
+ * @old specifies the VMA flags the VMA originally possessed, and @new the ones
+ * we propose to set.
+ *
+ * Return: false if proposed change is OK, true if not ok and should be denied.
+ */
+static inline bool map_deny_write_exec(unsigned long old, unsigned long new)
+{
+	/* If MDWE is disabled, we have nothing to deny. */
+	if (!test_bit(MMF_HAS_MDWE, &current->mm->flags))
+		return false;
+
+	/* If the new VMA is not executable, we have nothing to deny. */
+	if (!(new & VM_EXEC))
+		return false;
+
+	/* Under MDWE we do not accept newly writably executable VMAs... */
+	if (new & VM_WRITE)
+		return true;
+
+	/* ...nor previously non-executable VMAs becoming executable. */
+	if (!(old & VM_EXEC))
+		return true;
+
+	return false;
+}
+
+static inline int mapping_map_writable(struct address_space *mapping)
+{
+	int c = atomic_read(&mapping->i_mmap_writable);
+
+	/* Derived from the raw_atomic_inc_unless_negative() implementation. */
+	do {
+		if (c < 0)
+			return -EPERM;
+	} while (!__sync_bool_compare_and_swap(&mapping->i_mmap_writable, c, c+1));
+
+	return 0;
+}
+
 #endif	/* __MM_VMA_INTERNAL_H */
-- 
2.47.1



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] mm: make mmap_region() internal
  2024-12-12 15:36 ` [RFC PATCH 2/2] mm: make mmap_region() internal Lorenzo Stoakes
@ 2024-12-12 15:45   ` Matthew Wilcox
  2024-12-12 16:48     ` Lorenzo Stoakes
  0 siblings, 1 reply; 8+ messages in thread
From: Matthew Wilcox @ 2024-12-12 15:45 UTC (permalink / raw)
  To: Lorenzo Stoakes
  Cc: Andrew Morton, Liam R . Howlett, Thomas Bogendoerfer,
	Vlastimil Babka, Jann Horn, linux-mm, linux-kernel, linux-mips

On Thu, Dec 12, 2024 at 03:36:47PM +0000, Lorenzo Stoakes wrote:
> +++ b/mm/vma.h
> @@ -242,9 +242,9 @@ bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
>  int mm_take_all_locks(struct mm_struct *mm);
>  void mm_drop_all_locks(struct mm_struct *mm);
>  
> -unsigned long __mmap_region(struct file *file, unsigned long addr,
> -		unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
> -		struct list_head *uf);
> +unsigned long mmap_region(struct file *file, unsigned long addr,
> +			  unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
> +			  struct list_head *uf);

Please don't line up the arguments with the paren.  Just leave it as two
tabs.



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 2/2] mm: make mmap_region() internal
  2024-12-12 15:45   ` Matthew Wilcox
@ 2024-12-12 16:48     ` Lorenzo Stoakes
  0 siblings, 0 replies; 8+ messages in thread
From: Lorenzo Stoakes @ 2024-12-12 16:48 UTC (permalink / raw)
  To: Matthew Wilcox
  Cc: Andrew Morton, Liam R . Howlett, Thomas Bogendoerfer,
	Vlastimil Babka, Jann Horn, linux-mm, linux-kernel, linux-mips

On Thu, Dec 12, 2024 at 03:45:16PM +0000, Matthew Wilcox wrote:
> On Thu, Dec 12, 2024 at 03:36:47PM +0000, Lorenzo Stoakes wrote:
> > +++ b/mm/vma.h
> > @@ -242,9 +242,9 @@ bool vma_wants_writenotify(struct vm_area_struct *vma, pgprot_t vm_page_prot);
> >  int mm_take_all_locks(struct mm_struct *mm);
> >  void mm_drop_all_locks(struct mm_struct *mm);
> >
> > -unsigned long __mmap_region(struct file *file, unsigned long addr,
> > -		unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
> > -		struct list_head *uf);
> > +unsigned long mmap_region(struct file *file, unsigned long addr,
> > +			  unsigned long len, vm_flags_t vm_flags, unsigned long pgoff,
> > +			  struct list_head *uf);
>
> Please don't line up the arguments with the paren.  Just leave it as two
> tabs.
>

Ack, emacs likes to do this, will tweak on respin assuming mips guys
confirm that idea works!


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal
  2024-12-12 15:36 [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal Lorenzo Stoakes
  2024-12-12 15:36 ` [RFC PATCH 1/2] mips: vdso: prefer do_mmap() to mmap_region() Lorenzo Stoakes
  2024-12-12 15:36 ` [RFC PATCH 2/2] mm: make mmap_region() internal Lorenzo Stoakes
@ 2024-12-17  8:23 ` Thomas Bogendoerfer
  2024-12-17 14:11   ` Liam R. Howlett
  2025-01-02 11:46   ` Lorenzo Stoakes
  2 siblings, 2 replies; 8+ messages in thread
From: Thomas Bogendoerfer @ 2024-12-17  8:23 UTC (permalink / raw)
  To: Lorenzo Stoakes
  Cc: Andrew Morton, Liam R . Howlett, Vlastimil Babka, Jann Horn,
	linux-mm, linux-kernel, linux-mips

On Thu, Dec 12, 2024 at 03:36:45PM +0000, Lorenzo Stoakes wrote:
> Currently the only user of mmap_region() outside of the memory management
> code is the MIPS VDSO implementation.
> 
> This uses mmap_region() to map a 'delay slot emulation page' at the top of
> the stack which is read-only and executable.
> 
> This mapping requires that an already-acquired mmap write lock is utilised
> and that uffd and populate logic is ignored. This rules out vm_mmap(),
> however do_mmap() fits the bill.
> 
> Adapt this code to use do_mmap() and then once done, make mmap_region()
> internal and userland testable, and avoid any other uses of mmap_region(),
> which is absolutely and strictly an internal mm function which bypasses a
> great number of checks and logic.
> 
> REVIEWERS NOTES:
> 
> Thomas - I lack the hardware or set up to test this beyond a simple
> cross-compilation test, so I need some input from you MIPS guys as to
> whether this is workable.
> 
> I've therefore sent this as an RFC so we can be sure this is suitable!
> Please could you check to make sure this change is OK and I haven't missed
> anything?

conversation looks correct, but this patch doesn't apply to upstream v6.13-rc1.
Which tree are you using ?

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal
  2024-12-17  8:23 ` [RFC PATCH 0/2] mm: update mips to use do_mmap(), " Thomas Bogendoerfer
@ 2024-12-17 14:11   ` Liam R. Howlett
  2025-01-02 11:46   ` Lorenzo Stoakes
  1 sibling, 0 replies; 8+ messages in thread
From: Liam R. Howlett @ 2024-12-17 14:11 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Lorenzo Stoakes, Andrew Morton, Vlastimil Babka, Jann Horn,
	linux-mm, linux-kernel, linux-mips

* Thomas Bogendoerfer <tsbogend@alpha.franken.de> [241217 03:25]:
> On Thu, Dec 12, 2024 at 03:36:45PM +0000, Lorenzo Stoakes wrote:
> > Currently the only user of mmap_region() outside of the memory management
> > code is the MIPS VDSO implementation.
> > 
> > This uses mmap_region() to map a 'delay slot emulation page' at the top of
> > the stack which is read-only and executable.
> > 
> > This mapping requires that an already-acquired mmap write lock is utilised
> > and that uffd and populate logic is ignored. This rules out vm_mmap(),
> > however do_mmap() fits the bill.
> > 
> > Adapt this code to use do_mmap() and then once done, make mmap_region()
> > internal and userland testable, and avoid any other uses of mmap_region(),
> > which is absolutely and strictly an internal mm function which bypasses a
> > great number of checks and logic.
> > 
> > REVIEWERS NOTES:
> > 
> > Thomas - I lack the hardware or set up to test this beyond a simple
> > cross-compilation test, so I need some input from you MIPS guys as to
> > whether this is workable.
> > 
> > I've therefore sent this as an RFC so we can be sure this is suitable!
> > Please could you check to make sure this change is OK and I haven't missed
> > anything?
> 
> conversation looks correct, but this patch doesn't apply to upstream v6.13-rc1.
> Which tree are you using ?

He's out right now, but generally he works on mm-unstable.  It doesn't
apply cleanly there either, so my guess is mm-unstable has been rebased.

We should do this, but there's no rush.

Thanks,
Liam


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal
  2024-12-17  8:23 ` [RFC PATCH 0/2] mm: update mips to use do_mmap(), " Thomas Bogendoerfer
  2024-12-17 14:11   ` Liam R. Howlett
@ 2025-01-02 11:46   ` Lorenzo Stoakes
  1 sibling, 0 replies; 8+ messages in thread
From: Lorenzo Stoakes @ 2025-01-02 11:46 UTC (permalink / raw)
  To: Thomas Bogendoerfer
  Cc: Andrew Morton, Liam R . Howlett, Vlastimil Babka, Jann Horn,
	linux-mm, linux-kernel, linux-mips

On Tue, Dec 17, 2024 at 09:23:07AM +0100, Thomas Bogendoerfer wrote:
> On Thu, Dec 12, 2024 at 03:36:45PM +0000, Lorenzo Stoakes wrote:
> > Currently the only user of mmap_region() outside of the memory management
> > code is the MIPS VDSO implementation.
> >
> > This uses mmap_region() to map a 'delay slot emulation page' at the top of
> > the stack which is read-only and executable.
> >
> > This mapping requires that an already-acquired mmap write lock is utilised
> > and that uffd and populate logic is ignored. This rules out vm_mmap(),
> > however do_mmap() fits the bill.
> >
> > Adapt this code to use do_mmap() and then once done, make mmap_region()
> > internal and userland testable, and avoid any other uses of mmap_region(),
> > which is absolutely and strictly an internal mm function which bypasses a
> > great number of checks and logic.
> >
> > REVIEWERS NOTES:
> >
> > Thomas - I lack the hardware or set up to test this beyond a simple
> > cross-compilation test, so I need some input from you MIPS guys as to
> > whether this is workable.
> >
> > I've therefore sent this as an RFC so we can be sure this is suitable!
> > Please could you check to make sure this change is OK and I haven't missed
> > anything?
>
> conversation looks correct, but this patch doesn't apply to upstream v6.13-rc1.
> Which tree are you using ?

Thanks, yeah mm-unstable as Liam points out but clearly not the tip one :)

Let me rebase and resend. Thanks!

>
> Thomas.
>
> --
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea.                                                [ RFC1925, 2.3 ]
>


^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2025-01-02 11:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-12 15:36 [RFC PATCH 0/2] mm: update mips to use do_mmap(), make mmap_region() internal Lorenzo Stoakes
2024-12-12 15:36 ` [RFC PATCH 1/2] mips: vdso: prefer do_mmap() to mmap_region() Lorenzo Stoakes
2024-12-12 15:36 ` [RFC PATCH 2/2] mm: make mmap_region() internal Lorenzo Stoakes
2024-12-12 15:45   ` Matthew Wilcox
2024-12-12 16:48     ` Lorenzo Stoakes
2024-12-17  8:23 ` [RFC PATCH 0/2] mm: update mips to use do_mmap(), " Thomas Bogendoerfer
2024-12-17 14:11   ` Liam R. Howlett
2025-01-02 11:46   ` Lorenzo Stoakes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox