Hi Tony, thanks for the message. The experimental branch is still...experimental, so I expect more things to crash and fail miserably :-D
In any case, feel free to send a patch if you see how to fix the issue! It would be nice to have external contributions :-) This said, I am not sure this is our bug - the sin6_addr member of struct sockaddr_in6 is of type struct sin6_addr: https://elixir.bootlin.com/linux/v5.4/source/include/uapi/linux/in6.h#L54 And I believe it is widely known that an IPv6 address is 12 bytes, not 8.. Maybe it's a bug in the compiler? Best Regards, On 13/01/2021 10:03, Tony He wrote: > Sorry, clicked "send" button before adding subject and CC Openvpn-dev. I > will send a new mail. > > Tony He <huangy...@gmail.com <mailto:huangy...@gmail.com>> 于2021年1月13 > 日周三 下午4:57写道: > > Hi Antonio, > > I see you have pushed new commits to support multiple link to peers. > So I tried compiling, but encounter below error. My kernel version > is 5.4.0-54. > > > > tony-vm-2004% make > > > > /project/openvpn/ovpn-dco.git/gen-compat-autoconf.sh > /project/openvpn/ovpn-dco.git/compat-autoconf.h > > > make -C /lib/modules/5.4.0-54-generic/build > M=/project/openvpn/ovpn-dco.git PWD=/project/openvpn/ovpn-dco.git > REVISION=2555e55 CONFIG_OVPN_DCO=m INSTALL_MOD_DIR=updates/ > modules > make[1]: Entering directory > '/usr/src/linux-headers-5.4.0-54-generic' > > > CC [M] /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/main.o > > > > CC [M] /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/bind.o > > > > CC [M] > /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/crypto.o > > > CC [M] /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/ovpn.o > > > > CC [M] /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.o > > > > In file included from ./include/linux/bitmap.h:9, > > > > from ./include/linux/cpumask.h:12, > > > > from ./arch/x86/include/asm/cpumask.h:5, > > > > from ./arch/x86/include/asm/msr.h:11, > > > > from ./arch/x86/include/asm/processor.h:21, > > > > from ./arch/x86/include/asm/cpufeature.h:5, > > > > from ./arch/x86/include/asm/thread_info.h:53, > > > > from ./include/linux/thread_info.h:38, > > > > from ./arch/x86/include/asm/preempt.h:7, > > > > from ./include/linux/preempt.h:78, > > > > from ./include/linux/spinlock.h:51, > > > > from ./include/linux/seqlock.h:36, > > > > from ./include/linux/time.h:6, > > > > from ./include/linux/ktime.h:24, > > > > from ./include/linux/timer.h:6, > > > > from ./include/linux/netdevice.h:24, > > > > from > /project/openvpn/ovpn-dco.git/linux-compat.h:20, > > > from <command-line>: > > > > In function ‘memcmp’, > > > > inlined from ‘ovpn_peer_lookup_transp_addr’ at > /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.c:457:8: > > > ./include/linux/string.h:440:4: error: call to ‘__read_overflow’ > declared with attribute error: detected read beyond size of object > passed as 1st parameter > > 440 | __read_overflow(); > | ^~~~~~~~~~~~~~~~~ > make[3]: *** [scripts/Makefile.build:275: > /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco/peer.o] Error 1 > make[2]: *** [scripts/Makefile.build:522: > /project/openvpn/ovpn-dco.git/drivers/net/ovpn-dco] Error 2 > make[1]: *** [Makefile:1757: /project/openvpn/ovpn-dco.git] Error 2 > make[1]: Leaving directory '/usr/src/linux-headers-5.4.0-54-generic' > make: *** [Makefile:46: all] Error 2 > > > Function memcmp > in /usr/src/linux-headers-5.4.0-54-generic/include/linux/string.h. > 434 __FORTIFY_INLINE int memcmp(const void *p, const void *q, > __kernel_size_t size) > 435 { > 436 size_t p_size = __builtin_object_size(p, 0); > 437 size_t q_size = __builtin_object_size(q, 0); > 438 if (__builtin_constant_p(size)) { > 439 if (p_size < size) > 440 __read_overflow(); > 441 if (q_size < size) > 442 __read_overflow2(); > 443 } > 444 if (p_size < size || q_size < size) > 445 fortify_panic(__func__); > 446 return __underlying_memcmp(p, q, size); > 447 } > > Seems that p_size is 8 in above memcmp function because if I change > your code as below , then it's OK(9 causes same error). > 456 case AF_INET6: > 457 if (memcmp((void *)&sa6->sin6_addr, > (void *)&bind->sa.in6.sin6_addr, > 458 // sizeof(struct in6_addr))) > 459 8)) > 460 break; > > Tony > -- Antonio Quartulli _______________________________________________ Openvpn-devel mailing list Openvpn-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openvpn-devel