Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Linux 2.6.34-rc3 + CAN build problem

1 view
Skip to first unread message

Eric Dumazet

unread,
Apr 10, 2010, 9:50:02 AM4/10/10
to
Le samedi 10 avril 2010 à 10:13 +0200, Németh Márton a écrit :
> Hi,
>
> I have some problem building Liunux kernel 2.6.34-rc3 with the attached .config:
>
> $ make clean bzImage modules
> [...]
> CC net/socket.o
> LD net/802/built-in.o
> LD net/can/built-in.o
> CC [M] net/can/bcm.o
> CC [M] net/can/raw.o
> In file included from /mnt/store/nmarci/src/linux-2.6.34-rc3/arch/x86/include/asm/uaccess.h:571,
> from include/net/checksum.h:25,
> from include/linux/skbuff.h:28,
> from include/linux/if_ether.h:124,
> from include/linux/netdevice.h:29,
> from net/can/raw.c:48:
> In function ‘copy_from_user’,
> inlined from ‘raw_setsockopt’ at net/can/raw.c:447:
> /mnt/store/nmarci/src/linux-2.6.34-rc3/arch/x86/include/asm/uaccess_32.h:212: error: call to ‘copy_from_user_overflow’ declared with attribute error:
> copy_from_user() buffer size is not provably correct
> make[2]: *** [net/can/raw.o] Error 1
> make[1]: *** [net/can] Error 2
> make: *** [net] Error 2
>
>

Could you give us your compiler version ?

Code is fine, but compiler a bit dumb :(

[PATCH] can: avoids a false warning

At this point optlen == sizeof(sfilter) but some compilers are dumb.

Reported-by: Németh Márton <nm127@freemail.h
Signed-off-by: Eric Dumazet <eric.d...@gmail.com>
---
diff --git a/net/can/raw.c b/net/can/raw.c
index 3a7dffb..da99cf1 100644
--- a/net/can/raw.c
+++ b/net/can/raw.c
@@ -445,7 +445,7 @@ static int raw_setsockopt(struct socket *sock, int level, int optname,
return -EFAULT;
}
} else if (count == 1) {
- if (copy_from_user(&sfilter, optval, optlen))
+ if (copy_from_user(&sfilter, optval, sizeof(sfilter)))
return -EFAULT;
}


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majo...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Németh Márton

unread,
Apr 10, 2010, 10:40:01 AM4/10/10
to
Eric Dumazet írta:

> Le samedi 10 avril 2010 à 10:13 +0200, Németh Márton a écrit :
>> Hi,
>>
>> I have some problem building Liunux kernel 2.6.34-rc3 with the attached .config:
>>
>> $ make clean bzImage modules
>> [...]
>> CC net/socket.o
>> LD net/802/built-in.o
>> LD net/can/built-in.o
>> CC [M] net/can/bcm.o
>> CC [M] net/can/raw.o
>> In file included from /mnt/store/nmarci/src/linux-2.6.34-rc3/arch/x86/include/asm/uaccess.h:571,
>> from include/net/checksum.h:25,
>> from include/linux/skbuff.h:28,
>> from include/linux/if_ether.h:124,
>> from include/linux/netdevice.h:29,
>> from net/can/raw.c:48:
>> In function ‘copy_from_user’,
>> inlined from ‘raw_setsockopt’ at net/can/raw.c:447:
>> /mnt/store/nmarci/src/linux-2.6.34-rc3/arch/x86/include/asm/uaccess_32.h:212: error: call to ‘copy_from_user_overflow’ declared with attribute error:
>> copy_from_user() buffer size is not provably correct
>> make[2]: *** [net/can/raw.o] Error 1
>> make[1]: *** [net/can] Error 2
>> make: *** [net] Error 2
>>
>>
>
> Could you give us your compiler version ?

$ gcc --version
gcc (Debian 4.4.2-9) 4.4.3 20100108 (prerelease)
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Oliver Hartkopp

unread,
Apr 10, 2010, 12:40:02 PM4/10/10
to

Acked-by: Oliver Hartkopp <oli...@hartkopp.net>

Btw. i'm using the same compiler here (Debian Squeeze), and i did not have any
build problems with 2.6.24-rc3 and the following kernels like the currently
running 2.6.34-rc3-00288-gab195c5:

$ cat /proc/version
Linux version 2.6.34-rc3-00288-gab195c5 (hartko@vwagwolkf320) (gcc version
4.4.3 20100108 (prerelease) (Debian 4.4.2-9) ) #70 SMP Tue Apr 6 19:14:52 CEST
2010

So i wonder why Nemeth trapped into this problem ... probably an include file
mix-up?

Regards,
Oliver

David Miller

unread,
Apr 10, 2010, 10:50:01 PM4/10/10
to
From: Eric Dumazet <eric.d...@gmail.com>
Date: Sat, 10 Apr 2010 11:47:31 +0200

> Could you give us your compiler version ?
>
> Code is fine, but compiler a bit dumb :(

Build failures happen all over the kernel with that
USER_COPY_CHECK config option enabled, it's not really
a bug report and I've even told people like Stephen
Rothwell to do their allmodconfig builds on platforms
like sparc64 with this option hard disabled.

David Miller

unread,
Apr 10, 2010, 11:00:02 PM4/10/10
to
From: Oliver Hartkopp <sock...@hartkopp.net>
Date: Sat, 10 Apr 2010 14:36:48 +0200

> So i wonder why Nemeth trapped into this problem ... probably an include file
> mix-up?

Do you have CONFIG_DEBUG_STRICT_USER_COPY_CHECKS enabled in your
kernel config?

That's the only way you get an actual failure of a build when
the user copy size can't be proven to be in range by the
compiler, otherwise it just warns.

Németh Márton

unread,
Apr 11, 2010, 5:20:02 AM4/11/10
to
David Miller wrote:
> From: Oliver Hartkopp <sock...@hartkopp.net>
> Date: Sat, 10 Apr 2010 14:36:48 +0200
>
>> So i wonder why Nemeth trapped into this problem ... probably an include file
>> mix-up?
>
> Do you have CONFIG_DEBUG_STRICT_USER_COPY_CHECKS enabled in your
> kernel config?

CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y

David Miller

unread,
Apr 11, 2010, 5:20:02 AM4/11/10
to
From: Németh Márton <nm...@freemail.hu>
Date: Sun, 11 Apr 2010 07:14:47 +0200

> David Miller wrote:
>> From: Oliver Hartkopp <sock...@hartkopp.net>
>> Date: Sat, 10 Apr 2010 14:36:48 +0200
>>
>>> So i wonder why Nemeth trapped into this problem ... probably an include file
>>> mix-up?
>>
>> Do you have CONFIG_DEBUG_STRICT_USER_COPY_CHECKS enabled in your
>> kernel config?
>
> CONFIG_DEBUG_STRICT_USER_COPY_CHECKS=y

Just turn that off in your builds, it's for developers who want
to work on correcting those warnings, not you :-)

Oliver Hartkopp

unread,
Apr 11, 2010, 7:00:01 PM4/11/10
to
David Miller wrote:
> From: Oliver Hartkopp <sock...@hartkopp.net>
> Date: Sat, 10 Apr 2010 14:36:48 +0200
>
>> So i wonder why Nemeth trapped into this problem ... probably an include file
>> mix-up?
>
> Do you have CONFIG_DEBUG_STRICT_USER_COPY_CHECKS enabled in your
> kernel config?
>
> That's the only way you get an actual failure of a build when
> the user copy size can't be proven to be in range by the
> compiler, otherwise it just warns.

No, indeed i do not have it set.

# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set

What would be the best approach to fix this build failure then?

By applying the patch thankfully provided by Eric?

Regards,
Oliver

David Miller

unread,
Apr 11, 2010, 8:20:02 PM4/11/10
to
From: Oliver Hartkopp <sock...@hartkopp.net>
Date: Sun, 11 Apr 2010 20:53:56 +0200

> By applying the patch thankfully provided by Eric?

I'll probably do that, yes.

David Miller

unread,
Apr 13, 2010, 10:10:01 AM4/13/10
to
From: Eric Dumazet <eric.d...@gmail.com>
Date: Sat, 10 Apr 2010 11:47:31 +0200

> [PATCH] can: avoids a false warning
>
> At this point optlen == sizeof(sfilter) but some compilers are dumb.
>
> Reported-by: Németh Márton <nm127@freemail.h
> Signed-off-by: Eric Dumazet <eric.d...@gmail.com>

Applied, thanks Eric.

0 new messages