Подробности

[В начало]

Проблема в реализации № L0293

Краткое описание

dmaengine: rcar-dmac: разыменование нулевого указателя из-за преждевременной регистрации обработчика прерываний

Подробное описание

В следующем сценарии:

Thread 1:                            Thread 2:
rcar_dmac_probe
->rcar_dmac_chan_probe
             (&dmac->channels[i])
    rchan = &dmac->channels[i]
    chan = &rchan->chan
    devm_request_threaded_irq(rchan)
    chan->device = &dmac->engine    rcar_dmac_isr_channel
                                    ->rcar_dmac_isr_transfer_end(chan)
                                      ->rcar_dmac_chan_start_xfer(chan)
  engine->dev = &pdev->dev;               chan.device->dev>
  (rcar-dmac.c: line 1828)                (rcar-dmac.c: line 351)
engine->dev равен NULL до своей инициализации в probe. В результате в rcar_dmac_chan_start_xfer() может случиться разыменование нулевого указателя при обращении к chan->chan.device->dev, равного (&dmac->engine)->dev.

Компонент

linux-kernel 4.13

Принято

https://patchwork.kernel.org/patch/9911633/
commit

Статус

Исправлено в ядре 4.14-rc1

[В начало]