| .. | .. |
|---|
| 551 | 551 | |
|---|
| 552 | 552 | /* The bad descriptor currently is in the head of vc list */ |
|---|
| 553 | 553 | vd = vchan_next_desc(&chan->vc); |
|---|
| 554 | + if (!vd) { |
|---|
| 555 | + dev_err(chan2dev(chan), "BUG: %s, IRQ with no descriptors\n", |
|---|
| 556 | + axi_chan_name(chan)); |
|---|
| 557 | + goto out; |
|---|
| 558 | + } |
|---|
| 554 | 559 | /* Remove the completed descriptor from issued list */ |
|---|
| 555 | 560 | list_del(&vd->node); |
|---|
| 556 | 561 | |
|---|
| .. | .. |
|---|
| 565 | 570 | /* Try to restart the controller */ |
|---|
| 566 | 571 | axi_chan_start_first_queued(chan); |
|---|
| 567 | 572 | |
|---|
| 573 | +out: |
|---|
| 568 | 574 | spin_unlock_irqrestore(&chan->vc.lock, flags); |
|---|
| 569 | 575 | } |
|---|
| 570 | 576 | |
|---|