lkml.org 
[lkml]   [2006]   [Jan]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectUse of "high_memory" in iounmap
Hi!

While using Linux in a virtualization environment (L4), I found a
strange inconsistency in "iounmap" regarding the use of the
"high_memory" variable.

According to [1]: "high_memory is the virtual address where high memory
begins", so high_memory contains the first address in high memory.

Accordingly, also linux-source/mm/memory.c, ca. line 72 says:
"A number of key systems in x86 including ioremap() rely on the
assumption that high_memory defines the upper bound on direct map
memory, then end of ZONE_NORMAL. Under CONFIG_DISCONTIG this means that
max_low_pfn and highstart_pfn must be the same; there must be no gap
between ZONE_NORMAL and ZONE_HIGHMEM."

(BTW: CONFIG_DISCONTIG is no longer existent / has been renamed).

Obviously, this is applied correctly, for example in
linux-source/arch/i386/mm/ioremap.c in function "__ioremap":
/*
* Don't allow anybody to remap normal RAM that we're using..
*/
if (phys_addr <= virt_to_phys(high_memory - 1))

However, in linux-source/arch/i386/mm/ioremap.c in "iounmap" oviously
the meaning of "high_memory" is understood differently:
if ((void __force *)addr <= high_memory) return;


In that case (by means of <=) we could not unmap again the "first"
mapping in high memory: the first mapping usually is being mapped to the
start of the high memory and thus is addr == high_memory in the iounmap
call. (This was the case in which we found the inconsistency).

For this reason in my opinion it rather should be:
if ((void __force *)addr < high_memory) return;

What do you think?

Regards,
Oskar.

[1] Mel Gorman, Code Commentary On The Linux Virtual Memory Manager
p. 24, http://www.csn.ul.ie/~mel/projects/vm/guide/pdf/code.pdf

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2006-01-25 11:30    [W:2.132 / U:0.412 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site