From: Cong Wang <amwang@redhat.com>
To: "Suzuki K. Poulose" <suzuki@in.ibm.com>
Cc: linux-kernel@vger.kernel.org,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
Christoph Hellwig <hch@lst.de>,
Masami Hiramatsu <mhiramat@redhat.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Daisuke HATAYAMA <d.hatayama@jp.fujitsu.com>,
Andi Kleen <andi@firstfloor.org>,
Roland McGrath <roland@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Oleg Nesterov <oleg@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: Re: [Patch 18/21] Generate the data sections for ELF Core
Date: Wed, 15 Dec 2010 15:19:54 +0800 [thread overview]
Message-ID: <4D086C1A.5000907@redhat.com> (raw)
In-Reply-To: <20101214155200.06b56e57@suzukikp>
于 2010年12月14日 18:22, Suzuki K. Poulose 写道:
...
> + /*
> + * Read from the vma segments
> + * a. verify if the *fpos is within a phdr
> + * b. Use access_process_vm() to get data page by page
> + * c. copy_to_user into user buffer
> + */
This kind of comments is useless, "code tells you how, comments tell you why."
> +
> + while (buflen) {
> + size_t bufsz, offset, bytes;
> + char *readbuf;
> + struct elf_phdr *phdr = get_pos_elfphdr(cp, *fpos);
> +
> + if (!phdr)
> + break;
> +
> + bufsz = (buflen> PAGE_SIZE) ? PAGE_SIZE : buflen;
> + readbuf = kmalloc(bufsz, GFP_KERNEL);
> + if (!readbuf) {
> + ret = -ENOMEM;
> + goto out;
> + }
> +
> + offset = *fpos - phdr->p_offset;
> + bytes = access_process_vm(cp->task, (phdr->p_vaddr + offset),
> + readbuf, bufsz, 0);
> + if (!bytes) {
> + ret = -EIO;
> + goto out;
Why you don't kfree(readbuf) here?
> + }
> + if (copy_to_user(buffer, readbuf, bytes)) {
> + ret = -EFAULT;
> + kfree(readbuf);
> + goto out;
> + } else
> + acc += bytes;
> +
> + kfree(readbuf);
> + buflen -= bytes;
> + buffer += bytes;
> + *fpos += bytes;
> + }
> +
> + /* Fill extnum section header if present */
> + if (buflen&&
> + elf_hdr->e_shoff&&
> + (*fpos>= elf_hdr->e_shoff)&&
> + (*fpos< (elf_hdr->e_shoff + sizeof(struct elf_shdr)))) {
This indention seems ugly.
> +
> + off_t offset = *fpos - elf_hdr->e_shoff;
Are you sure it is 'off_t' not 'loff_t'?
> + size_t shdrsz = sizeof(struct elf_shdr) - offset;
> +
> + shdrsz = (buflen< shdrsz) ? buflen : shdrsz;
> + if (copy_to_user(buffer, ((char *)cp->shdr) + offset, shdrsz)) {
> + ret = -EFAULT;
> + goto out;
> + } else {
> + acc += shdrsz;
> + buflen -= shdrsz;
> + buffer += shdrsz;
> + }
> + }
>
> +done:
> + ret = acc;
> out:
> return ret;
> }
Thanks.
next prev parent reply other threads:[~2010-12-15 7:20 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-14 9:52 [RFC] [Patch 0/21] Non disruptive application core dump infrastructure Suzuki K. Poulose
2010-12-14 9:54 ` [Patch 1/21] Reuse freezable() predicate Suzuki K. Poulose
2010-12-14 9:57 ` [Patch 2/21] Create elfcore-common.c for ELF class independent core generation helpers Suzuki K. Poulose
2010-12-14 10:00 ` [Patch 3/21] Make vma_dump_size() generic Suzuki K. Poulose
2010-12-14 15:53 ` Oleg Nesterov
2010-12-14 10:01 ` [Patch 4/21] Make fill_psinfo generic Suzuki K. Poulose
2010-12-14 15:53 ` Oleg Nesterov
2010-12-14 15:55 ` Linus Torvalds
2010-12-15 2:22 ` Suzuki K. Poulose
2010-12-14 10:03 ` [Patch 5/21] Rename compat versions of the reusable core generation routines Suzuki K. Poulose
2010-12-14 15:57 ` Oleg Nesterov
2010-12-15 2:30 ` Suzuki K. Poulose
2010-12-14 10:04 ` [Patch 6/21] Export the reusable ELF " Suzuki K. Poulose
2010-12-14 10:05 ` [Patch 7/21] Define API for reading arch specif Program Headers for Core Suzuki K. Poulose
2010-12-14 10:08 ` [Patch 8/21] ia64 Implementation of elf_core_copy_extra_phdrs() Suzuki K. Poulose
2010-12-14 10:09 ` [Patch 9/21] UML (i386) " Suzuki K. Poulose
2010-12-14 10:11 ` [Patch 10/21] Create /proc/pid/core entry Suzuki K. Poulose
2010-12-14 10:36 ` Cong Wang
2010-12-14 15:02 ` Suzuki K. Poulose
2010-12-14 10:12 ` [Patch 11/21] Track the core generation requests Suzuki K. Poulose
2010-12-14 10:51 ` Alexey Dobriyan
2010-12-14 16:04 ` Oleg Nesterov
2010-12-14 10:13 ` [Patch 12/21] Check if the process is an ELF executable Suzuki K. Poulose
2010-12-14 16:05 ` Oleg Nesterov
2010-12-14 10:15 ` [Patch 13/21] Freeze / Thaw threads Suzuki K. Poulose
2010-12-14 16:17 ` Oleg Nesterov
2010-12-14 10:16 ` [Patch 14/21] Create ELF header Suzuki K. Poulose
2010-12-14 16:24 ` Oleg Nesterov
2010-12-14 10:17 ` [Patch 15/21] Collect ELF Core notes data Suzuki K. Poulose
2010-12-14 16:37 ` Oleg Nesterov
2010-12-14 10:19 ` [Patch 16/21] Wait for threads to freeze Suzuki K. Poulose
2010-12-14 16:42 ` Oleg Nesterov
2010-12-14 10:20 ` [Patch 17/21] Calculate the size of the core file Suzuki K. Poulose
2010-12-14 10:22 ` [Patch 18/21] Generate the data sections for ELF Core Suzuki K. Poulose
2010-12-15 7:19 ` Cong Wang [this message]
2010-12-15 12:46 ` Suzuki K. Poulose
2010-12-16 2:14 ` Cong Wang
2010-12-14 10:24 ` [Patch 19/21] Identify the ELF class of the process Suzuki K. Poulose
2010-12-14 10:26 ` [Patch 20/21] Add supporting for compat ELF class data structures Suzuki K. Poulose
2010-12-14 10:27 ` [Patch 21/21] Compat ELF class Core generation support Suzuki K. Poulose
2010-12-14 10:54 ` [RFC] [Patch 0/21] Non disruptive application core dump infrastructure Alexey Dobriyan
2010-12-14 14:59 ` Suzuki K. Poulose
2010-12-14 15:49 ` Linus Torvalds
2010-12-14 16:03 ` Tejun Heo
2010-12-14 16:19 ` Linus Torvalds
2010-12-14 16:28 ` Tejun Heo
2010-12-15 5:34 ` Suzuki K. Poulose
2010-12-15 9:37 ` Tejun Heo
2010-12-15 11:26 ` Suzuki K. Poulose
2010-12-15 11:51 ` Andi Kleen
2010-12-16 7:57 ` Suzuki K. Poulose
2010-12-15 1:04 ` KAMEZAWA Hiroyuki
2010-12-15 5:24 ` Suzuki K. Poulose
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D086C1A.5000907@redhat.com \
--to=amwang@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=ananth@in.ibm.com \
--cc=andi@firstfloor.org \
--cc=d.hatayama@jp.fujitsu.com \
--cc=hch@lst.de \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=suzuki@in.ibm.com \
--cc=torvalds@linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.