From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from [222.73.24.84] (helo=song.cn.fujitsu.com) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1UcrMf-0008IC-TW for kexec@lists.infradead.org; Thu, 16 May 2013 06:08:35 +0000 Message-ID: <519475B6.7060706@cn.fujitsu.com> Date: Thu, 16 May 2013 13:59:18 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH v6 3/8] vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list References: <20130515090507.28109.28956.stgit@localhost6.localdomain6> <20130515090557.28109.9991.stgit@localhost6.localdomain6> In-Reply-To: <20130515090557.28109.9991.stgit@localhost6.localdomain6> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+dwmw2=twosheds.infradead.org@lists.infradead.org To: HATAYAMA Daisuke Cc: riel@redhat.com, hughd@google.com, jingbai.ma@hp.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, lisa.mitchell@hp.com, linux-mm@kvack.org, kumagai-atsushi@mxc.nes.nec.co.jp, ebiederm@xmission.com, kosaki.motohiro@jp.fujitsu.com, akpm@linux-foundation.org, walken@google.com, cpw@sgi.com, vgoyal@redhat.com 5LqOIDIwMTPlubQwNeaciDE15pelIDE3OjA1LCBIQVRBWUFNQSBEYWlzdWtlIOWGmemBkzoKPiBU cmVhdCBtZW1vcnkgY2h1bmtzIHJlZmVyZW5jZWQgYnkgUFRfTE9BRCBwcm9ncmFtIGhlYWRlciBl bnRyaWVzIGluCj4gcGFnZS1zaXplIGJvdW5kYXJ5IGluIHZtY29yZV9saXN0LiBGb3JtYWxseSwg Zm9yIGVhY2ggcmFuZ2UgW3N0YXJ0LAo+IGVuZF0sIHdlIHNldCB1cCB0aGUgY29ycmVzcG9uZGlu ZyB2bWNvcmUgb2JqZWN0IGluIHZtY29yZV9saXN0IHRvCj4gW3JvdW5kZG93bihzdGFydCwgUEFH RV9TSVpFKSwgcm91bmR1cChlbmQsIFBBR0VfU0laRSldLgo+IAo+IFRoaXMgY2hhbmdlIGFmZmVj dHMgbGF5b3V0IG9mIC9wcm9jL3ZtY29yZS4gVGhlIGdhcHMgZ2VuZXJhdGVkIGJ5IHRoZQo+IHJl YXJyYW5nZW1lbnQgYXJlIG5ld2x5IG1hZGUgdmlzaWJsZSB0byBhcHBsaWNhdGlvbnMgYXMKPiBo b2xlcy4gQ29uY3JldGVseSwgdGhleSBhcmUgdHdvIHJhbmdlcyBbcm91bmRkb3duKHN0YXJ0LCBQ QUdFX1NJWkUpLAo+IHN0YXJ0XSBhbmQgW2VuZCwgcm91bmR1cChlbmQsIFBBR0VfU0laRSldLgo+ IAo+IFN1cHBvc2UgdmFyaWFibGUgbSBwb2ludHMgYXQgYSB2bWNvcmUgb2JqZWN0IGluIHZtY29y ZV9saXN0LCBhbmQKPiB2YXJpYWJsZSBwaGRyIHBvaW50cyBhdCB0aGUgcHJvZ3JhbSBoZWFkZXIg b2YgUFRfTE9BRCB0eXBlIHRoZQo+IHZhcmlhYmxlIG0gY29ycmVzcG9uZHMgdG8uIFRoZW4sIHBp Y3RvcmlhbGx5Ogo+IAo+ICAgbS0+b2Zmc2V0ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0t LS0tLS0tKwo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhvbGUgICAgICAgICAg fAo+IHBoZHItPnBfb2Zmc2V0ID0gICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tKwo+ICAg bS0+b2Zmc2V0ICsgKHBhZGRyIC0gc3RhcnQpICB8ICAgICAgICAgICAgICAgfFwKPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXJuZWwgbWVtb3J5IHwgcGhkci0+cF9tZW1zego+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgfC8KPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCBob2xlICAgICAgICAgIHwKPiAgIG0tPm9mZnNldCArIG0t PnNpemUgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLSsKPiAKPiB3aGVyZSBtLT5vZmZzZXQgYW5k IG0tPm9mZnNldCArIG0tPnNpemUgYXJlIGFsd2F5cyBwYWdlLXNpemUgYWxpZ25lZC4KPiAKPiBT aWduZWQtb2ZmLWJ5OiBIQVRBWUFNQSBEYWlzdWtlIDxkLmhhdGF5YW1hQGpwLmZ1aml0c3UuY29t Pgo+IEFja2VkLWJ5OiBWaXZlayBHb3lhbCA8dmdveWFsQHJlZGhhdC5jb20+Cj4gLS0tCgpBY2tl ZC1ieTogWmhhbmcgWWFuZmVpIDx6aGFuZ3lhbmZlaUBjbi5mdWppdHN1LmNvbT4KCj4gCj4gIGZz L3Byb2Mvdm1jb3JlLmMgfCAgIDMwICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ICAx IGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2ZzL3Byb2Mvdm1jb3JlLmMgYi9mcy9wcm9jL3ZtY29yZS5jCj4gaW5kZXggNDg4 ODZlNi4uNmNmN2ZiZCAxMDA2NDQKPiAtLS0gYS9mcy9wcm9jL3ZtY29yZS5jCj4gKysrIGIvZnMv cHJvYy92bWNvcmUuYwo+IEBAIC00MDYsMjAgKzQwNiwyNyBAQCBzdGF0aWMgaW50IF9faW5pdCBw cm9jZXNzX3B0bG9hZF9wcm9ncmFtX2hlYWRlcnNfZWxmNjQoY2hhciAqZWxmcHRyLAo+ICAJdm1j b3JlX29mZiA9IGVsZnN6ICsgcm91bmR1cChwaGRyX3B0ci0+cF9tZW1zeiwgUEFHRV9TSVpFKTsK PiAgCj4gIAlmb3IgKGkgPSAwOyBpIDwgZWhkcl9wdHItPmVfcGhudW07IGkrKywgcGhkcl9wdHIr Kykgewo+ICsJCXU2NCBwYWRkciwgc3RhcnQsIGVuZCwgc2l6ZTsKPiArCj4gIAkJaWYgKHBoZHJf cHRyLT5wX3R5cGUgIT0gUFRfTE9BRCkKPiAgCQkJY29udGludWU7Cj4gIAo+ICsJCXBhZGRyID0g cGhkcl9wdHItPnBfb2Zmc2V0Owo+ICsJCXN0YXJ0ID0gcm91bmRkb3duKHBhZGRyLCBQQUdFX1NJ WkUpOwo+ICsJCWVuZCA9IHJvdW5kdXAocGFkZHIgKyBwaGRyX3B0ci0+cF9tZW1zeiwgUEFHRV9T SVpFKTsKPiArCQlzaXplID0gZW5kIC0gc3RhcnQ7Cj4gKwo+ICAJCS8qIEFkZCB0aGlzIGNvbnRp Z3VvdXMgY2h1bmsgb2YgbWVtb3J5IHRvIHZtY29yZSBsaXN0LiovCj4gIAkJbmV3ID0gZ2V0X25l d19lbGVtZW50KCk7Cj4gIAkJaWYgKCFuZXcpCj4gIAkJCXJldHVybiAtRU5PTUVNOwo+IC0JCW5l dy0+cGFkZHIgPSBwaGRyX3B0ci0+cF9vZmZzZXQ7Cj4gLQkJbmV3LT5zaXplID0gcGhkcl9wdHIt PnBfbWVtc3o7Cj4gKwkJbmV3LT5wYWRkciA9IHN0YXJ0Owo+ICsJCW5ldy0+c2l6ZSA9IHNpemU7 Cj4gIAkJbGlzdF9hZGRfdGFpbCgmbmV3LT5saXN0LCB2Y19saXN0KTsKPiAgCj4gIAkJLyogVXBk YXRlIHRoZSBwcm9ncmFtIGhlYWRlciBvZmZzZXQuICovCj4gLQkJcGhkcl9wdHItPnBfb2Zmc2V0 ID0gdm1jb3JlX29mZjsKPiAtCQl2bWNvcmVfb2ZmID0gdm1jb3JlX29mZiArIHBoZHJfcHRyLT5w X21lbXN6Owo+ICsJCXBoZHJfcHRyLT5wX29mZnNldCA9IHZtY29yZV9vZmYgKyAocGFkZHIgLSBz dGFydCk7Cj4gKwkJdm1jb3JlX29mZiA9IHZtY29yZV9vZmYgKyBzaXplOwo+ICAJfQo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiBAQCAtNDQxLDIwICs0NDgsMjcgQEAgc3RhdGljIGludCBfX2luaXQgcHJv Y2Vzc19wdGxvYWRfcHJvZ3JhbV9oZWFkZXJzX2VsZjMyKGNoYXIgKmVsZnB0ciwKPiAgCXZtY29y ZV9vZmYgPSBlbGZzeiArIHJvdW5kdXAocGhkcl9wdHItPnBfbWVtc3osIFBBR0VfU0laRSk7Cj4g IAo+ICAJZm9yIChpID0gMDsgaSA8IGVoZHJfcHRyLT5lX3BobnVtOyBpKyssIHBoZHJfcHRyKysp IHsKPiArCQl1NjQgcGFkZHIsIHN0YXJ0LCBlbmQsIHNpemU7Cj4gKwo+ICAJCWlmIChwaGRyX3B0 ci0+cF90eXBlICE9IFBUX0xPQUQpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiArCQlwYWRkciA9IHBo ZHJfcHRyLT5wX29mZnNldDsKPiArCQlzdGFydCA9IHJvdW5kZG93bihwYWRkciwgUEFHRV9TSVpF KTsKPiArCQllbmQgPSByb3VuZHVwKHBhZGRyICsgcGhkcl9wdHItPnBfbWVtc3osIFBBR0VfU0la RSk7Cj4gKwkJc2l6ZSA9IGVuZCAtIHN0YXJ0Owo+ICsKPiAgCQkvKiBBZGQgdGhpcyBjb250aWd1 b3VzIGNodW5rIG9mIG1lbW9yeSB0byB2bWNvcmUgbGlzdC4qLwo+ICAJCW5ldyA9IGdldF9uZXdf ZWxlbWVudCgpOwo+ICAJCWlmICghbmV3KQo+ICAJCQlyZXR1cm4gLUVOT01FTTsKPiAtCQluZXct PnBhZGRyID0gcGhkcl9wdHItPnBfb2Zmc2V0Owo+IC0JCW5ldy0+c2l6ZSA9IHBoZHJfcHRyLT5w X21lbXN6Owo+ICsJCW5ldy0+cGFkZHIgPSBzdGFydDsKPiArCQluZXctPnNpemUgPSBzaXplOwo+ ICAJCWxpc3RfYWRkX3RhaWwoJm5ldy0+bGlzdCwgdmNfbGlzdCk7Cj4gIAo+ICAJCS8qIFVwZGF0 ZSB0aGUgcHJvZ3JhbSBoZWFkZXIgb2Zmc2V0ICovCj4gLQkJcGhkcl9wdHItPnBfb2Zmc2V0ID0g dm1jb3JlX29mZjsKPiAtCQl2bWNvcmVfb2ZmID0gdm1jb3JlX29mZiArIHBoZHJfcHRyLT5wX21l bXN6Owo+ICsJCXBoZHJfcHRyLT5wX29mZnNldCA9IHZtY29yZV9vZmYgKyAocGFkZHIgLSBzdGFy dCk7Cj4gKwkJdm1jb3JlX29mZiA9IHZtY29yZV9vZmYgKyBzaXplOwo+ICAJfQo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAKPiAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwprZXhlYyBtYWlsaW5nIGxpc3QKa2V4ZWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRw Oi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from psmtp.com (na3sys010amx147.postini.com [74.125.245.147]) by kanga.kvack.org (Postfix) with SMTP id AAAE16B0032 for ; Thu, 16 May 2013 02:08:05 -0400 (EDT) Message-ID: <519475B6.7060706@cn.fujitsu.com> Date: Thu, 16 May 2013 13:59:18 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH v6 3/8] vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list References: <20130515090507.28109.28956.stgit@localhost6.localdomain6> <20130515090557.28109.9991.stgit@localhost6.localdomain6> In-Reply-To: <20130515090557.28109.9991.stgit@localhost6.localdomain6> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Sender: owner-linux-mm@kvack.org List-ID: To: HATAYAMA Daisuke Cc: vgoyal@redhat.com, ebiederm@xmission.com, akpm@linux-foundation.org, cpw@sgi.com, kumagai-atsushi@mxc.nes.nec.co.jp, lisa.mitchell@hp.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, jingbai.ma@hp.com, linux-mm@kvack.org, riel@redhat.com, walken@google.com, hughd@google.com, kosaki.motohiro@jp.fujitsu.com =E4=BA=8E 2013=E5=B9=B405=E6=9C=8815=E6=97=A5 17:05, HATAYAMA Daisuke =E5= =86=99=E9=81=93: > Treat memory chunks referenced by PT=5FLOAD program header entries in > page-size boundary in vmcore=5Flist. Formally, for each range [start, > end], we set up the corresponding vmcore object in vmcore=5Flist to > [rounddown(start, PAGE=5FSIZE), roundup(end, PAGE=5FSIZE)]. >=20 > This change affects layout of /proc/vmcore. The gaps generated by the > rearrangement are newly made visible to applications as > holes. Concretely, they are two ranges [rounddown(start, PAGE=5FSIZE), > start] and [end, roundup(end, PAGE=5FSIZE)]. >=20 > Suppose variable m points at a vmcore object in vmcore=5Flist, and > variable phdr points at the program header of PT=5FLOAD type the > variable m corresponds to. Then, pictorially: >=20 > m->offset +---------------+ > | hole | > phdr->p=5Foffset =3D +---------------+ > m->offset + (paddr - start) | |\ > | kernel memory | phdr->p=5Fmemsz > | |/ > +---------------+ > | hole | > m->offset + m->size +---------------+ >=20 > where m->offset and m->offset + m->size are always page-size aligned. >=20 > Signed-off-by: HATAYAMA Daisuke > Acked-by: Vivek Goyal > --- Acked-by: Zhang Yanfei >=20 > fs/proc/vmcore.c | 30 ++++++++++++++++++++++-------- > 1 files changed, 22 insertions(+), 8 deletions(-) >=20 > diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c > index 48886e6..6cf7fbd 100644 > --- a/fs/proc/vmcore.c > +++ b/fs/proc/vmcore.c > @@ -406,20 +406,27 @@ static int =5F=5Finit process=5Fptload=5Fprogram=5F= headers=5Felf64(char *elfptr, > vmcore=5Foff =3D elfsz + roundup(phdr=5Fptr->p=5Fmemsz, PAGE=5FSIZE); > =20 > for (i =3D 0; i < ehdr=5Fptr->e=5Fphnum; i++, phdr=5Fptr++) { > + u64 paddr, start, end, size; > + > if (phdr=5Fptr->p=5Ftype !=3D PT=5FLOAD) > continue; > =20 > + paddr =3D phdr=5Fptr->p=5Foffset; > + start =3D rounddown(paddr, PAGE=5FSIZE); > + end =3D roundup(paddr + phdr=5Fptr->p=5Fmemsz, PAGE=5FSIZE); > + size =3D end - start; > + > /* Add this contiguous chunk of memory to vmcore list.*/ > new =3D get=5Fnew=5Felement(); > if (!new) > return -ENOMEM; > - new->paddr =3D phdr=5Fptr->p=5Foffset; > - new->size =3D phdr=5Fptr->p=5Fmemsz; > + new->paddr =3D start; > + new->size =3D size; > list=5Fadd=5Ftail(&new->list, vc=5Flist); > =20 > /* Update the program header offset. */ > - phdr=5Fptr->p=5Foffset =3D vmcore=5Foff; > - vmcore=5Foff =3D vmcore=5Foff + phdr=5Fptr->p=5Fmemsz; > + phdr=5Fptr->p=5Foffset =3D vmcore=5Foff + (paddr - start); > + vmcore=5Foff =3D vmcore=5Foff + size; > } > return 0; > } > @@ -441,20 +448,27 @@ static int =5F=5Finit process=5Fptload=5Fprogram=5F= headers=5Felf32(char *elfptr, > vmcore=5Foff =3D elfsz + roundup(phdr=5Fptr->p=5Fmemsz, PAGE=5FSIZE); > =20 > for (i =3D 0; i < ehdr=5Fptr->e=5Fphnum; i++, phdr=5Fptr++) { > + u64 paddr, start, end, size; > + > if (phdr=5Fptr->p=5Ftype !=3D PT=5FLOAD) > continue; > =20 > + paddr =3D phdr=5Fptr->p=5Foffset; > + start =3D rounddown(paddr, PAGE=5FSIZE); > + end =3D roundup(paddr + phdr=5Fptr->p=5Fmemsz, PAGE=5FSIZE); > + size =3D end - start; > + > /* Add this contiguous chunk of memory to vmcore list.*/ > new =3D get=5Fnew=5Felement(); > if (!new) > return -ENOMEM; > - new->paddr =3D phdr=5Fptr->p=5Foffset; > - new->size =3D phdr=5Fptr->p=5Fmemsz; > + new->paddr =3D start; > + new->size =3D size; > list=5Fadd=5Ftail(&new->list, vc=5Flist); > =20 > /* Update the program header offset */ > - phdr=5Fptr->p=5Foffset =3D vmcore=5Foff; > - vmcore=5Foff =3D vmcore=5Foff + phdr=5Fptr->p=5Fmemsz; > + phdr=5Fptr->p=5Foffset =3D vmcore=5Foff + (paddr - start); > + vmcore=5Foff =3D vmcore=5Foff + size; > } > return 0; > } >=20 >=20 = -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755287Ab3EPGIO (ORCPT ); Thu, 16 May 2013 02:08:14 -0400 Received: from cn.fujitsu.com ([222.73.24.84]:12192 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1754571Ab3EPGIK convert rfc822-to-8bit (ORCPT ); Thu, 16 May 2013 02:08:10 -0400 X-IronPort-AV: E=Sophos;i="4.87,682,1363104000"; d="scan'208";a="7283465" Message-ID: <519475B6.7060706@cn.fujitsu.com> Date: Thu, 16 May 2013 13:59:18 +0800 From: Zhang Yanfei User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.8) Gecko/20121012 Thunderbird/10.0.8 MIME-Version: 1.0 To: HATAYAMA Daisuke CC: vgoyal@redhat.com, ebiederm@xmission.com, akpm@linux-foundation.org, cpw@sgi.com, kumagai-atsushi@mxc.nes.nec.co.jp, lisa.mitchell@hp.com, kexec@lists.infradead.org, linux-kernel@vger.kernel.org, jingbai.ma@hp.com, linux-mm@kvack.org, riel@redhat.com, walken@google.com, hughd@google.com, kosaki.motohiro@jp.fujitsu.com Subject: Re: [PATCH v6 3/8] vmcore: treat memory chunks referenced by PT_LOAD program header entries in page-size boundary in vmcore_list References: <20130515090507.28109.28956.stgit@localhost6.localdomain6> <20130515090557.28109.9991.stgit@localhost6.localdomain6> In-Reply-To: <20130515090557.28109.9991.stgit@localhost6.localdomain6> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/05/16 14:00:29, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/05/16 14:06:56 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 于 2013年05月15日 17:05, HATAYAMA Daisuke 写道: > Treat memory chunks referenced by PT_LOAD program header entries in > page-size boundary in vmcore_list. Formally, for each range [start, > end], we set up the corresponding vmcore object in vmcore_list to > [rounddown(start, PAGE_SIZE), roundup(end, PAGE_SIZE)]. > > This change affects layout of /proc/vmcore. The gaps generated by the > rearrangement are newly made visible to applications as > holes. Concretely, they are two ranges [rounddown(start, PAGE_SIZE), > start] and [end, roundup(end, PAGE_SIZE)]. > > Suppose variable m points at a vmcore object in vmcore_list, and > variable phdr points at the program header of PT_LOAD type the > variable m corresponds to. Then, pictorially: > > m->offset +---------------+ > | hole | > phdr->p_offset = +---------------+ > m->offset + (paddr - start) | |\ > | kernel memory | phdr->p_memsz > | |/ > +---------------+ > | hole | > m->offset + m->size +---------------+ > > where m->offset and m->offset + m->size are always page-size aligned. > > Signed-off-by: HATAYAMA Daisuke > Acked-by: Vivek Goyal > --- Acked-by: Zhang Yanfei > > fs/proc/vmcore.c | 30 ++++++++++++++++++++++-------- > 1 files changed, 22 insertions(+), 8 deletions(-) > > diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c > index 48886e6..6cf7fbd 100644 > --- a/fs/proc/vmcore.c > +++ b/fs/proc/vmcore.c > @@ -406,20 +406,27 @@ static int __init process_ptload_program_headers_elf64(char *elfptr, > vmcore_off = elfsz + roundup(phdr_ptr->p_memsz, PAGE_SIZE); > > for (i = 0; i < ehdr_ptr->e_phnum; i++, phdr_ptr++) { > + u64 paddr, start, end, size; > + > if (phdr_ptr->p_type != PT_LOAD) > continue; > > + paddr = phdr_ptr->p_offset; > + start = rounddown(paddr, PAGE_SIZE); > + end = roundup(paddr + phdr_ptr->p_memsz, PAGE_SIZE); > + size = end - start; > + > /* Add this contiguous chunk of memory to vmcore list.*/ > new = get_new_element(); > if (!new) > return -ENOMEM; > - new->paddr = phdr_ptr->p_offset; > - new->size = phdr_ptr->p_memsz; > + new->paddr = start; > + new->size = size; > list_add_tail(&new->list, vc_list); > > /* Update the program header offset. */ > - phdr_ptr->p_offset = vmcore_off; > - vmcore_off = vmcore_off + phdr_ptr->p_memsz; > + phdr_ptr->p_offset = vmcore_off + (paddr - start); > + vmcore_off = vmcore_off + size; > } > return 0; > } > @@ -441,20 +448,27 @@ static int __init process_ptload_program_headers_elf32(char *elfptr, > vmcore_off = elfsz + roundup(phdr_ptr->p_memsz, PAGE_SIZE); > > for (i = 0; i < ehdr_ptr->e_phnum; i++, phdr_ptr++) { > + u64 paddr, start, end, size; > + > if (phdr_ptr->p_type != PT_LOAD) > continue; > > + paddr = phdr_ptr->p_offset; > + start = rounddown(paddr, PAGE_SIZE); > + end = roundup(paddr + phdr_ptr->p_memsz, PAGE_SIZE); > + size = end - start; > + > /* Add this contiguous chunk of memory to vmcore list.*/ > new = get_new_element(); > if (!new) > return -ENOMEM; > - new->paddr = phdr_ptr->p_offset; > - new->size = phdr_ptr->p_memsz; > + new->paddr = start; > + new->size = size; > list_add_tail(&new->list, vc_list); > > /* Update the program header offset */ > - phdr_ptr->p_offset = vmcore_off; > - vmcore_off = vmcore_off + phdr_ptr->p_memsz; > + phdr_ptr->p_offset = vmcore_off + (paddr - start); > + vmcore_off = vmcore_off + size; > } > return 0; > } > >