2008/12/5 <[email protected]>:
> Revision 5822 Author vapier Date 2008-12-04 23:53:47 -0600 (Thu, 04 Dec
> 2008)
>
> Log Message
>
> check the return value of clear_user()
>
Need I submit this patch to upstream or did you already do it?
Actually, I don't know what kind of bugs you're fixing here, any tracker?
-Bryan
> Modified Paths
>
> trunk/fs/binfmt_elf_fdpic.c
>
> Diff
>
> Modified: trunk/fs/binfmt_elf_fdpic.c (5821 => 5822)
>
> --- trunk/fs/binfmt_elf_fdpic.c 2008-12-05 04:52:06 UTC (rev 5821)
> +++ trunk/fs/binfmt_elf_fdpic.c 2008-12-05 05:53:47 UTC (rev 5822)
> @@ -976,9 +976,12 @@
> params->elfhdr_addr = seg->addr;
>
> /* clear any space allocated but not loaded */
> - if (phdr->p_filesz < phdr->p_memsz)
> - clear_user((void *) (seg->addr + phdr->p_filesz),
> - phdr->p_memsz - phdr->p_filesz);
> + if (phdr->p_filesz < phdr->p_memsz) {
> + ret = clear_user((void *) (seg->addr + phdr->p_filesz),
> + phdr->p_memsz - phdr->p_filesz);
> + if (ret)
> + return ret;
> + }
>
> if (mm) {
> if (phdr->p_flags & PF_X) {
> @@ -1020,7 +1023,7 @@
> struct elf32_fdpic_loadseg *seg;
> struct elf32_phdr *phdr;
> unsigned long load_addr, delta_vaddr;
> - int loop, dvset;
> + int loop, dvset, ret;
>
> load_addr = params->load_addr;
> delta_vaddr = 0;
> @@ -1209,7 +1212,9 @@
> * PT_LOAD */
> if (prot & PROT_WRITE && disp > 0) {
> kdebug("clear[%d] ad=%lx sz=%lx", loop, maddr, disp);
> - clear_user((void __user *) maddr, disp);
> + ret = clear_user((void __user *) maddr, disp);
> + if (ret)
> + return ret;
> maddr += disp;
> }
>
> @@ -1244,15 +1249,19 @@
> if (prot & PROT_WRITE && excess1 > 0) {
> kdebug("clear[%d] ad=%lx sz=%lx",
> loop, maddr + phdr->p_filesz, excess1);
> - clear_user((void __user *) maddr + phdr->p_filesz,
> - excess1);
> + ret = clear_user((void __user *) maddr + phdr->p_filesz,
> + excess1);
> + if (ret)
> + return ret;
> }
>
> #else
> if (excess > 0) {
> kdebug("clear[%d] ad=%lx sz=%lx",
> loop, maddr + phdr->p_filesz, excess);
> - clear_user((void *) maddr + phdr->p_filesz, excess);
> + ret = clear_user((void *) maddr + phdr->p_filesz,
> excess);
> + if (ret)
> + return ret;
> }
> #endif
>
>
> _______________________________________________
> Linux-kernel-commits mailing list
> [email protected]
> http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits
>
>
_______________________________________________
Linux-kernel-commits mailing list
[email protected]
http://blackfin.uclinux.org/mailman/listinfo/linux-kernel-commits