Messages in this thread Patch in this message | | | From | Chen Wandun <> | Subject | [PATCH v3 3/3] mm/shmem: rework calculation of inflated_addr in shmem_get_unmapped_area | Date | Mon, 6 Jun 2022 11:45:30 +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 48b7172f81d6..ac277b11bdfa 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -2200,9 +2200,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
| |