Re: 2.6.15-rc1-mm2 0x414 Bad page states

From: Nick Piggin
Date: Fri Nov 18 2005 - 23:28:20 EST


Rafael J. Wysocki wrote:
Hi,

On Friday, 18 of November 2005 21:12, Dominik Brodowski wrote:

[4294995.698000] Bad page state at free_hot_cold_page (in process 'gaim', page c15eb020)
[4294995.698000] flags:0x80000414 mapping:00000000 mapcount:0 count:0
[4294995.698000] vm_flags:0x800fb snd_pcm_mmap_data_open+0x0/0x11 snd_pcm_mmap_data_nopage+0x0/0xa7


I've got pretty much the same:

Nov 18 21:23:22 albercik kernel: Bad page state at free_hot_cold_page (in process 'artsd', page ffff8100019613b8)
Nov 18 21:23:22 albercik kernel: flags:0x4000000000000414 mapping:0000000000000000 mapcount:0 count:0
Nov 18 21:23:22 albercik kernel: vm_flags:0x800fb snd_pcm_mmap_data_open+0x0/0x20 [snd_pcm] snd_pcm_mmap_data_nopage+0x0/0x150 [snd_pcm]
Nov 18 21:23:22 albercik kernel: Backtrace:

These look like they want the following patch. Does it help?

--
SUSE Labs, Novell Inc.

Index: linux-2.6/sound/core/pcm_native.c
===================================================================
--- linux-2.6.orig/sound/core/pcm_native.c 2005-10-09 18:28:51.000000000 +1000
+++ linux-2.6/sound/core/pcm_native.c 2005-11-19 15:29:59.000000000 +1100
@@ -2949,8 +2949,7 @@ static struct page * snd_pcm_mmap_status
return NOPAGE_OOM;
runtime = substream->runtime;
page = virt_to_page(runtime->status);
- if (!PageReserved(page))
- get_page(page);
+ get_page(page);
if (type)
*type = VM_FAULT_MINOR;
return page;
@@ -2992,8 +2991,7 @@ static struct page * snd_pcm_mmap_contro
return NOPAGE_OOM;
runtime = substream->runtime;
page = virt_to_page(runtime->control);
- if (!PageReserved(page))
- get_page(page);
+ get_page(page);
if (type)
*type = VM_FAULT_MINOR;
return page;
@@ -3066,8 +3064,7 @@ static struct page *snd_pcm_mmap_data_no
vaddr = runtime->dma_area + offset;
page = virt_to_page(vaddr);
}
- if (!PageReserved(page))
- get_page(page);
+ get_page(page);
if (type)
*type = VM_FAULT_MINOR;
return page;