On 23-10-21, 15:41, Lars-Peter Clausen wrote: > Before the `callback_result` callback was introduced drivers coded their > invocation to the callback in a similar way to: > > if (cb->callback) { > spin_unlock(&dma->lock); > cb->callback(cb->callback_param); > spin_lock(&dma->lock); > } > > With the introduction of `callback_result` two helpers where introduced to > transparently handle both types of callbacks. And drivers where updated to > look like this: > > if (dmaengine_desc_callback_valid(cb)) { > spin_unlock(&dma->lock); > dmaengine_desc_callback_invoke(cb, ...); > spin_lock(&dma->lock); > } > > dmaengine_desc_callback_invoke() correctly handles both `callback_result` > and `callback`. But we forgot to update the dmaengine_desc_callback_valid() > function to check for `callback_result`. As a result DMA descriptors that > use the `callback_result` rather than `callback` don't have their callback > invoked by drivers that follow the pattern above. > > Fix this by checking for both `callback` and `callback_result` in > dmaengine_desc_callback_valid(). Thanks for the fix, applied now -- ~Vinod