rtl8812au icon indicating copy to clipboard operation
rtl8812au copied to clipboard

Line 557 in rtl8812au/core/rtw_cmd.c i get the following error: control reaches end of non-void function

Open nick9982 opened this issue 2 years ago • 7 comments

When I run make to build the driver I get the following errors.

make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/5.13.0-52-generic/build M=/home/nicholas/wifidriver2/rtl8812au modules make[1]: Entering directory '/usr/src/linux-headers-5.13.0-52-generic' CC [M] /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.o /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.c: In function ‘rtw_cmd_thread’: /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.c:557:1: error: control reaches end of non-void function [-Werror=return-type] 557 | } | ^ cc1: some warnings being treated as errors make[2]: *** [scripts/Makefile.build:281: /home/nicholas/wifidriver2/rtl8812au/core/rtw_cmd.o] Error 1 make[1]: *** [Makefile:1879: /home/nicholas/wifidriver2/rtl8812au] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-52-generic' make: *** [Makefile:1086: modules] Error 2

nick9982 avatar Jul 06 '22 18:07 nick9982

我也遇到了同样的问题, 坐等大神回复

magicly avatar Jul 07 '22 14:07 magicly

搜了一下, 在Makefile中添加一行代码即可。

EXTRA_CFLAGS += -Wno-return-type

编译过了, 但是最后报错

  CC [M]  /home/ly/code/rtl8812au/core/rtw_mp_ioctl.o
  LD [M]  /home/ly/code/rtl8812au/8812au.o
  MODPOST /home/ly/code/rtl8812au/Module.symvers
ERROR: modpost: "kthread_complete_and_exit" [/home/ly/code/rtl8812au/8812au.ko] undefined!
make[2]: *** [scripts/Makefile.modpost:150: /home/ly/code/rtl8812au/Module.symvers] Error 1
make[2]: *** Deleting file '/home/ly/code/rtl8812au/Module.symvers'
make[1]: *** [Makefile:1794: modules] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-5.13.0-52-generic'
make: *** [Makefile:1087: modules] Error 2

magicly avatar Jul 07 '22 14:07 magicly

原来是kernel 5.17改名字了, 我的kernel是5.13的。 grep一下kthread_complete_and_exit, 发现是在include/osdep_service_linux.h 149行, 改为如下即可:

#define thread_exit() complete_and_exit(NULL, 0)

参考 Kernel 5.17 renames complete_and_exit to kthread_complete_and_exit https://github.com/lwfinger/rtl8723ds/issues/15 https://lore.kernel.org/lkml/[email protected]/

magicly avatar Jul 07 '22 14:07 magicly

测试发现, 其实第一个错误可以不管, 只需要改thread_exit定义即可:

diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h
index 32a55b9..44fa5d5 100644
--- a/include/osdep_service_linux.h
+++ b/include/osdep_service_linux.h
@@ -146,7 +146,7 @@
        typedef int             thread_return;
        typedef void*   thread_context;

-       #define thread_exit() kthread_complete_and_exit(NULL, 0)
+       #define thread_exit() complete_and_exit(NULL, 0)^M

        typedef void timer_hdl_return;
        typedef void* timer_hdl_context;

magicly avatar Jul 07 '22 14:07 magicly

@magicly What you told me works. Thanks a lot magicly!

nick9982 avatar Jul 08 '22 03:07 nick9982

My pleasure~

magicly avatar Jul 08 '22 15:07 magicly

This is address in this PR

topherbuckley avatar Jul 28 '22 06:07 topherbuckley