All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Stoakes <lstoakes@gmail.com>
To: Alistair Popple <apopple@nvidia.com>
Cc: "Yu, Fenghua" <fenghua.yu@intel.com>,
	Vinod Koul <vkoul@kernel.org>,
	"Jiang, Dave" <dave.jiang@intel.com>,
	"dmaengine@vger.kernel.org" <dmaengine@vger.kernel.org>,
	"Zhu, Tony" <tony.zhu@intel.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	"linux-mm@kvack.org" <linux-mm@kvack.org>,
	Christoph Hellwig <hch@infradead.org>,
	"Shankar, Ravi V" <ravi.v.shankar@intel.com>
Subject: Re: [PATCH 09/17] mm: export access_remote_vm() symbol
Date: Wed, 4 Jan 2023 21:05:11 +0000	[thread overview]
Message-ID: <Y7XqBwewsUnAP4uP@lucifer> (raw)
In-Reply-To: <Y7XZ8zY3KIRDlu/f@lucifer>

On Wed, Jan 04, 2023 at 07:56:35PM +0000, Lorenzo Stoakes wrote:
> Another question is - why can't we:-
>
> 1. mmgrab() [or safely assume we already have a reference] + mmget_not_zero()
> 2. acquire mm read lock to stop VMAs disappearing underneath us and pin pages with get_user_pages_remote()
> 3. copy what we need using e.g. copy_from_user()/copy_to_user()
> 4. unwind

OK looking at __access_remote_vm() I just accidentally described exactly what it
does other than step 1 :)

Perhaps then the answer is a wrapper that gets the reference before
invoking __access_remote_vm()? I guess we could assume grab there.

It strikes me that access_remote_vm() being quite literally a pass through to
__access_remote_vm() means we could:-

a. change all callers of access_remote_vm() to use __access_remote_vm()
b. Update access_remote_vm() to be safer
c. finally, export access_remote_vm()

e.g.:-

int access_remote_vm(struct mm_struct *mm, unsigned long addr,
		void *buf, int len, unsigned int gup_flags)
{
	int ret;

	if (!mmget_not_zero(mm))
		return 0;

	ret = __access_remote_vm(mm, addr, buf, len, gup_flags);

	mmput(mm);
}
EXPORT_SYMBOL_GPL(access_remote_vm)

  reply	other threads:[~2023-01-04 21:05 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-03 16:34 [PATCH 00/17] Enable DSA 2.0 Event Log and completion record faulting features Fenghua Yu
2023-01-03 16:34 ` [PATCH 01/17] dmaengine: idxd: make misc interrupt one shot Fenghua Yu
2023-01-03 16:34 ` [PATCH 02/17] dmaengine: idxd: add event log size sysfs attribute Fenghua Yu
2023-01-03 16:34 ` [PATCH 03/17] dmaengine: idxd: setup event log configuration Fenghua Yu
2023-01-03 16:34 ` [PATCH 04/17] dmaengine: idxd: add interrupt handling for event log Fenghua Yu
2023-01-03 16:34 ` [PATCH 05/17] dmanegine: idxd: add debugfs for event log dump Fenghua Yu
2023-01-03 16:34 ` [PATCH 06/17] dmaengine: idxd: add per DSA wq workqueue for processing cr faults Fenghua Yu
2023-01-03 16:34 ` [PATCH 07/17] dmaengine: idxd: create kmem cache for event log fault items Fenghua Yu
2023-01-03 16:34 ` [PATCH 08/17] iommu: expose iommu_sva_find() to common header Fenghua Yu
2023-01-03 16:34 ` [PATCH 09/17] mm: export access_remote_vm() symbol Fenghua Yu
2023-01-03 17:45   ` Lorenzo Stoakes
2023-01-03 17:50     ` Lorenzo Stoakes
2023-01-03 19:20       ` Yu, Fenghua
2023-01-03 20:13         ` Lorenzo Stoakes
2023-01-04  5:06           ` Yu, Fenghua
2023-01-04  6:12             ` Alistair Popple
2023-01-04 19:00               ` Yu, Fenghua
2023-01-04 20:00                 ` Lorenzo Stoakes
2023-01-04 19:56               ` Lorenzo Stoakes
2023-01-04 21:05                 ` Lorenzo Stoakes [this message]
2023-01-04 23:57                 ` Alistair Popple
2023-01-05  3:08                   ` Yu, Fenghua
2023-01-05  3:22                     ` Alistair Popple
2023-01-05 20:58                       ` Yu, Fenghua
2023-01-05 21:04                         ` Lorenzo Stoakes
2023-01-05  7:26                   ` Lorenzo Stoakes
2023-01-08 17:36     ` Christoph Hellwig
2023-03-01 23:39       ` Fenghua Yu
2023-01-03 16:34 ` [PATCH 10/17] dmaengine: idxd: process user page faults for completion record Fenghua Yu
2023-01-03 16:34 ` [PATCH 11/17] dmaengine: idxd: add descs_completed field " Fenghua Yu
2023-01-03 16:35 ` [PATCH 12/17] dmaengine: idxd: process batch descriptor completion record faults Fenghua Yu
2023-01-03 16:35 ` [PATCH 13/17] dmaengine: idxd: add per file user counters for " Fenghua Yu
2023-01-03 16:35 ` [PATCH 14/17] dmaengine: idxd: add a device to represent the file opened Fenghua Yu
2023-01-03 16:35 ` [PATCH 15/17] dmaengine: idxd: expose fault counters to sysfs Fenghua Yu
2023-01-03 16:35 ` [PATCH 16/17] dmaengine: idxd: add pid to exported sysfs attribute for opened file Fenghua Yu
2023-01-03 16:35 ` [PATCH 17/17] dmaengine: idxd: add per wq PRS disable Fenghua Yu
     [not found] <20230103162920.1569002-1-fenghua.yu@intel.com>
2023-01-03 16:29 ` [PATCH 09/17] mm: export access_remote_vm() symbol Fenghua Yu

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=Y7XqBwewsUnAP4uP@lucifer \
    --to=lstoakes@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=apopple@nvidia.com \
    --cc=dave.jiang@intel.com \
    --cc=dmaengine@vger.kernel.org \
    --cc=fenghua.yu@intel.com \
    --cc=hch@infradead.org \
    --cc=linux-mm@kvack.org \
    --cc=ravi.v.shankar@intel.com \
    --cc=tony.zhu@intel.com \
    --cc=vkoul@kernel.org \
    /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.