Hi "Christian, I love your patch! Perhaps something to improve: [auto build test WARNING on linus/master] [also build test WARNING on v5.1-rc7 next-20190430] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system] url: https://github.com/0day-ci/linux/commits/Christian-K-nig/dma-buf-add-struct-dma_buf_attach_info-v2/20190430-221017 reproduce: # apt-get install sparse make ARCH=x86_64 allmodconfig make C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> sparse warnings: (new ones prefixed by >>) >> drivers/xen/gntdev-dmabuf.c:634:33: sparse: sparse: incorrect type in argument 1 (different base types) @@ expected struct dma_buf_attach_info const *info @@ got dma_buf_attach_info const *info @@ >> drivers/xen/gntdev-dmabuf.c:634:33: sparse: expected struct dma_buf_attach_info const *info >> drivers/xen/gntdev-dmabuf.c:634:33: sparse: got struct dma_buf *[assigned] dma_buf >> drivers/xen/gntdev-dmabuf.c:634:32: sparse: sparse: too many arguments for function dma_buf_attach vim +634 drivers/xen/gntdev-dmabuf.c bf8dc55b Oleksandr Andrushchenko 2018-07-20 605 932d6562 Oleksandr Andrushchenko 2018-07-20 606 static struct gntdev_dmabuf * 932d6562 Oleksandr Andrushchenko 2018-07-20 607 dmabuf_imp_to_refs(struct gntdev_dmabuf_priv *priv, struct device *dev, 932d6562 Oleksandr Andrushchenko 2018-07-20 608 int fd, int count, int domid) 932d6562 Oleksandr Andrushchenko 2018-07-20 609 { bf8dc55b Oleksandr Andrushchenko 2018-07-20 610 struct gntdev_dmabuf *gntdev_dmabuf, *ret; e648feab Christian König 2019-04-30 611 struct dma_buf_attach_info attach_info; bf8dc55b Oleksandr Andrushchenko 2018-07-20 612 struct dma_buf *dma_buf; bf8dc55b Oleksandr Andrushchenko 2018-07-20 613 struct dma_buf_attachment *attach; bf8dc55b Oleksandr Andrushchenko 2018-07-20 614 struct sg_table *sgt; bf8dc55b Oleksandr Andrushchenko 2018-07-20 615 struct sg_page_iter sg_iter; bf8dc55b Oleksandr Andrushchenko 2018-07-20 616 int i; bf8dc55b Oleksandr Andrushchenko 2018-07-20 617 bf8dc55b Oleksandr Andrushchenko 2018-07-20 618 dma_buf = dma_buf_get(fd); bf8dc55b Oleksandr Andrushchenko 2018-07-20 619 if (IS_ERR(dma_buf)) bf8dc55b Oleksandr Andrushchenko 2018-07-20 620 return ERR_CAST(dma_buf); bf8dc55b Oleksandr Andrushchenko 2018-07-20 621 bf8dc55b Oleksandr Andrushchenko 2018-07-20 622 gntdev_dmabuf = dmabuf_imp_alloc_storage(count); bf8dc55b Oleksandr Andrushchenko 2018-07-20 623 if (IS_ERR(gntdev_dmabuf)) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 624 ret = gntdev_dmabuf; bf8dc55b Oleksandr Andrushchenko 2018-07-20 625 goto fail_put; bf8dc55b Oleksandr Andrushchenko 2018-07-20 626 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 627 bf8dc55b Oleksandr Andrushchenko 2018-07-20 628 gntdev_dmabuf->priv = priv; bf8dc55b Oleksandr Andrushchenko 2018-07-20 629 gntdev_dmabuf->fd = fd; bf8dc55b Oleksandr Andrushchenko 2018-07-20 630 e648feab Christian König 2019-04-30 631 memset(&attach_info, 0, sizeof(attach_info)); e648feab Christian König 2019-04-30 632 attach_info.dev = dev; e648feab Christian König 2019-04-30 633 attach_info.dmabuf = dma_buf; bf8dc55b Oleksandr Andrushchenko 2018-07-20 @634 attach = dma_buf_attach(dma_buf, dev); bf8dc55b Oleksandr Andrushchenko 2018-07-20 635 if (IS_ERR(attach)) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 636 ret = ERR_CAST(attach); bf8dc55b Oleksandr Andrushchenko 2018-07-20 637 goto fail_free_obj; bf8dc55b Oleksandr Andrushchenko 2018-07-20 638 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 639 bf8dc55b Oleksandr Andrushchenko 2018-07-20 640 gntdev_dmabuf->u.imp.attach = attach; bf8dc55b Oleksandr Andrushchenko 2018-07-20 641 bf8dc55b Oleksandr Andrushchenko 2018-07-20 642 sgt = dma_buf_map_attachment(attach, DMA_BIDIRECTIONAL); bf8dc55b Oleksandr Andrushchenko 2018-07-20 643 if (IS_ERR(sgt)) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 644 ret = ERR_CAST(sgt); bf8dc55b Oleksandr Andrushchenko 2018-07-20 645 goto fail_detach; bf8dc55b Oleksandr Andrushchenko 2018-07-20 646 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 647 bf8dc55b Oleksandr Andrushchenko 2018-07-20 648 /* Check number of pages that imported buffer has. */ bf8dc55b Oleksandr Andrushchenko 2018-07-20 649 if (attach->dmabuf->size != gntdev_dmabuf->nr_pages << PAGE_SHIFT) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 650 ret = ERR_PTR(-EINVAL); bf8dc55b Oleksandr Andrushchenko 2018-07-20 651 pr_debug("DMA buffer has %zu pages, user-space expects %d\n", bf8dc55b Oleksandr Andrushchenko 2018-07-20 652 attach->dmabuf->size, gntdev_dmabuf->nr_pages); bf8dc55b Oleksandr Andrushchenko 2018-07-20 653 goto fail_unmap; bf8dc55b Oleksandr Andrushchenko 2018-07-20 654 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 655 bf8dc55b Oleksandr Andrushchenko 2018-07-20 656 gntdev_dmabuf->u.imp.sgt = sgt; bf8dc55b Oleksandr Andrushchenko 2018-07-20 657 bf8dc55b Oleksandr Andrushchenko 2018-07-20 658 /* Now convert sgt to array of pages and check for page validity. */ bf8dc55b Oleksandr Andrushchenko 2018-07-20 659 i = 0; bf8dc55b Oleksandr Andrushchenko 2018-07-20 660 for_each_sg_page(sgt->sgl, &sg_iter, sgt->nents, 0) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 661 struct page *page = sg_page_iter_page(&sg_iter); bf8dc55b Oleksandr Andrushchenko 2018-07-20 662 /* bf8dc55b Oleksandr Andrushchenko 2018-07-20 663 * Check if page is valid: this can happen if we are given bf8dc55b Oleksandr Andrushchenko 2018-07-20 664 * a page from VRAM or other resources which are not backed bf8dc55b Oleksandr Andrushchenko 2018-07-20 665 * by a struct page. bf8dc55b Oleksandr Andrushchenko 2018-07-20 666 */ bf8dc55b Oleksandr Andrushchenko 2018-07-20 667 if (!pfn_valid(page_to_pfn(page))) { bf8dc55b Oleksandr Andrushchenko 2018-07-20 668 ret = ERR_PTR(-EINVAL); bf8dc55b Oleksandr Andrushchenko 2018-07-20 669 goto fail_unmap; bf8dc55b Oleksandr Andrushchenko 2018-07-20 670 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 671 bf8dc55b Oleksandr Andrushchenko 2018-07-20 672 gntdev_dmabuf->pages[i++] = page; bf8dc55b Oleksandr Andrushchenko 2018-07-20 673 } bf8dc55b Oleksandr Andrushchenko 2018-07-20 674 bf8dc55b Oleksandr Andrushchenko 2018-07-20 675 ret = ERR_PTR(dmabuf_imp_grant_foreign_access(gntdev_dmabuf->pages, bf8dc55b Oleksandr Andrushchenko 2018-07-20 676 gntdev_dmabuf->u.imp.refs, bf8dc55b Oleksandr Andrushchenko 2018-07-20 677 count, domid)); bf8dc55b Oleksandr Andrushchenko 2018-07-20 678 if (IS_ERR(ret)) bf8dc55b Oleksandr Andrushchenko 2018-07-20 679 goto fail_end_access; bf8dc55b Oleksandr Andrushchenko 2018-07-20 680 bf8dc55b Oleksandr Andrushchenko 2018-07-20 681 pr_debug("Imported DMA buffer with fd %d\n", fd); bf8dc55b Oleksandr Andrushchenko 2018-07-20 682 bf8dc55b Oleksandr Andrushchenko 2018-07-20 683 mutex_lock(&priv->lock); bf8dc55b Oleksandr Andrushchenko 2018-07-20 684 list_add(&gntdev_dmabuf->next, &priv->imp_list); bf8dc55b Oleksandr Andrushchenko 2018-07-20 685 mutex_unlock(&priv->lock); bf8dc55b Oleksandr Andrushchenko 2018-07-20 686 bf8dc55b Oleksandr Andrushchenko 2018-07-20 687 return gntdev_dmabuf; bf8dc55b Oleksandr Andrushchenko 2018-07-20 688 bf8dc55b Oleksandr Andrushchenko 2018-07-20 689 fail_end_access: bf8dc55b Oleksandr Andrushchenko 2018-07-20 690 dmabuf_imp_end_foreign_access(gntdev_dmabuf->u.imp.refs, count); bf8dc55b Oleksandr Andrushchenko 2018-07-20 691 fail_unmap: bf8dc55b Oleksandr Andrushchenko 2018-07-20 692 dma_buf_unmap_attachment(attach, sgt, DMA_BIDIRECTIONAL); bf8dc55b Oleksandr Andrushchenko 2018-07-20 693 fail_detach: bf8dc55b Oleksandr Andrushchenko 2018-07-20 694 dma_buf_detach(dma_buf, attach); bf8dc55b Oleksandr Andrushchenko 2018-07-20 695 fail_free_obj: bf8dc55b Oleksandr Andrushchenko 2018-07-20 696 dmabuf_imp_free_storage(gntdev_dmabuf); bf8dc55b Oleksandr Andrushchenko 2018-07-20 697 fail_put: bf8dc55b Oleksandr Andrushchenko 2018-07-20 698 dma_buf_put(dma_buf); bf8dc55b Oleksandr Andrushchenko 2018-07-20 699 return ret; 932d6562 Oleksandr Andrushchenko 2018-07-20 700 } 932d6562 Oleksandr Andrushchenko 2018-07-20 701 :::::: The code at line 634 was first introduced by commit :::::: bf8dc55b135873d8bc58bb8fbc91c52f3a902eea xen/gntdev: Implement dma-buf import functionality :::::: TO: Oleksandr Andrushchenko <oleksandr_andrushchenko@xxxxxxxx> :::::: CC: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel