I have written a kernel module named hello.ko. The module is very simple and only has module_init and module_exit in it.
The module source code (hello.c) is compiled and insmod and rmmod successfully on RPI (raspbian) / PC (ubuntu-14.04).

On nanopi m1 (official ROM debian 3.4.39_20171102) the module can be insmod, but failed to rmmod and return msg "Device or resource busy". It can only be removed by "sudo rmmod -f".

While using "sudo rmmod hello", the dmesg won't show any failed log. While using "sudo rmmod -f hello", the dmesg shows "Disabling lock debugging due to kernel taint" (with original official ROM")

I tried to cross-compile the kernel by execute "./build.sh -p sun8iw7p1 -b nanopi-h3". The kernel build was success without an error. I copied the new boot.img and replaced the original boot.img file. The nanopi could restart normally.
"uname -r" returned "3.4.39-h3". And the kernel built datetime is also correct (new datetime), checked by "uname -a" command.

I repeated the insmod and rmmod experiments. The insmod was still correct. I could see the "Hello World" message by dmesg. The rmmod still failed with "the device was busy" msg. But this time there was no "kernel taint" message when checked with dmesg.

After that, I even tried these steps on nanopi directly (skip cross-compile)

sudo make -j4 CROSS_COMPILE=
sudo make CROSS_COMPILE= modules_install
sudo make CROSS_COMPILE= modules_prepare

All the above steps are executed correctly. I changed the kernel source to /lib/modules/(uname -r)/build in Makefile, recompile the hello.ko. The newly built module was still failed to rmmod normally. It could be rmmod -f. Without error log in dmesg,

Is there any suggestions? Can you guys build removable kernel module successfully with lichee-3.4 ?
Thanks for your help.