Linux GobiNet driver 1.37 (S2.36N2.56) fails to compile with Kernel 5.0+

#1

The GobiNet driver fails to build due to the following commit:

https://codeberg.org/mirror/git.kernel.org_pub_scm_linux_kernel_git_stable_linux/commit/567c5e13be5cc74d24f5eb54cf353c2e2277189b

make -C /lib/modules/5.0.14-300.fc30.x86_64/build M=/home/erik/Downloads/S2.36N2.56/GobiNet modules
make[1]: Entering directory '/usr/src/kernels/5.0.14-300.fc30.x86_64'
  CC [M]  /home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.o
/home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.c: In function ‘gobi_qmimux_open’:
/home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.c:357:11: error: too few arguments to function ‘dev_change_flags’
  357 |       if (dev_change_flags(real_dev, oflags | IFF_UP | IFF_RUNNING) < 0) {
      |           ^~~~~~~~~~~~~~~~
In file included from ./include/linux/etherdevice.h:26,
                 from /home/erik/Downloads/S2.36N2.56/GobiNet/Structs.h:75,
                 from /home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.h:128,
                 from /home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.c:119:
./include/linux/netdevice.h:3634:5: note: declared here
 3634 | int dev_change_flags(struct net_device *dev, unsigned int flags,
      |     ^~~~~~~~~~~~~~~~
make[2]: *** [scripts/Makefile.build:277: /home/erik/Downloads/S2.36N2.56/GobiNet/QMIDevice.o] Error 1
make[1]: *** [Makefile:1581: _module_/home/erik/Downloads/S2.36N2.56/GobiNet] Error 2
make[1]: Leaving directory '/usr/src/kernels/5.0.14-300.fc30.x86_64'
make: *** [Makefile:43: all] Error 2

It looks like just passing NULL as the final argument to linux_change_flags is pretty safe here unless you’re working with netlink:

--- QMIDevice.c.orig    2019-05-15 10:37:35.390928368 -0400
+++ QMIDevice.c 2019-05-15 10:37:50.676633106 -0400
@@ -354,7 +354,7 @@
    {
       printk("Adaptor Not Up\n");
       oflags = dev->flags;
-      if (dev_change_flags(real_dev, oflags | IFF_UP | IFF_RUNNING) < 0) {
+      if (dev_change_flags(real_dev, oflags | IFF_UP | IFF_RUNNING, NULL) < 0) {
           printk("IP-Config: Failed to open %s\n",
           dev->name);
       }

After this it compiles OK. Hope the quick/easy patch helps someone else out.

#2

Thanks for the information @hpxca. I’ve let our dev team know and we’ll address this issue.