Skip to contentSkip to conversation

ntb: Sleep in interrupt handling

BUG Jia-Ju Bai 2 participants 2 messages Jun 1, 2017 NTB driver core

lore
Share & tools
lore

Jia-Ju Bai

author
#0 lore raw

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 sleep

This 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

#1 lore raw

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_init indicates it handles interrupt)
ntb_process_rxc

     ntb_async_rx
       ntb_async_rx_submit
         schedule_timeout --> may sleep

This 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