From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.91] helo=mail.sourceforge.net) by sc8-sf-list1.sourceforge.net with esmtp (Exim 4.30) id 1EwKGS-0003jR-Nh for user-mode-linux-devel@lists.sourceforge.net; Tue, 10 Jan 2006 06:14:20 -0800 Received: from nproxy.gmail.com ([64.233.182.196]) by mail.sourceforge.net with esmtp (Exim 4.44) id 1EwKGS-0000Pw-93 for user-mode-linux-devel@lists.sourceforge.net; Tue, 10 Jan 2006 06:14:20 -0800 Received: by nproxy.gmail.com with SMTP id a27so36392nfc for ; Tue, 10 Jan 2006 06:14:16 -0800 (PST) Message-ID: <39134b110601100614o14112d19r@mail.gmail.com> From: wang lianwei MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_27316_585131.1136902456422" Subject: [uml-devel] The init_maps bug which cause mem map error Sender: user-mode-linux-devel-admin@lists.sourceforge.net Errors-To: user-mode-linux-devel-admin@lists.sourceforge.net List-Unsubscribe: , List-Id: The user-mode Linux development list List-Post: List-Help: List-Subscribe: , List-Archive: Date: Tue, 10 Jan 2006 22:14:16 +0800 To: jdike@addtoit.com, user-mode-linux-devel@lists.sourceforge.net ------=_Part_27316_585131.1136902456422 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline There is a bug In file linux/arch/um/kernel/physmem.c init_mem() functions: *int* *init_maps*(*unsigned* *long* physmem, *unsigned* *long* iomem, *unsigned* *long* highmem) { =09*struct* page *p, *map; =09*unsigned* *long* phys_len, phys_pages, highmem_len, highmem_pages; =09*unsigned* *long* iomem_len, iomem_pages, total_len, total_pages; =09*int* i; =09phys_pages =3D physmem >> PAGE_SHIFT; =09phys_len =3D phys_pages * *sizeof*(*struct* page); =09iomem_pages =3D iomem >> PAGE_SHIFT; =09iomem_len =3D iomem_pages * *sizeof*(*struct* page); =09highmem_pages =3D highmem >> PAGE_SHIFT; =09highmem_len =3D highmem_pages * *sizeof*(*struct* page); =09total_pages =3D phys_pages + iomem_pages + highmem_pages; =09total_len =3D phys_len + iomem_pages + highmem_len; =09*if*(kmalloc_ok){ =09=09map =3D kmalloc(total_len, GFP_KERNEL); =09=09*if*(map =3D=3D NULL) =09=09=09map =3D vmalloc(total_len); =09} =09*else* map =3D alloc_bootmem_low_pages(total_len); =09*if*(map =3D=3D NULL) =09=09*return*(-ENOMEM); =09*for*(i =3D 0; i < total_pages; i++){ =09=09p =3D &map[i]; =09=09set_page_count(p, 0); =09=09SetPageReserved(p); =09=09INIT_LIST_HEAD(&p->list); =09} =09mem_map =3D map; =09max_mapnr =3D total_pages; =09*return*(0); } this line should be total_len =3D phys_len + iomem_len + highmem_len; ------=_Part_27316_585131.1136902456422 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline There is a bug In file
    linux/arch/um/kernel/physmem.c  init_mem() function= s:

int i=
nit_maps(unsigned long physmem, unsi=
gned
 long iomem, unsigned long hi=
ghmem)
{
=09struct page *p, *ma= p;
=09unsigned <= b>long phys_len, phys_pages, highmem_len, highmem_pages;
=09<= font color=3D"#228b22">unsigned lo= ng iomem_len, iomem_pages, total_len, total_pages;
=09int i;

=09phys_pages =3D physmem >> PAGE_SHI= FT;
=09phys_len =3D phys_pages * sizeof( struct page);

=09iomem_pages =3D iomem >> PAGE_S= HIFT;
=09iomem_len =3D iomem_pages * sizeof(struct page);

=09hig= hmem_pages =3D highmem >> PAGE_SHIFT;
=09highmem_len =3D highmem_pages * sizeof(struct page);

=09tota= l_pages =3D phys_pages + iomem_pages + highmem_pages;
=09 total_len =3D phys_len + = iomem_pages + highmem_len;

=09if(kmalloc_ok){
=09=09map =3D kmalloc(total_len, GFP_KERNE= L);
=09=09 if(map =3D=3D NULL)
=09=09=09map =3D= vmalloc(total_len);
=09}
=09else map =3D alloc_bootmem_low_pages(total_len);

=09if (map =3D=3D NULL)
=09=09return(-EN= OMEM);

=09for(i =3D 0; i < = total_pages; i++){
=09=09p =3D &map[i];
=09=09set_page_count(p, 0= );
=09=09SetPageReserved(p);
=09=09INIT_LIST_HEAD(&p->list);
=09}

=09mem_map =3D ma= p;
=09max_mapnr =3D total_pages;
=09return= (0);
}

this line should be 
total_len =3D phys_len + iomem=
_len + highmem_len;

------=_Part_27316_585131.1136902456422-- ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel