Messages in this thread Patch in this message | | | From | Chen Wandun <> | Subject | [PATCH 4/4] mm/shmem: rework calculation of inflated_addr in shmem_get_unmapped_area | Date | Wed, 1 Jun 2022 20:44:17 +0800 |
| |
In function shmem_get_unmapped_area, inflated_offset and offset are unsigned long, it will result in underflow when offset below inflated_offset, a little confusing, no functional change.
Signed-off-by: Chen Wandun <chenwandun@huawei.com> --- mm/shmem.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c index ca04f3975a8a..f12163bd0f69 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2201,9 +2201,12 @@ unsigned long shmem_get_unmapped_area(struct file *file, return addr; inflated_offset = inflated_addr & (HPAGE_PMD_SIZE-1); - inflated_addr += offset - inflated_offset; - if (inflated_offset > offset) + if (offset > inflated_offset) + inflated_addr += offset - inflated_offset; + else if (offset < inflated_offset) { + inflated_addr -= inflated_offset - offset; inflated_addr += HPAGE_PMD_SIZE; + } if (inflated_addr > TASK_SIZE - len) return addr; -- 2.25.1
| |