From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753883Ab3CFHAx (ORCPT ); Wed, 6 Mar 2013 02:00:53 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:10457 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1753308Ab3CFHAv convert rfc822-to-8bit (ORCPT ); Wed, 6 Mar 2013 02:00:51 -0500 X-IronPort-AV: E=Sophos;i="4.84,793,1355068800"; d="scan'208";a="6822382" Message-ID: <5136E8EE.6080301@cn.fujitsu.com> Date: Wed, 06 Mar 2013 14:57:50 +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, cpw@sgi.com, kumagai-atsushi@mxc.nes.nec.co.jp, lisa.mitchell@hp.com, heiko.carstens@de.ibm.com, akpm@linux-foundation.org, kexec@lists.infradead.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 04/20] vmcore: allocate buffer for ELF headers on page-size alignment References: <20130302083447.31252.93914.stgit@localhost6.localdomain6> <20130302083610.31252.18601.stgit@localhost6.localdomain6> In-Reply-To: <20130302083610.31252.18601.stgit@localhost6.localdomain6> X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/03/06 14:58:11, Serialize by Router on mailserver/fnst(Release 8.5.3|September 15, 2011) at 2013/03/06 14:58:20 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年03月02日 16:36, HATAYAMA Daisuke 写道: > Allocate buffer for ELF headers on page-size aligned boudary to > satisfy mmap() requirement. For this, __get_free_pages() is used > instead of kmalloc(). > > Also, later patch will decrease actually used buffer size for ELF > headers, so it's necessary to keep original buffer size and actually > used buffer size separately. elfcorebuf_sz_orig keeps the original one > and elfcorebuf_sz the actually used one. > > Signed-off-by: HATAYAMA Daisuke > --- > > fs/proc/vmcore.c | 30 +++++++++++++++++++++--------- > 1 files changed, 21 insertions(+), 9 deletions(-) > > diff --git a/fs/proc/vmcore.c b/fs/proc/vmcore.c > index b5c9e33..1b02d01 100644 > --- a/fs/proc/vmcore.c > +++ b/fs/proc/vmcore.c > @@ -31,6 +31,7 @@ static LIST_HEAD(vmcore_list); > /* Stores the pointer to the buffer containing kernel elf core headers. */ > static char *elfcorebuf; > static size_t elfcorebuf_sz; > +static size_t elfcorebuf_sz_orig; > > /* Total size of vmcore file. */ > static u64 vmcore_size; > @@ -610,26 +611,31 @@ static int __init parse_crash_elf64_headers(void) > > /* Read in all elf headers. */ > elfcorebuf_sz = ehdr.e_phoff + ehdr.e_phnum * sizeof(Elf64_Phdr); > - elfcorebuf = kmalloc(elfcorebuf_sz, GFP_KERNEL); > + elfcorebuf_sz_orig = elfcorebuf_sz; > + elfcorebuf = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, > + get_order(elfcorebuf_sz_orig)); > if (!elfcorebuf) > return -ENOMEM; > addr = elfcorehdr_addr; > rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz, &addr, 0); > if (rc < 0) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > > /* Merge all PT_NOTE headers into one. */ > rc = merge_note_headers_elf64(elfcorebuf, &elfcorebuf_sz, &vmcore_list); > if (rc) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > rc = process_ptload_program_headers_elf64(elfcorebuf, elfcorebuf_sz, > &vmcore_list); > if (rc) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > set_vmcore_list_offsets_elf64(elfcorebuf, &vmcore_list); > @@ -665,26 +671,31 @@ static int __init parse_crash_elf32_headers(void) > > /* Read in all elf headers. */ > elfcorebuf_sz = ehdr.e_phoff + ehdr.e_phnum * sizeof(Elf32_Phdr); > - elfcorebuf = kmalloc(elfcorebuf_sz, GFP_KERNEL); > + elfcorebuf_sz_orig = elfcorebuf_sz; > + elfcorebuf = (void *) __get_free_pages(GFP_KERNEL | __GFP_ZERO, > + get_order(elfcorebuf_sz)); Why not elfcorebuf_sz_orig here? > if (!elfcorebuf) > return -ENOMEM; > addr = elfcorehdr_addr; > rc = read_from_oldmem(elfcorebuf, elfcorebuf_sz, &addr, 0); > if (rc < 0) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > > /* Merge all PT_NOTE headers into one. */ > rc = merge_note_headers_elf32(elfcorebuf, &elfcorebuf_sz, &vmcore_list); > if (rc) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > rc = process_ptload_program_headers_elf32(elfcorebuf, elfcorebuf_sz, > &vmcore_list); > if (rc) { > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > return rc; > } > set_vmcore_list_offsets_elf32(elfcorebuf, &vmcore_list); > @@ -766,7 +777,8 @@ void vmcore_cleanup(void) > list_del(&m->list); > kfree(m); > } > - kfree(elfcorebuf); > + free_pages((unsigned long)elfcorebuf, > + get_order(elfcorebuf_sz_orig)); > elfcorebuf = NULL; > } > EXPORT_SYMBOL_GPL(vmcore_cleanup); > > > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec > 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 1UD8LV-0004cv-Ew for kexec@lists.infradead.org; Wed, 06 Mar 2013 07:01:05 +0000 Message-ID: <5136E8EE.6080301@cn.fujitsu.com> Date: Wed, 06 Mar 2013 14:57:50 +0800 From: Zhang Yanfei MIME-Version: 1.0 Subject: Re: [PATCH v2 04/20] vmcore: allocate buffer for ELF headers on page-size alignment References: <20130302083447.31252.93914.stgit@localhost6.localdomain6> <20130302083610.31252.18601.stgit@localhost6.localdomain6> In-Reply-To: <20130302083610.31252.18601.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=infradead.org@lists.infradead.org To: HATAYAMA Daisuke Cc: kexec@lists.infradead.org, heiko.carstens@de.ibm.com, linux-kernel@vger.kernel.org, lisa.mitchell@hp.com, kumagai-atsushi@mxc.nes.nec.co.jp, ebiederm@xmission.com, akpm@linux-foundation.org, cpw@sgi.com, vgoyal@redhat.com 5LqOIDIwMTPlubQwM+aciDAy5pelIDE2OjM2LCBIQVRBWUFNQSBEYWlzdWtlIOWGmemBkzoKPiBB bGxvY2F0ZSBidWZmZXIgZm9yIEVMRiBoZWFkZXJzIG9uIHBhZ2Utc2l6ZSBhbGlnbmVkIGJvdWRh cnkgdG8KPiBzYXRpc2Z5IG1tYXAoKSByZXF1aXJlbWVudC4gRm9yIHRoaXMsIF9fZ2V0X2ZyZWVf cGFnZXMoKSBpcyB1c2VkCj4gaW5zdGVhZCBvZiBrbWFsbG9jKCkuCj4gCj4gQWxzbywgbGF0ZXIg cGF0Y2ggd2lsbCBkZWNyZWFzZSBhY3R1YWxseSB1c2VkIGJ1ZmZlciBzaXplIGZvciBFTEYKPiBo ZWFkZXJzLCBzbyBpdCdzIG5lY2Vzc2FyeSB0byBrZWVwIG9yaWdpbmFsIGJ1ZmZlciBzaXplIGFu ZCBhY3R1YWxseQo+IHVzZWQgYnVmZmVyIHNpemUgc2VwYXJhdGVseS4gZWxmY29yZWJ1Zl9zel9v cmlnIGtlZXBzIHRoZSBvcmlnaW5hbCBvbmUKPiBhbmQgZWxmY29yZWJ1Zl9zeiB0aGUgYWN0dWFs bHkgdXNlZCBvbmUuCj4gCj4gU2lnbmVkLW9mZi1ieTogSEFUQVlBTUEgRGFpc3VrZSA8ZC5oYXRh eWFtYUBqcC5mdWppdHN1LmNvbT4KPiAtLS0KPiAKPiAgZnMvcHJvYy92bWNvcmUuYyB8ICAgMzAg KysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCj4gIDEgZmlsZXMgY2hhbmdlZCwgMjEgaW5z ZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZnMvcHJvYy92bWNv cmUuYyBiL2ZzL3Byb2Mvdm1jb3JlLmMKPiBpbmRleCBiNWM5ZTMzLi4xYjAyZDAxIDEwMDY0NAo+ IC0tLSBhL2ZzL3Byb2Mvdm1jb3JlLmMKPiArKysgYi9mcy9wcm9jL3ZtY29yZS5jCj4gQEAgLTMx LDYgKzMxLDcgQEAgc3RhdGljIExJU1RfSEVBRCh2bWNvcmVfbGlzdCk7Cj4gIC8qIFN0b3JlcyB0 aGUgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcga2VybmVsIGVsZiBjb3JlIGhlYWRl cnMuICovCj4gIHN0YXRpYyBjaGFyICplbGZjb3JlYnVmOwo+ICBzdGF0aWMgc2l6ZV90IGVsZmNv cmVidWZfc3o7Cj4gK3N0YXRpYyBzaXplX3QgZWxmY29yZWJ1Zl9zel9vcmlnOwo+ICAKPiAgLyog VG90YWwgc2l6ZSBvZiB2bWNvcmUgZmlsZS4gKi8KPiAgc3RhdGljIHU2NCB2bWNvcmVfc2l6ZTsK PiBAQCAtNjEwLDI2ICs2MTEsMzEgQEAgc3RhdGljIGludCBfX2luaXQgcGFyc2VfY3Jhc2hfZWxm NjRfaGVhZGVycyh2b2lkKQo+ICAKPiAgCS8qIFJlYWQgaW4gYWxsIGVsZiBoZWFkZXJzLiAqLwo+ ICAJZWxmY29yZWJ1Zl9zeiA9IGVoZHIuZV9waG9mZiArIGVoZHIuZV9waG51bSAqIHNpemVvZihF bGY2NF9QaGRyKTsKPiAtCWVsZmNvcmVidWYgPSBrbWFsbG9jKGVsZmNvcmVidWZfc3osIEdGUF9L RVJORUwpOwo+ICsJZWxmY29yZWJ1Zl9zel9vcmlnID0gZWxmY29yZWJ1Zl9zejsKPiArCWVsZmNv cmVidWYgPSAodm9pZCAqKSBfX2dldF9mcmVlX3BhZ2VzKEdGUF9LRVJORUwgfCBfX0dGUF9aRVJP LAo+ICsJCQkJCSAgICAgICBnZXRfb3JkZXIoZWxmY29yZWJ1Zl9zel9vcmlnKSk7Cj4gIAlpZiAo IWVsZmNvcmVidWYpCj4gIAkJcmV0dXJuIC1FTk9NRU07Cj4gIAlhZGRyID0gZWxmY29yZWhkcl9h ZGRyOwo+ICAJcmMgPSByZWFkX2Zyb21fb2xkbWVtKGVsZmNvcmVidWYsIGVsZmNvcmVidWZfc3os ICZhZGRyLCAwKTsKPiAgCWlmIChyYyA8IDApIHsKPiAtCQlrZnJlZShlbGZjb3JlYnVmKTsKPiAr CQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWVsZmNvcmVidWYsCj4gKwkJCSAgIGdldF9vcmRl cihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCQlyZXR1cm4gcmM7Cj4gIAl9Cj4gIAo+ICAJLyog TWVyZ2UgYWxsIFBUX05PVEUgaGVhZGVycyBpbnRvIG9uZS4gKi8KPiAgCXJjID0gbWVyZ2Vfbm90 ZV9oZWFkZXJzX2VsZjY0KGVsZmNvcmVidWYsICZlbGZjb3JlYnVmX3N6LCAmdm1jb3JlX2xpc3Qp Owo+ICAJaWYgKHJjKSB7Cj4gLQkJa2ZyZWUoZWxmY29yZWJ1Zik7Cj4gKwkJZnJlZV9wYWdlcygo dW5zaWduZWQgbG9uZyllbGZjb3JlYnVmLAo+ICsJCQkgICBnZXRfb3JkZXIoZWxmY29yZWJ1Zl9z el9vcmlnKSk7Cj4gIAkJcmV0dXJuIHJjOwo+ICAJfQo+ICAJcmMgPSBwcm9jZXNzX3B0bG9hZF9w cm9ncmFtX2hlYWRlcnNfZWxmNjQoZWxmY29yZWJ1ZiwgZWxmY29yZWJ1Zl9zeiwKPiAgCQkJCQkJ CSZ2bWNvcmVfbGlzdCk7Cj4gIAlpZiAocmMpIHsKPiAtCQlrZnJlZShlbGZjb3JlYnVmKTsKPiAr CQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWVsZmNvcmVidWYsCj4gKwkJCSAgIGdldF9vcmRl cihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCQlyZXR1cm4gcmM7Cj4gIAl9Cj4gIAlzZXRfdm1j b3JlX2xpc3Rfb2Zmc2V0c19lbGY2NChlbGZjb3JlYnVmLCAmdm1jb3JlX2xpc3QpOwo+IEBAIC02 NjUsMjYgKzY3MSwzMSBAQCBzdGF0aWMgaW50IF9faW5pdCBwYXJzZV9jcmFzaF9lbGYzMl9oZWFk ZXJzKHZvaWQpCj4gIAo+ICAJLyogUmVhZCBpbiBhbGwgZWxmIGhlYWRlcnMuICovCj4gIAllbGZj b3JlYnVmX3N6ID0gZWhkci5lX3Bob2ZmICsgZWhkci5lX3BobnVtICogc2l6ZW9mKEVsZjMyX1Bo ZHIpOwo+IC0JZWxmY29yZWJ1ZiA9IGttYWxsb2MoZWxmY29yZWJ1Zl9zeiwgR0ZQX0tFUk5FTCk7 Cj4gKwllbGZjb3JlYnVmX3N6X29yaWcgPSBlbGZjb3JlYnVmX3N6Owo+ICsJZWxmY29yZWJ1ZiA9 ICh2b2lkICopIF9fZ2V0X2ZyZWVfcGFnZXMoR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8sCj4gKwkJ CQkJICAgICAgIGdldF9vcmRlcihlbGZjb3JlYnVmX3N6KSk7CgpXaHkgbm90IGVsZmNvcmVidWZf c3pfb3JpZyBoZXJlPwoKPiAgCWlmICghZWxmY29yZWJ1ZikKPiAgCQlyZXR1cm4gLUVOT01FTTsK PiAgCWFkZHIgPSBlbGZjb3JlaGRyX2FkZHI7Cj4gIAlyYyA9IHJlYWRfZnJvbV9vbGRtZW0oZWxm Y29yZWJ1ZiwgZWxmY29yZWJ1Zl9zeiwgJmFkZHIsIDApOwo+ICAJaWYgKHJjIDwgMCkgewo+IC0J CWtmcmVlKGVsZmNvcmVidWYpOwo+ICsJCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpZWxmY29y ZWJ1ZiwKPiArCQkJICAgZ2V0X29yZGVyKGVsZmNvcmVidWZfc3pfb3JpZykpOwo+ICAJCXJldHVy biByYzsKPiAgCX0KPiAgCj4gIAkvKiBNZXJnZSBhbGwgUFRfTk9URSBoZWFkZXJzIGludG8gb25l LiAqLwo+ICAJcmMgPSBtZXJnZV9ub3RlX2hlYWRlcnNfZWxmMzIoZWxmY29yZWJ1ZiwgJmVsZmNv cmVidWZfc3osICZ2bWNvcmVfbGlzdCk7Cj4gIAlpZiAocmMpIHsKPiAtCQlrZnJlZShlbGZjb3Jl YnVmKTsKPiArCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWVsZmNvcmVidWYsCj4gKwkJCSAg IGdldF9vcmRlcihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCQlyZXR1cm4gcmM7Cj4gIAl9Cj4g IAlyYyA9IHByb2Nlc3NfcHRsb2FkX3Byb2dyYW1faGVhZGVyc19lbGYzMihlbGZjb3JlYnVmLCBl bGZjb3JlYnVmX3N6LAo+ICAJCQkJCQkJCSZ2bWNvcmVfbGlzdCk7Cj4gIAlpZiAocmMpIHsKPiAt CQlrZnJlZShlbGZjb3JlYnVmKTsKPiArCQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKWVsZmNv cmVidWYsCj4gKwkJCSAgIGdldF9vcmRlcihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCQlyZXR1 cm4gcmM7Cj4gIAl9Cj4gIAlzZXRfdm1jb3JlX2xpc3Rfb2Zmc2V0c19lbGYzMihlbGZjb3JlYnVm LCAmdm1jb3JlX2xpc3QpOwo+IEBAIC03NjYsNyArNzc3LDggQEAgdm9pZCB2bWNvcmVfY2xlYW51 cCh2b2lkKQo+ICAJCWxpc3RfZGVsKCZtLT5saXN0KTsKPiAgCQlrZnJlZShtKTsKPiAgCX0KPiAt CWtmcmVlKGVsZmNvcmVidWYpOwo+ICsJZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyllbGZjb3Jl YnVmLAo+ICsJCSAgIGdldF9vcmRlcihlbGZjb3JlYnVmX3N6X29yaWcpKTsKPiAgCWVsZmNvcmVi dWYgPSBOVUxMOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0xfR1BMKHZtY29yZV9jbGVhbnVwKTsKPiAK PiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGtl eGVjIG1haWxpbmcgbGlzdAo+IGtleGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKPiBodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tleGVjCj4gCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18Ka2V4ZWMgbWFpbGluZyBsaXN0Cmtl eGVjQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1h bi9saXN0aW5mby9rZXhlYwo=