Messages in this thread | | | From | Arnd Bergmann <> | Subject | Re: strict copy_from_user checks issues? | Date | Tue, 5 Jan 2010 14:45:25 +0100 |
| |
On Tuesday 05 January 2010, Arjan van de Ven wrote: > > In file included > > from /home2/heicarst/cfu/arch/s390/include/asm/mmu_context.h:13, > > from /home2/heicarst/cfu/arch/s390/include/asm/elf.h:133, from > > include/linux/elf.h:7, from include/linux/module.h:14, from > > drivers/net/tun.c:42: In function 'copy_from_user', > > inlined from '__tun_chr_ioctl' at drivers/net/tun.c:1124: > > /home2/heicarst/cfu/arch/s390/include/asm/uaccess.h:299: warning: > > call to 'copy_from_user_overflow' declared with attribute warning: > > copy_from_user() buffer size is not provably correct > > this one is ... interesting btw... I have trouble myself finding where > the check is done... so I can understand gcc having trouble too. >
I think it will get inlined on 32 bit machines or without CONFIG_COMPAT, but not when CONFIG_COMPAT is enabled, because then there are two call-sites.
The tun_chr_compat_ioctl was only merged in 2.6.33-rc1, so 2.6.32 could still inline the function all the time.
If the compiler is really smart (haven't tried), it can optimize away tun_chr_compat_ioctl entirely on i386 and make it an alias to tun_chr_ioctl, but not on s390 because that uses a nontrivial compat_ptr() function.
Arnd
| |