diff options
author | Magnus Damm <magnus@valinux.co.jp> | 2006-12-06 23:38:00 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-07 11:39:38 -0500 |
commit | 360276042d7a8369ce912acff99c1c4de394b312 (patch) | |
tree | e2773d559555f2a3af10587c65f9dfdbd08e8c09 /fs | |
parent | 584236ac7cdddeec0fdff25d2e475471ef91d028 (diff) |
[PATCH] elf: fix kcore note size calculation
- Define "CORE" string as CORE_STR in single common place.
- Include terminating zero in CORE_STR length calculation for elf_buflen.
- Use roundup(,4) to include alignment in elf_buflen calculation.
[akpm@osdl.org: simplification suggested by Roland]
Signed-off-by: Magnus Damm <magnus@valinux.co.jp>
Cc: Daniel Jacobowitz <drow@false.org>
Cc: Roland McGrath <roland@redhat.com>
Cc: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/proc/kcore.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/fs/proc/kcore.c b/fs/proc/kcore.c index 1294eda4acae..1be73082edd3 100644 --- a/fs/proc/kcore.c +++ b/fs/proc/kcore.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | 24 | ||
25 | #define CORE_STR "CORE" | ||
25 | 26 | ||
26 | static int open_kcore(struct inode * inode, struct file * filp) | 27 | static int open_kcore(struct inode * inode, struct file * filp) |
27 | { | 28 | { |
@@ -82,10 +83,11 @@ static size_t get_kcore_size(int *nphdr, size_t *elf_buflen) | |||
82 | } | 83 | } |
83 | *elf_buflen = sizeof(struct elfhdr) + | 84 | *elf_buflen = sizeof(struct elfhdr) + |
84 | (*nphdr + 2)*sizeof(struct elf_phdr) + | 85 | (*nphdr + 2)*sizeof(struct elf_phdr) + |
85 | 3 * (sizeof(struct elf_note) + 4) + | 86 | 3 * ((sizeof(struct elf_note)) + |
86 | sizeof(struct elf_prstatus) + | 87 | roundup(sizeof(CORE_STR), 4)) + |
87 | sizeof(struct elf_prpsinfo) + | 88 | roundup(sizeof(struct elf_prstatus), 4) + |
88 | sizeof(struct task_struct); | 89 | roundup(sizeof(struct elf_prpsinfo), 4) + |
90 | roundup(sizeof(struct task_struct), 4); | ||
89 | *elf_buflen = PAGE_ALIGN(*elf_buflen); | 91 | *elf_buflen = PAGE_ALIGN(*elf_buflen); |
90 | return size + *elf_buflen; | 92 | return size + *elf_buflen; |
91 | } | 93 | } |
@@ -210,7 +212,7 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff) | |||
210 | nhdr->p_offset = offset; | 212 | nhdr->p_offset = offset; |
211 | 213 | ||
212 | /* set up the process status */ | 214 | /* set up the process status */ |
213 | notes[0].name = "CORE"; | 215 | notes[0].name = CORE_STR; |
214 | notes[0].type = NT_PRSTATUS; | 216 | notes[0].type = NT_PRSTATUS; |
215 | notes[0].datasz = sizeof(struct elf_prstatus); | 217 | notes[0].datasz = sizeof(struct elf_prstatus); |
216 | notes[0].data = &prstatus; | 218 | notes[0].data = &prstatus; |
@@ -221,7 +223,7 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff) | |||
221 | bufp = storenote(¬es[0], bufp); | 223 | bufp = storenote(¬es[0], bufp); |
222 | 224 | ||
223 | /* set up the process info */ | 225 | /* set up the process info */ |
224 | notes[1].name = "CORE"; | 226 | notes[1].name = CORE_STR; |
225 | notes[1].type = NT_PRPSINFO; | 227 | notes[1].type = NT_PRPSINFO; |
226 | notes[1].datasz = sizeof(struct elf_prpsinfo); | 228 | notes[1].datasz = sizeof(struct elf_prpsinfo); |
227 | notes[1].data = &prpsinfo; | 229 | notes[1].data = &prpsinfo; |
@@ -238,7 +240,7 @@ static void elf_kcore_store_hdr(char *bufp, int nphdr, int dataoff) | |||
238 | bufp = storenote(¬es[1], bufp); | 240 | bufp = storenote(¬es[1], bufp); |
239 | 241 | ||
240 | /* set up the task structure */ | 242 | /* set up the task structure */ |
241 | notes[2].name = "CORE"; | 243 | notes[2].name = CORE_STR; |
242 | notes[2].type = NT_TASKSTRUCT; | 244 | notes[2].type = NT_TASKSTRUCT; |
243 | notes[2].datasz = sizeof(struct task_struct); | 245 | notes[2].datasz = sizeof(struct task_struct); |
244 | notes[2].data = current; | 246 | notes[2].data = current; |