ntb: Sleep in interrupt handling
According to ntb_transport.c, the driver may sleep in interrupt handling. The function call path is:ntb_transport_rxc_db (tasklet_init indicates it handles interrupt)
ntb_process_rxc
ntb_async_rx
ntb_async_rx_submit
schedule_timeout --> may sleepThis bug is found by my static analysis tool and my code review. I hope to fix it, but I do not have a good solution.
Thanks,
Jia-Ju Bai
From: Jia-Ju Bai
Quoted 10 lines
According to
ntb_transport.c, the driver may sleep in interrupt handling. The function call path is:ntb_transport_rxc_db(tasklet_initindicates it handles interrupt)
ntb_process_rxcntb_async_rx ntb_async_rx_submit schedule_timeout --> may sleepThis bug is found by my static analysis tool and my code review. I hope to fix it, but I do not have a good solution.
Thanks! There is a recovery path if ntb_async_tx_submit fails. It will do the transmission with memcpy instead of dma. So, rather than retry in ntb_async_tx_submit, just fail to the recovery path. Basically, replace the whole for(retries) loop with just txd = prep(); Would you like to work on the patch?
Quoted 3 lines
Thanks,
Jia-Ju Bai