summaryrefslogtreecommitdiffstats
path: root/mm/shmem.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2020-01-20 02:08:11 +0100
committerDave Airlie <airlied@redhat.com>2020-01-20 02:42:57 +0100
commit3d4743131b8de970faa4b979ead0fadfe5d2de9d (patch)
tree68e948c2d94d48598dd37e31bb654feb0b43ae4a /mm/shmem.c
parentMerge tag 'amd-drm-next-5.6-2020-01-17' of git://people.freedesktop.org/~agd5... (diff)
parentLinux 5.5-rc7 (diff)
downloadlinux-3d4743131b8de970faa4b979ead0fadfe5d2de9d.tar.xz
linux-3d4743131b8de970faa4b979ead0fadfe5d2de9d.zip
Backmerge v5.5-rc7 into drm-next
msm needs 5.5-rc4, go to the latest. Signed-off-by: Dave Airlie <airlied@redhat.com>
Diffstat (limited to 'mm/shmem.c')
-rw-r--r--mm/shmem.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/shmem.c b/mm/shmem.c
index 165fa6332993..8793e8cc1a48 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2107,9 +2107,10 @@ unsigned long shmem_get_unmapped_area(struct file *file,
/*
* Our priority is to support MAP_SHARED mapped hugely;
* and support MAP_PRIVATE mapped hugely too, until it is COWed.
- * But if caller specified an address hint, respect that as before.
+ * But if caller specified an address hint and we allocated area there
+ * successfully, respect that as before.
*/
- if (uaddr)
+ if (uaddr == addr)
return addr;
if (shmem_huge != SHMEM_HUGE_FORCE) {
@@ -2143,7 +2144,7 @@ unsigned long shmem_get_unmapped_area(struct file *file,
if (inflated_len < len)
return addr;
- inflated_addr = get_area(NULL, 0, inflated_len, 0, flags);
+ inflated_addr = get_area(NULL, uaddr, inflated_len, 0, flags);
if (IS_ERR_VALUE(inflated_addr))
return addr;
if (inflated_addr & ~PAGE_MASK)