[PATCH v2 2/3] drm/amdgpu: Allow dma_map_sg() coalescing

Robin Murphy robin.murphy at arm.com
Mon Apr 30 13:00:20 UTC 2018


On 27/04/18 20:42, Sinan Kaya wrote:
> On 4/27/2018 11:54 AM, Robin Murphy wrote:
>>
>>> ubuntu at ubuntu:~/amdgpu$_./vectoradd_hip.exe
>>> [  834.002206] create_process:620
>>> [  837.413021] Unable to handle kernel NULL pointer dereference at virtual address 00000018
>>
>> £5 says that's sg_dma_len(NULL), which implies either that something's gone horribly wrong with the scatterlist DMA mapping such that the lengths don't match, or much more likely that ttm.dma_address is NULL and I've missed the tiny subtlety below. Does that fix matters?
> 
> Turned out to be a null pointer problem after sg_next(). The following helped.

Ugh, right, the whole thing's in the wrong place such that when addrs is 
valid we can dereference junk on the way out of the loop (entirely 
needlessly)... v3 coming up.

Robin.

> 
> +               if (addrs && (dma_len == 0)) {
>                          dma_sg = sg_next(dma_sg);
> -                       dma_len = sg_dma_len(dma_sg);
> -                       addr = sg_dma_address(dma_sg);
> +                       if (dma_sg) {
> +                               dma_len = sg_dma_len(dma_sg);
> +                               addr = sg_dma_address(dma_sg);
> +                       }
>                  }
>   
> 


More information about the amd-gfx mailing list