diff options
author | Lorenzo Stoakes <lstoakes@gmail.com> | 2016-10-13 01:20:19 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-12-17 21:55:17 +0100 |
commit | 079d9ea86202777cd57c69879a5ba8db6a2c1b1e (patch) | |
tree | 17bc1be04948e68d213297e2f2be79c82df692b4 /mm | |
parent | 2b8143d6874b385c79b60257bb0f0ad328ee2194 (diff) | |
download | linux-artik7-079d9ea86202777cd57c69879a5ba8db6a2c1b1e.tar.gz linux-artik7-079d9ea86202777cd57c69879a5ba8db6a2c1b1e.tar.bz2 linux-artik7-079d9ea86202777cd57c69879a5ba8db6a2c1b1e.zip |
mm: replace access_remote_vm() write parameter with gup_flags
commit 6347e8d5bcce33fc36e651901efefbe2c93a43ef upstream.
This removes the 'write' argument from access_remote_vm() and replaces
it with 'gup_flags' as use of this function previously silently implied
FOLL_FORCE, whereas after this patch callers explicitly pass this flag.
We make this explicit as use of FOLL_FORCE can result in surprising
behaviour (and hence bugs) within the mm subsystem.
Signed-off-by: Lorenzo Stoakes <lstoakes@gmail.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Ben Hutchings <ben.hutchings@codethink.co.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'mm')
-rw-r--r-- | mm/memory.c | 11 | ||||
-rw-r--r-- | mm/nommu.c | 7 |
2 files changed, 6 insertions, 12 deletions
diff --git a/mm/memory.c b/mm/memory.c index 1a0d727687d0..fa752df6dc85 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -3777,19 +3777,14 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, * @addr: start address to access * @buf: source or destination buffer * @len: number of bytes to transfer - * @write: whether the access is a write + * @gup_flags: flags modifying lookup behaviour * * The caller must hold a reference on @mm. */ int access_remote_vm(struct mm_struct *mm, unsigned long addr, - void *buf, int len, int write) + void *buf, int len, unsigned int gup_flags) { - unsigned int flags = FOLL_FORCE; - - if (write) - flags |= FOLL_WRITE; - - return __access_remote_vm(NULL, mm, addr, buf, len, flags); + return __access_remote_vm(NULL, mm, addr, buf, len, gup_flags); } /* diff --git a/mm/nommu.c b/mm/nommu.c index 6ffc6be4344f..2360546db065 100644 --- a/mm/nommu.c +++ b/mm/nommu.c @@ -1967,15 +1967,14 @@ static int __access_remote_vm(struct task_struct *tsk, struct mm_struct *mm, * @addr: start address to access * @buf: source or destination buffer * @len: number of bytes to transfer - * @write: whether the access is a write + * @gup_flags: flags modifying lookup behaviour * * The caller must hold a reference on @mm. */ int access_remote_vm(struct mm_struct *mm, unsigned long addr, - void *buf, int len, int write) + void *buf, int len, unsigned int gup_flags) { - return __access_remote_vm(NULL, mm, addr, buf, len, - write ? FOLL_WRITE : 0); + return __access_remote_vm(NULL, mm, addr, buf, len, gup_flags); } /* |