getting kernel OOPS in SPI driver
I am getting the OOPS in the SPI driver. In the driver, work queue (create_singlethread_workqueue) is used to transfer the data. When the SPI interface closed,that time below kernel OOPs is happening. I am assuming this is because of pending works.
So, I tried to cancel the pending work in the SPI close function by using the function cancel_delayed_work, but still not working.
Can anyone help me to solve this
Please find the log below.
kernel BUG at kernel/kernel/workqueue.c:1037!
[ 294.024018] Unable to handle kernel NULL pointer dereference at virtual address 00000000
[ 294.032270] pgd = c0004000
[ 294.035067]  *pgd=00000000
[ 294.038828] Internal error: Oops: 817 [#1] PREEMPT SMP
[ 294.044130] last sysfs file: /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
[ 294.052118] Modules linked in: bthid
[ 294.055982] CPU: 1 Tainted: G W (184.108.40.206-dirty #3)
[ 294.062085] PC is at __bug+0x18/0x24
[ 294.065830] LR is at __bug+0x14/0x24
[ 294.069493] pc : [<c0049f1c>] lr : [<c0049f18>] psr: 600001d3
[ 294.069498] sp : cfe27e68 ip : 0000000c fp : cfe1b830
[ 295.100467] [<c0049f1c>] (__bug+0x18/0x24) from [<c00943e0>] (__queue_work+0x27c/0x360)
[ 295.108642] [<c00943e0>] (__queue_work+0x27c/0x360) from [<c0094524>] (queue_work_on+0x38/0x40)
[ 295.117430] [<c0094524>] (queue_work_on+0x38/0x40) from [<c0095e94>] (queue_work+0x2c/0x54)
[ 295.125955] [<c0095e94>] (queue_work+0x2c/0x54) from [<c029f454>] (my_spi_tx_rx_data+0x200/0x26c)