Re: Compilation error report for: drivers/firmware/qcom_scm.c:469:47: error: passing argument 3 of ‘dma_alloc_coherent’ from incompatible pointer type

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 30, 2018 at 11:11 AM, Benjamin GAIGNARD
<benjamin.gaignard@xxxxxx> wrote:
>
> On 01/12/2018 05:11 PM, Arnaud Pouliquen wrote:
>> Hello Andy,David,
> + Arnd
>
> I have the same issue on drm-misc-next.
> Does Arnaud's fix make sense or should we update/change the way of how
> we compile the kernel ?

We've hit a couple of bugs with qcom drivers confusing physical addresses
and DMA addresses in the past, usually the drivers were buggy in
some form, and tried to use dma_alloc_coherent() to get a buffer
that gets passed into a firmware interface taking a physical address,
which is of course completely wrong.

>> diff --git a/drivers/firmware/qcom_scm.c b/drivers/firmware/qcom_scm.c
>> index af4c752..8dfbe61 100644
>> --- a/drivers/firmware/qcom_scm.c
>> +++ b/drivers/firmware/qcom_scm.c
>> @@ -448,7 +448,7 @@ int qcom_scm_assign_mem(phys_addr_t mem_addr, size_t
>> mem_sz,
>>       struct qcom_scm_mem_map_info *mem_to_map;
>>       phys_addr_t mem_to_map_phys;
>>       phys_addr_t dest_phys;
>> -     phys_addr_t ptr_phys;
>> +     dma_addr_t ptr_phys;
>>       size_t mem_to_map_sz;
>>       size_t dest_sz;
>>       size_t src_sz;

This would be bad: you can basically never have a 'dma_addr_t ptr_phys': it can
be exactly one of 'dma address',  'physical address' or a pointer,
this claims that the
struct member is all three of them.

The proper fix here is to stop using dma_alloc_coherent.

     Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux