Thread (30 messages) 30 messages, 7 authors, 2024-11-27

Re: [PATCH 1/3] ima: Remove inode lock

From: Roberto Sassu <hidden>
Date: 2024-10-18 11:57:06
Also in: bpf, linux-fsdevel, linux-integrity, linux-mm, lkml

On Fri, 2024-10-18 at 14:54 +0300, Kirill A. Shutemov wrote:
On Fri, Oct 18, 2024 at 01:22:35PM +0200, Roberto Sassu wrote:
quoted
On Fri, 2024-10-18 at 14:05 +0300, Kirill A. Shutemov wrote:
quoted
On Fri, Oct 18, 2024 at 12:00:22PM +0100, Lorenzo Stoakes wrote:
quoted
+ Liam, Jann

On Fri, Oct 18, 2024 at 01:49:06PM +0300, Kirill A. Shutemov wrote:
quoted
On Fri, Oct 18, 2024 at 11:24:06AM +0200, Roberto Sassu wrote:
quoted
Probably it is hard, @Kirill would there be any way to safely move
security_mmap_file() out of the mmap_lock lock?
What about something like this (untested):
diff --git a/mm/mmap.c b/mm/mmap.c
index dd4b35a25aeb..03473e77d356 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1646,6 +1646,26 @@ SYSCALL_DEFINE5(remap_file_pages, unsigned long, start, unsigned long, size,
 	if (pgoff + (size >> PAGE_SHIFT) < pgoff)
 		return ret;

+	if (mmap_read_lock_killable(mm))
+		return -EINTR;
+
+	vma = vma_lookup(mm, start);
+
+	if (!vma || !(vma->vm_flags & VM_SHARED)) {
+		mmap_read_unlock(mm);
+		return -EINVAL;
+	}
+
+	file = get_file(vma->vm_file);
+
+	mmap_read_unlock(mm);
+
+	ret = security_mmap_file(vma->vm_file, prot, flags);
Accessing VMA fields without any kind of lock is... very much not advised.

I'm guessing you meant to say:

	ret = security_mmap_file(file, prot, flags);

Here? :)
Sure. My bad.

Patch with all fixups:
Thanks a lot! Let's wait a bit until the others have a chance to
comment. Meanwhile, I will test it.

Do you want me to do the final patch, or will you be proposing it?
You can post it if it works:

Signed-off-by: Kirill A. Shutemov <redacted>
Thanks! Ok.

Roberto
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help