[bug report] dma-buf: Clarify that dma-buf sg lists are page aligned

Xiong, Jianxin jianxin.xiong at intel.com
Mon Nov 2 21:33:08 UTC 2020


Hi Dan,

Thanks for reporting the bug. I see what was missing. Am I supposed to submit a patch to
replace the original patch or just to fix this bug?

Jianxin 

> -----Original Message-----
> From: Dan Carpenter <dan.carpenter at oracle.com>
> Sent: Monday, November 02, 2020 12:15 AM
> To: Xiong, Jianxin <jianxin.xiong at intel.com>
> Cc: dri-devel at lists.freedesktop.org
> Subject: [bug report] dma-buf: Clarify that dma-buf sg lists are page aligned
> 
> Hello Jianxin Xiong,
> 
> The patch ac80cd17a615: "dma-buf: Clarify that dma-buf sg lists are page aligned" from Oct 14, 2020, leads to the following static checker
> warning:
> 
> 	drivers/dma-buf/dma-buf.c:917 dma_buf_map_attachment()
> 	error: 'sg_table' dereferencing possible ERR_PTR()
> 
> drivers/dma-buf/dma-buf.c
>    897          sg_table = attach->dmabuf->ops->map_dma_buf(attach, direction);
>    898          if (!sg_table)
>    899                  sg_table = ERR_PTR(-ENOMEM);
>    900
>    901          if (IS_ERR(sg_table) && dma_buf_is_dynamic(attach->dmabuf) &&
>    902               !IS_ENABLED(CONFIG_DMABUF_MOVE_NOTIFY))
>    903                  dma_buf_unpin(attach);
>    904
>    905          if (!IS_ERR(sg_table) && attach->dmabuf->ops->cache_sgt_mapping) {
>                     ^^^^^^^^^^^^^^^^^
> 
>    906                  attach->sgt = sg_table;
>    907                  attach->dir = direction;
>    908          }
>    909
>    910  #ifdef CONFIG_DMA_API_DEBUG
>    911          {
>    912                  struct scatterlist *sg;
>    913                  u64 addr;
>    914                  int len;
>    915                  int i;
>    916
>    917                  for_each_sgtable_dma_sg(sg_table, sg, i) {
>                                                 ^^^^^^^^^ Not checked here.
> 
>    918                          addr = sg_dma_address(sg);
>    919                          len = sg_dma_len(sg);
>    920                          if (!PAGE_ALIGNED(addr) || !PAGE_ALIGNED(len)) {
>    921                                  pr_debug("%s: addr %llx or len %x is not page aligned!\n",
>    922                                           __func__, addr, len);
>    923                          }
>    924                  }
>    925          }
>    926  #endif /* CONFIG_DMA_API_DEBUG */
> 
> regards,
> dan carpenter


More information about the dri-devel mailing list