rtl8192du icon indicating copy to clipboard operation
rtl8192du copied to clipboard

Unable to build for 3.10.108/3.14.29: "storage size of ‘kiocb’ isn’t known"

Open MilhouseVH opened this issue 6 years ago • 4 comments

Since https://github.com/lwfinger/rtl8192du/commit/9e9e5dd40f8f29d8875321c113199540a7d9ce0d on 12 March 2018 this driver no longer builds for kernels 3.10.y and 3.14.y:

/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c: In function ‘new_sync_read’:
/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c:47:22: error: storage size of ‘kiocb’ isn’t known
         struct kiocb kiocb;
                      ^~~~~
/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c:53:9: error: implicit declaration of function ‘init_sync_kiocb’; did you mean ‘bus_sync_io’? [-Werror=implicit-function-declaration]
         init_sync_kiocb(&kiocb, filp);
         ^~~~~~~~~~~~~~~
         bus_sync_io
...
/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c:57:15: error: implicit declaration of function ‘call_read_iter’; did you mean ‘file_read_actor’? [-Werror=implicit-function-declaration]
         ret = call_read_iter(filp, &kiocb, &iter);
               ^~~~~~~~~~~~~~
               file_read_actor
/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c: In function ‘__vfs_read_alt’:
/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaecccf/os_dep/osdep_service.c:68:30: error: ‘const struct file_operations’ has no member named ‘read_iter’; did you mean ‘readdir’?
         else if (file->f_op->read_iter)
                              ^~~~~~~~~
                              readdir

Full build log: http://ix.io/1d8c

PR #61 allows the build to succeed with current HEAD (a9deaecccf675d13a14ec12dd8d822eebec72c28), but that PR is closed for some reason, so I'm not sure if the fix is correct (I don't have any hardware with which to test the driver). There's a possibly related issue: #60, which refers to kernel 4.9.

MilhouseVH avatar Jun 12 '18 17:06 MilhouseVH

Actually I'm not even sure if this driver is going to be usable even though it builds with #61 - there's a bunch of undefined symbol WARNINGs at the end of the build when building against 3.10.108 and 3.14.29:

WARNING: "wiphy_free" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "ieee80211_frequency_to_channel" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_inform_bss_frame" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_rx_mgmt" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_del_sta" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_mgmt_tx_status" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "__ieee80211_get_channel" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_get_bss" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "wiphy_unregister" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_connect_result" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_michael_mic_failure" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "wiphy_apply_custom_regulatory" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_roamed" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_put_bss" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "wiphy_new" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "wiphy_register" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_ready_on_channel" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_disconnected" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_new_sta" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_remain_on_channel_expired" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!
WARNING: "cfg80211_scan_done" [/home/neil/projects/LibreELEC.tv/build.LibreELEC-WeTek_Core.arm-9.0-devel-next/RTL8192DU-a9deaec/8192du.ko] undefined!

The current version of the driver that is used, 5cb0486c856ad8de1353183c85b463e707620fb0, also has these same warnings, which is worrying. :)

Full build log (with #61): http://ix.io/1d8q (3.10.108 kernel)

MilhouseVH avatar Jun 12 '18 18:06 MilhouseVH

@lwfinger Not quite the same error but probably linked to this.

Build log: https://pastebin.com/pZnMDc69

/home/supervisedthinking/git/libreelec-rr/LibreELEC.tv/build.LibreELEC-KVIM.arm-9.1-devel/RTL8192DU-3105cd3179d5e60a7aa675611a3592a45b29bfcb/os_dep/osdep_service.c: In function ‘call_read_iter’:
/home/supervisedthinking/git/libreelec-rr/LibreELEC.tv/build.LibreELEC-KVIM.arm-9.1-devel/RTL8192DU-3105cd3179d5e60a7aa675611a3592a45b29bfcb/os_dep/osdep_service.c:41:19: error: ‘const struct file_operations’ has no member named ‘read_iter’
  return file->f_op->read_iter(kio, iter);

5schatten avatar Mar 20 '19 20:03 5schatten

Backporting a driver to very old kernels is a difficult problem. That "read_iter" member was not added until 3.16. I generally try to support kernels 4.0 or later unless Realtek has support for older kernels.

Is it possible for you to use a later kernel?

lwfinger avatar Mar 20 '19 20:03 lwfinger

Well in that case I guess it's not worth the hassle since the AML Kernel 3.14.29 is basically a dead end. I'll create a separate package with a older driver version then for this Kernel.

5schatten avatar Mar 20 '19 22:03 5schatten