[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 6 Jun 2012 16:15:00 +0800
From: Lai Jiangshan <laijs@...fujitsu.com>
To: unlisted-recipients:; (no To-header on input)
Cc: Ingo Molnar <mingo@...e.hu>,
Peter Zijlstra <a.p.zijlstra@...llo.nl>,
Tejun Heo <tj@...nel.org>, Al Viro <viro@...iv.linux.org.uk>,
"H. Peter Anvin" <hpa@...ux.intel.com>,
Ian Campbell <ian.campbell@...rix.com>,
Paul Gortmaker <paul.gortmaker@...driver.com>,
Mel Gorman <mgorman@...e.de>, Michal Hocko <mhocko@...e.cz>,
linux-mm@...ck.org, linux-kernel@...r.kernel.org,
Lai Jiangshan <laijs@...fujitsu.com>
Subject: [PATCH 6/7] highmem: remove ->virtual from struct page_address_map
The virtual address is (void *)PKMAP_ADDR(kmap_index),
But struct page_address_map is always allocated with the same index
(in page_address_maps) as kmap index.
So the virtual address is (void *)PKMAP_ADDR(pam - page_address_maps) here,
the ->virtual is not needed.
Signed-off-by: Lai Jiangshan <laijs@...fujitsu.com>
---
mm/highmem.c | 17 ++++++-----------
1 files changed, 6 insertions(+), 11 deletions(-)
diff --git a/mm/highmem.c b/mm/highmem.c
index bd2b9d3..6f028cb 100644
--- a/mm/highmem.c
+++ b/mm/highmem.c
@@ -309,7 +309,6 @@ EXPORT_SYMBOL(kunmap_high);
*/
struct page_address_map {
struct page *page;
- void *virtual;
struct list_head list;
};
@@ -339,6 +338,7 @@ void *page_address(const struct page *page)
unsigned long flags;
void *ret;
struct page_address_slot *pas;
+ struct page_address_map *pam;
if (!PageHighMem(page))
return lowmem_page_address(page);
@@ -346,18 +346,14 @@ void *page_address(const struct page *page)
pas = page_slot(page);
ret = NULL;
spin_lock_irqsave(&pas->lock, flags);
- if (!list_empty(&pas->lh)) {
- struct page_address_map *pam;
-
- list_for_each_entry(pam, &pas->lh, list) {
- if (pam->page == page) {
- ret = pam->virtual;
- goto done;
- }
+ list_for_each_entry(pam, &pas->lh, list) {
+ if (pam->page == page) {
+ ret = (void *)PKMAP_ADDR(pam - page_address_maps);
+ break;
}
}
-done:
spin_unlock_irqrestore(&pas->lock, flags);
+
return ret;
}
@@ -370,7 +366,6 @@ static void set_high_page_map(struct page *page, unsigned int nr)
struct page_address_map *pam = &page_address_maps[nr];
pam->page = page;
- pam->virtual = (void *)PKMAP_ADDR(nr);
spin_lock_irqsave(&pas->lock, flags);
list_add_tail(&pam->list, &pas->lh);
--
1.7.7
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists