lkml.org 
[lkml]   [2012]   [Jun]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 6/7] highmem: remove ->virtual from struct page_address_map
Date
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@cn.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


\
 
 \ /
  Last update: 2012-06-06 11:01    [W:0.042 / U:0.480 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site