public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* failure in /mm/memory.c
@ 2004-10-16 11:32 christophpfister
  2004-10-16 12:09 ` William Lee Irwin III
  0 siblings, 1 reply; 4+ messages in thread
From: christophpfister @ 2004-10-16 11:32 UTC (permalink / raw)
  To: linux-kernel

hello

i found a failure in function remap_pte_range in memory.c

static inline void remap_pte_range(...)
{
unsigned long end;
unsigned long pfn;
address &= ~PMD_MASK;
end = address + size;
if (end > PMD_SIZE)
    end = PMD_SIZE;
pfn = phys_addr >> PAGE_SHIFT;
do {
    BUG_ON(!pte_none(*pte));
    if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn))) *****
      set_pte(pte, pfn_pte(pfn, prot));
    address += PAGE_SIZE;
    pfn++;
    pte++;
    } while (address && (address < end));
}

by ****

the condition is wrong, because it just maps the page, if it's invalid or
reserved

correct: if (!(pfn_valid(pfn) || PageReserved(pfn_to_page(pfn))))

(it doesn't seems to be used, otherwise there must be bugs)

Yours sincerely,

Christoph Pfister


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: failure in /mm/memory.c
  2004-10-16 11:32 failure in /mm/memory.c christophpfister
@ 2004-10-16 12:09 ` William Lee Irwin III
  2004-10-17  2:33   ` Alan Cox
  0 siblings, 1 reply; 4+ messages in thread
From: William Lee Irwin III @ 2004-10-16 12:09 UTC (permalink / raw)
  To: christophpfister; +Cc: linux-kernel

On Sat, Oct 16, 2004 at 12:32:35PM +0100, christophpfister@bluemail.ch wrote:
> i found a failure in function remap_pte_range in memory.c
> static inline void remap_pte_range(...)
> {
> unsigned long end;
> unsigned long pfn;
> address &= ~PMD_MASK;
> end = address + size;
> if (end > PMD_SIZE)
>     end = PMD_SIZE;
> pfn = phys_addr >> PAGE_SHIFT;
> do {
>     BUG_ON(!pte_none(*pte));
>     if (!pfn_valid(pfn) || PageReserved(pfn_to_page(pfn))) *****
>       set_pte(pte, pfn_pte(pfn, prot));
>     address += PAGE_SIZE;
>     pfn++;
>     pte++;
>     } while (address && (address < end));
> }

Well, there are issues...

On Sat, Oct 16, 2004 at 12:32:35PM +0100, christophpfister@bluemail.ch wrote:
> by ****
> the condition is wrong, because it just maps the page, if it's invalid or
> reserved
> correct: if (!(pfn_valid(pfn) || PageReserved(pfn_to_page(pfn))))
> (it doesn't seems to be used, otherwise there must be bugs)

This isn't one of them. De Morgan teach us that what you wrote is just
	!pfn_valid(pfn) && !PageReserved(pfn_to_page(pfn))
which would evaluate pfn_to_page() on an invalid pfn, and so nonsensical.


-- wli

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: failure in /mm/memory.c
  2004-10-16 12:09 ` William Lee Irwin III
@ 2004-10-17  2:33   ` Alan Cox
  2004-10-17  3:40     ` William Lee Irwin III
  0 siblings, 1 reply; 4+ messages in thread
From: Alan Cox @ 2004-10-17  2:33 UTC (permalink / raw)
  To: William Lee Irwin III; +Cc: christophpfister, Linux Kernel Mailing List

On Sad, 2004-10-16 at 13:09, William Lee Irwin III wrote:
> On Sat, Oct 16, 2004 at 12:32:35PM +0100, christophpfister@bluemail.ch wrote:
> > i found a failure in function remap_pte_range in memory.c

I think the bug is in the comment not the code !


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: failure in /mm/memory.c
  2004-10-17  2:33   ` Alan Cox
@ 2004-10-17  3:40     ` William Lee Irwin III
  0 siblings, 0 replies; 4+ messages in thread
From: William Lee Irwin III @ 2004-10-17  3:40 UTC (permalink / raw)
  To: Alan Cox; +Cc: christophpfister, Linux Kernel Mailing List

On Sat, Oct 16, 2004 at 12:32:35PM +0100, christophpfister@bluemail.ch wrote:
>>> i found a failure in function remap_pte_range in memory.c

On Sad, 2004-10-16 at 13:09, William Lee Irwin III wrote:
[...]

On Sun, Oct 17, 2004 at 03:33:39AM +0100, Alan Cox wrote:
> I think the bug is in the comment not the code !

I suppose the comment is a bit off, sure. I'll send an update atop the
remap_pfn_range() patch series akpm has in -mm to correct it.


-- wli

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2004-10-17  3:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-10-16 11:32 failure in /mm/memory.c christophpfister
2004-10-16 12:09 ` William Lee Irwin III
2004-10-17  2:33   ` Alan Cox
2004-10-17  3:40     ` William Lee Irwin III

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox