diff options
| author | David S. Miller <davem@davemloft.net> | 2020-01-19 22:10:04 +0100 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2020-01-19 22:10:04 +0100 |
| commit | b3f7e3f23a763ccaae7b52d88d2c91e66c80d406 (patch) | |
| tree | e00e90eb161305ed9895315ba12e30ac17de9523 /mm/shmem.c | |
| parent | 4ee9e6e027c06eb1dd1cdbe025d461e407ece755 (diff) | |
| parent | 7008ee121089b8193aea918b98850fe87d996508 (diff) | |
| download | linux-b3f7e3f23a763ccaae7b52d88d2c91e66c80d406.tar.bz2 | |
Merge ra.kernel.org:/pub/scm/linux/kernel/git/netdev/net
Diffstat (limited to 'mm/shmem.c')
| -rw-r--r-- | mm/shmem.c | 7 |
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) |