All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lorenzo Stoakes (ARM)" <ljs@kernel.org>
To: Anastasios Papagiannis <tasos.papagiannnis@gmail.com>
Cc: david@kernel.org, akpm@linux-foundation.org, andrii@kernel.org,
	 ast@kernel.org, bpf@vger.kernel.org, brauner@kernel.org,
	daniel@iogearbox.net,  eddyz87@gmail.com, kpsingh@kernel.org,
	linux-fsdevel@vger.kernel.org,  linux-kernel@vger.kernel.org,
	linux-mm@kvack.org, matt@bobrowski.net, memxor@gmail.com,
	 song@kernel.org, sun.jian.kdev@gmail.com,
	utilityemal77@gmail.com,  viro@zeniv.linux.org.uk
Subject: Re: [PATCH bpf-next v4 1/7] mm: Add copy_remote_mm_str()
Date: Mon, 7 Sep 2026 15:01:30 +0100	[thread overview]
Message-ID: <ap7CocZyy6K9QYMp@gremlin> (raw)
In-Reply-To: <20260907134101.424017-1-tasos.papagiannnis@gmail.com>

On Mon, Sep 07, 2026 at 04:41:01PM +0300, Anastasios Papagiannis wrote:
> > We have this check in copy_remote_vm_str(). Why are we performing the check now
> > twice?
>
> > It should either go only into __copy_remote_mm_str(), or if there a reason to
> > have it before get_task_mm(), it should go into copy_remote_mm_str(). Same
> > applies to the memory.c case.
>
> Yes, this makes sense. I will fix that.
>
> > What's more annoying is that both implementations of copy_remote_vm_str() are
> > identical, and both implementations of copy_remote_mm_str() are nearly identical
> > (just dropping the gup_flags for nommu). I'd like to avoid duplicating code for
> > nommu.
>
> > If we could export __copy_remote_vm_str(mm, addr, buf, len, gup_flags) for both
> > cases, we could instead provide a single implementation for copy_remote_vm_str()
> > and copy_remote_mm_str() e.g., in mm.h? (I'd prefer somewhere else, but we don't
> > seem to have a good git for memory.c + nommu.c shared stuff)
>
> Another idea can be:
> mm/memory.c: MMU implementation of __copy_remote_mm_str()
> mm/nommu.c: NOMMU implementation of __copy_remote_mm_str()
> mm/internal.h: declaration of __copy_remote_mm_str()
> include/linux/mm.h: declaration of copy_remote_mm_str() and  copy_remote_vm_str()
> mm/util.c: shared implementation for copy_remote_mm_str() and copy_remote_vm_str()

I mean copy_remote_vm_str() is tiny, so maybe just inline it in mm.h?

get_task_mm() is available from include/linux/sched/mm.h anyway so it's not a
problem to use that there.

>
> This allows us to remove the duplicate code. Does this sound reasonable?
>
> > Now, that's also not completely nice, as I don't want us to EXPORT
> > __copy_remote_vm_str() ... given that these functions are "#ifdef
> > CONFIG_BPF_SYSCALL" could we EXPORT_SYMBOL_FOR_MODULES?
>
> Now copy_remote_vm_str() is EXPORT_SYMBOL_GPL. In this series, we use
> copy_remote_mm_str() without the need to export that. Why do we need to
> consider exporting __copy_remote_vm_str()?

I don't think that's a problem, because all copy_remote_vm_str() is is:

- get_task_mm() (already GPL exported)
- invokes __copy_remote_vm_str()

It already requires that the caller has pinned mm, and I guess the one key
difference is you can't pass some stupid parameter like NULL mm and have it
break.

But if you're kernel code you can NULL ptr deref without anybody's help so :)

The other concern would be accessing a remote mm but... that's literally the
whole point of the function and we already export that.

I guess the other thing is mm copy_remote_vm_str() is only available if
CONFIG_BPF_SYSCALL is enabled but that's pretty much any sensible kernel config
so meh doesn't matter really.

>
> --
> Thanks,
> -Anastasios

--
Cheers, Lorenzo


  reply	other threads:[~2026-09-07 14:01 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-04 14:53 [PATCH bpf-next v4 0/7] bpf: Add user memory access kfuncs for mm_struct Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 1/7] mm: Add copy_remote_mm_str() Anastasios Papagiannis
2026-09-07 10:59   ` David Hildenbrand (Arm)
2026-09-07 13:41     ` Anastasios Papagiannis
2026-09-07 14:01       ` Lorenzo Stoakes (ARM) [this message]
2026-09-07 14:04       ` David Hildenbrand (Arm)
2026-09-04 14:53 ` [PATCH bpf-next v4 2/7] exec: Clear bprm->mm before dropping its reference Anastasios Papagiannis
2026-09-04 15:20   ` sashiko-bot
2026-09-04 15:30     ` Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 3/7] bpf: Add user memory access kfuncs for mm_struct Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 4/7] bpf: Allow reads through trusted-or-null BTF pointers Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 5/7] selftests/bpf: Cover trusted-or-null BTF pointer reads Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 6/7] bpf: Mark linux_binprm->mm as trusted-or-null Anastasios Papagiannis
2026-09-04 14:53 ` [PATCH bpf-next v4 7/7] selftests/bpf: Test mm_struct user memory kfuncs with linux_binprm Anastasios Papagiannis
2026-09-04 18:26 ` [PATCH bpf-next v4 0/7] bpf: Add user memory access kfuncs for mm_struct Andrew Morton
2026-09-07  6:58   ` Anastasios Papagiannis

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ap7CocZyy6K9QYMp@gremlin \
    --to=ljs@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=andrii@kernel.org \
    --cc=ast@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=brauner@kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=david@kernel.org \
    --cc=eddyz87@gmail.com \
    --cc=kpsingh@kernel.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matt@bobrowski.net \
    --cc=memxor@gmail.com \
    --cc=song@kernel.org \
    --cc=sun.jian.kdev@gmail.com \
    --cc=tasos.papagiannnis@gmail.com \
    --cc=utilityemal77@gmail.com \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.