Message ID | 20220601124417.2872001-5-chenwandun@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | a few cleanup and bugfixes about shmem | expand |
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;
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(-)