gschorcht/spi-ch341-usb

irq_to_desc shouldn't be used in modules. Newer kernels don't export it.

SysGh-st opened this issue · 3 comments

Around line 796, there's irq_to_desc which shouldn't be used in a module. afaik, it's for kernel use only.
See https://patchwork.kernel.org/project/linux-rdma/patch/20201210194045.551428291@linutronix.de/
Kernel 5.10 and on won't export irq_to_desc any longer. As mentioned, it is to stop the abuse of it.

From now on this usage will only result in an undefined error:
ERROR: modpost: "irq_to_desc" [/home/sysghost/Sources/spi-ch341-usb/spi-ch341-usb.ko] undefined!

EDIT: More information about this:
https://patchwork.kernel.org/project/dri-devel/patch/20201210194044.769458162@linutronix.de/

What do you think about changing line 800 of spi-ch341-usb.c to
ch341_dev->irq_descs[i] = irq_data_to_desc( irq_get_irq_data(ch341_dev->irq_base + i) );

I think it should work...

Hello, I have tried xboxplayer9889's proposed fix and it seems to work. Will do further testing ...

(tried the same with i2c-ch341-usb, compiles OK and seems to work to)