[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220605035557.3957759-4-chenwandun@huawei.com>
Date: Sun, 5 Jun 2022 11:55:57 +0800
From: Chen Wandun <chenwandun@...wei.com>
To: <hughd@...gle.com>, <akpm@...ux-foundation.org>,
<linux-mm@...ck.org>, <linux-kernel@...r.kernel.org>,
<willy@...radead.org>, <david@...hat.com>,
<wangkefeng.wang@...wei.com>
Subject: [PATCH v2 3/3] mm/shmem: rework calculation of inflated_addr in shmem_get_unmapped_area
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@...wei.com>
---
mm/shmem.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/mm/shmem.c b/mm/shmem.c
index 5e61692f2d8e..0b6c61a7cbb3 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
Powered by blists - more mailing lists