• Subhash Jadavani's avatar
    scsi: ufs: add reference counting for scsi block requests · 38135535
    Subhash Jadavani authored
    Currently we call the scsi_block_requests()/scsi_unblock_requests()
    whenever we want to block/unblock scsi requests but as there is no
    reference counting, nesting of these calls could leave us in undesired
    state sometime. Consider following call flow sequence:
    
    1. func1() calls scsi_block_requests() but calls func2() before
       calling scsi_unblock_requests()
    2. func2() calls scsi_block_requests()
    3. func2() calls scsi_unblock_requests()
    4. func1() calls scsi_unblock_requests()
    
    As there is no reference counting, we will have scsi requests unblocked
    after #3 instead of it to be unblocked only after #4. Though we may not
    have failures seen with this, we might run into some failures in future.
    Better solution would be to fix this by adding reference counting.
    Signed-off-by: default avatarSubhash Jadavani <subhashj@codeaurora.org>
    Signed-off-by: default avatarCan Guo <cang@codeaurora.org>
    Signed-off-by: default avatarAsutosh Das <asutoshd@codeaurora.org>
    Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
    38135535
ufshcd.c 214 KB