undefined reference to `__put_user_bad' in `mtdblock_ioctl', arch=ARM

Larry Doolittle ldoolitt at recycle.lbl.gov
Wed Sep 26 13:52:17 EDT 2001

Building the CVS version of MTD, embedded within
linux-2.4.9-ac9-rmk1-np1 for StrongARM using gcc-2.95.3,
I get:

drivers/mtd/mtdlink.o: In function `mtdblock_ioctl':
drivers/mtd/mtdlink.o(.text+0xadcc): undefined reference to `__put_user_bad'
drivers/mtd/mtdlink.o(.text+0xadcc): relocation truncated to fit: R_ARM_PC24 __p
make: *** [vmlinux] Error 1

It appears as if mtdblock_ioctl() in drivers/mtd/mtdblock.c, faced with
the case BLKGETSIZE64, does a put_user() of a 64-bit number.  Eight-byte
put_user()'s are not supported on ARM or x86.
    (ref: include/asm-{arm,i386}/uaccess.h, macro __put_user_size)


      - Larry

More information about the linux-mtd mailing list