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

Reply via email to