Re: linux-next: Tree for July 28 ("copy_from_user_overflow"undefined)

From: Randy Dunlap
Date: Fri Jul 29 2011 - 11:13:28 EST


On Fri, 29 Jul 2011 13:07:16 +0200 Sedat Dilek wrote:

> On Fri, Jul 29, 2011 at 11:45 AM, Sedat Dilek
> <sedat.dilek@xxxxxxxxxxxxxx> wrote:
> > On Fri, Jul 29, 2011 at 11:02 AM, Sedat Dilek
> > <sedat.dilek@xxxxxxxxxxxxxx> wrote:
> >> On Fri, Jul 29, 2011 at 7:09 AM, Randy Dunlap <rdunlap@xxxxxxxxxxxx> wrote:
> >>> On Fri, 29 Jul 2011 03:34:26 +0200 Sedat Dilek wrote:
> >>>
> >>>> On Fri, Jul 29, 2011 at 1:01 AM, Randy Dunlap <rdunlap@xxxxxxxxxxxx> wrote:
> >>>> > On Thu, 28 Jul 2011 16:05:31 +0200 Sedat Dilek wrote:
> >>>> >
> >>>> >> Hi,
> >>>> >>
> >>>> >> just see this build-break on the last mile:
> >>>> >>
> >>>> >> [...]
> >>>> >>   OBJCOPY arch/x86/boot/compressed/vmlinux.bin
> >>>> >>   HOSTCC  arch/x86/boot/compressed/relocs
> >>>> >>   HOSTCC  arch/x86/boot/compressed/mkpiggy
> >>>> >> /mnt/sdb3/linux-kernel/linux-3.0/debian/build/source_i386_none/arch/x86/boot/compressed/relocs.c:
> >>>> >> In function 'print_absolute_symbols':
> >>>> >> /mnt/sdb3/linux-kernel/linux-3.0/debian/build/source_i386_none/arch/x86/boot/compressed/relocs.c:405:14:
> >>>> >> warning: variable 'sh_symtab' set but not used
> >>>> >> [-Wunused-but-set-variable]
> >>>> >> ERROR: "copy_from_user_overflow" [fs/binfmt_misc.ko] undefined!
> >>>> >> make[5]: *** [__modpost] Error 1
> >>>> >> make[4]: *** [modules] Error 2
> >>>> >> make[4]: *** Waiting for unfinished jobs....
> >>>> >>   RELOCS  arch/x86/boot/compressed/vmlinux.relocs
> >>>> >>   GZIP    arch/x86/boot/compressed/vmlinux.bin.gz
> >>>> >>   MKPIGGY arch/x86/boot/compressed/piggy.S
> >>>> >>   AS      arch/x86/boot/compressed/piggy.o
> >>>> >>   LD      arch/x86/boot/compressed/vmlinux
> >>>> >>   ZOFFSET arch/x86/boot/zoffset.h
> >>>> >>   OBJCOPY arch/x86/boot/vmlinux.bin
> >>>> >>   AS      arch/x86/boot/header.o
> >>>> >>   LD      arch/x86/boot/setup.elf
> >>>> >>   OBJCOPY arch/x86/boot/setup.bin
> >>>> >>   BUILD   arch/x86/boot/bzImage
> >>>> >> Setup is 15596 bytes (padded to 15872 bytes).
> >>>> >> System is 2471 kB
> >>>> >> CRC eb598167
> >>>> >> Kernel: arch/x86/boot/bzImage is ready  (#1)
> >>>> >> make[3]: *** [sub-make] Error 2
> >>>> >> make[2]: *** [all] Error 2
> >>>> >>
> >>>> >> I have these binfmt kernel-config options set:
> >>>> >>
> >>>> >> CONFIG_BINFMT_ELF=y
> >>>> >> # CONFIG_BINFMT_AOUT is not set
> >>>> >> CONFIG_BINFMT_MISC=m
> >>>> >
> >>>> > How does someone turn off this error message?
> >>>> >
> >>>> > I have:
> >>>> > # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
> >>>> > # CONFIG_STRICT_DEVMEM is not set
> >>>> >
> >>>> > and I still cannot get this error to go away (on x86_64).
> >>>> >
> >>>> >
> >>>> > ---
> >>>> > ~Randy
> >>>> > *** Remember to use Documentation/SubmitChecklist when testing your code ***
> >>>> >
> >>>>
> >>>> Can you say with which linux-next version you saw this first?
> >>>> My last version was next-20110722 (which was OK).
> >>>
> >>> It looks like 2011-0727 has lots of these errors in my randconfig builds,
> >>> but I can't say that they are all incorrect, so it's not very conclusive.
> >>>
> >>> ---
> >>> ~Randy
> >>> *** Remember to use Documentation/SubmitChecklist when testing your code ***
> >>>
> >>
> >> I can confirm next-20110726 is fine.
> >>
> >> # egrep 'BINFMT|DEBUG_STRICT_USER_COPY_CHECKS|STRICT_DEVMEM'
> >> /boot/config-3.0.0-next20110726.3-686-small
> >> CONFIG_BINFMT_ELF=y
> >> CONFIG_BINFMT_AOUT=m
> >> CONFIG_BINFMT_MISC=m
> >> CONFIG_STRICT_DEVMEM=y
> >> # CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set
> >>
> >> So, the binfmt_misc culprit was introduced between next-20110726
> >> (good) and next-20110727 (bad).
> >> I'll try to look into the diff, but can't promise.
> >>
> >> - Sedat -
> >>
> >
> > [ CCing all people from 0416 patch ]
> >
> > OK, here a quick review and looking for suspicious commits:
> >
> > $ git format-patch next-20110726..next-20110727
> >
> > 487 patches in total.
> >
> > $ grep copy_from_user_overflow -nr *.patch
> >
> > 0389-x86_64-allmodconfig.patch
> > 0414-Enabling-DEBUG_STRICT_USER_COPY_CHECKS-causes-the-fo.patch
> > 0415-Strict-user-copy-checks-are-only-really-supported-on.patch
> > 0416-The-help-text-for-this-config-is-duplicated-across-t.patch
> >
> > 0416 has thrown out...
> >
> > -void copy_from_user_overflow(void)
> > -{
> > -       WARN(1, "Buffer overflow detected!\n");
> > -}
> > -EXPORT_SYMBOL(copy_from_user_overflow);
> >
> > ...and consilidated that in...
> >
> > --- /dev/null
> > +++ b/lib/usercopy.c
> > @@ -0,0 +1,8 @@
> > +#include <linux/module.h>
> > +#include <linux/bug.h>
> > +
> > +void copy_from_user_overflow(void)
> > +{
> > +       WARN(1, "Buffer overflow detected!\n");
> > +}
> > +EXPORT_SYMBOL(copy_from_user_overflow);
> >
> > ...BUT builds usercopy.o only on
> > CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS...
> >
> > -- a/lib/Makefile
> > +++ b/lib/Makefile
> > @@ -14,6 +14,7 @@ lib-y := ctype.o string.o vsprintf.o cmdline.o \
> >         proportions.o prio_heap.o ratelimit.o show_mem.o \
> >         is_single_threaded.o plist.o decompress.o find_next_bit.o
> >
> > +lib-$(CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS) += usercopy.o
> >  lib-$(CONFIG_MMU) += ioremap.o
> >  lib-$(CONFIG_SMP) += cpumask.o
> >
> > So, I can rebuild next-201107{27,28} with
> > CONFIG_ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS=y and look again if the
> > build-breakage in binfmt_misc is gone.
> >
> > Any comments from x86 folk?
> >
> > - Sedat -
> >
>
> I was able to compile next-20110728 by reverting:
>
> commit ab3b49d018924085e5d949c1af53fae0da9a8d94
> "The help text for this config is duplicated across the x86, parisc,
> and s390 Kconfig.debug files."
>
> The revert-patch is attached, also my kernel-config.
>
> Randy, can you test with it for x86_64, please?
> Thanks in advance.

Yes, that works for me. Thanks for your work on this problem.

---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
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/