Re: [PATCH] binfmt_elf.c: core file shrinking

From: Hillf Danton
Date: Fri Oct 14 2011 - 10:45:14 EST


On Fri, Oct 14, 2011 at 4:52 PM, Thanh-Lam NGUYEN
<thanh-lam.nguyen@xxxxxxxxxxxxxxxxxx> wrote:
> Sorry for upping the patch,
> as it is my first contribution I would like to know if there is any
> problem with it.
>
> Best regard
> Thanh lam NGUYEN
>
> On 11/10/2011 17:36, Thanh-Lam NGUYEN wrote:
>
>> The vma_shrink function looks for the 1st allocated and the last
>> allocated page. Only this part is dumped to the disk (the virual
>> start address and the size are dupdated to reflect the new dumped
>> information).
>>
>> Signed-off-by: Thanh Lam NGUYEN <thanh-lam.nguyen@xxxxxxxxxxxxxxxxxx>
>> Signed-off-by: Benjamin ZORES <Benjamin.Zores@xxxxxxxxxxxxxxxxxx>
>> ---
>> Âlinux/fs/binfmt_elf.c | Â 54
>> ++++++++++++++++++++++++++++++++++++++++++++++----

corrupted message?

>> Â1 file changed, 55 insertions(+), 4 deletions(-)
>>
>> --- linux/fs/binfmt_elf.c
>> +++ linux/fs/binfmt_elf.c
>> @@ -1085,6 +1085,48 @@
>> Â * Jeremy Fitzhardinge <jeremy@xxxxxxxx>
>> Â */
>>
>> +/*
>> + * Search for 1st and last allocated page from vma_start to vma_end.
>> + * Update vma_start and vma_end to reflect the result.
>> + */
>> +void vma_shrink(struct vm_area_struct *vma, unsigned long *vma_start,
>> + Â Â Â Â Â Â unsigned long *vma_end)
>> +{
>> + Â Â int allocated;
>> + Â Â unsigned long start, addr, end;
>> +
>> + Â Â allocated = 0;
>> + Â Â start = end = *vma_start;
>> + Â Â for (addr = *vma_start; _addr < *vma_end; addr += PAGE_SIZE) {
-----^
where is _addr from?

>> + Â Â Â Â Â Â struct page *page;
>> + Â Â Â Â Â Â if (get_user_pages(current, current->mm, addr, 1, 0, 1,
>> + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â&page, NULL) <= 0) {
>> + Â Â Â Â Â Â Â Â Â Â /* NO PAGE */
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/