Subject: Re: Coverity: iopt_map_user_pages(): Memory - illegal accesses

From: Jason Gunthorpe <[email-masked]>
Date: Wed, 2 Nov 2022 17:07:26 -0300

On Wed, Nov 02, 2022 at 12:54:40PM -0700, coverity-bot wrote:

> *** CID 1527094:  Memory - illegal accesses  (UNINIT)
> /drivers/iommu/iommufd/io_pagetable.c: 415 in iopt_map_user_pages()
> 409     	elm.start_byte = uptr - elm.pages->uptr;
> 410     	elm.length = length;
> 411     	list_add(&elm.next, &pages_list);
> 412
> 413     	rc = iopt_map_pages(iopt, &pages_list, length, iova, iommu_prot, flags);
> 414     	if (rc) {
> vvv     CID 1527094:  Memory - illegal accesses  (UNINIT)
> vvv     Using uninitialized value "elm.area".
> 415     		if (elm.area)
> 416     			iopt_abort_area(elm.area);
> 417     		if (elm.pages)
> 418     			iopt_put_pages(elm.pages);
> 419     		return rc;
> 420     	}
>
> If this is a false positive, please let us know so we can mark it as
> such, or teach the Coverity rules to be smarter. If not, please make
> sure fixes get into linux-next. :) For patches fixing this, please
> include these lines (but double-check the "Fixes" first):

Yep, I will squash this in:

-       struct iopt_pages_list elm;
+       struct iopt_pages_list elm = {};
        LIST_HEAD(pages_list);
        int rc;

Thanks,
Jason