On 10-06-19, 09:51, Peng Ma wrote: > >> + goto err; > >> + > >> + comp_temp->fl_virt_addr = > >> + (void *)((struct dpaa2_fd *) > >> + comp_temp->fd_virt_addr + 1); > > > >casts and pointer math, what could go wrong!! This doesnt smell right! > > > >> + comp_temp->fl_bus_addr = comp_temp->fd_bus_addr + > >> + sizeof(struct dpaa2_fd); > > > >why not use fl_virt_addr and get the bus_address? > What you mean is I should use virt_to_phys to get the bus_address? Yes instead of maintaining both pointers, just use one and then when required use one to get other. For bus address I would prefer dma_map_single rather than virt_to_phys() -- ~Vinod