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

Dan Carpenter dan.carpenter at oracle.com
Tue Nov 3 06:23:13 UTC 2020


On Mon, Nov 02, 2020 at 09:33:08PM +0000, Xiong, Jianxin wrote:
> 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?
> 

Once the patch has been applied, then it's too late to replace it.  Just
send a patch to fix it.

regards,
dan carpenter

> 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