Hello Lorenzo Stoakes, The patch eca1a00155df: "mm/gup: remove vmas parameter from get_user_pages_remote()" from May 14, 2023, leads to the following Smatch static checker warning: mm/memory.c:5617 __access_remote_vm() error: uninitialized symbol 'vma'. mm/memory.c 5590 int __access_remote_vm(struct mm_struct *mm, unsigned long addr, void *buf, 5591 int len, unsigned int gup_flags) 5592 { 5593 void *old_buf = buf; 5594 int write = gup_flags & FOLL_WRITE; 5595 5596 if (mmap_read_lock_killable(mm)) 5597 return 0; 5598 5599 /* ignore errors, just check how much was successfully transferred */ 5600 while (len) { 5601 int bytes, offset; 5602 void *maddr; 5603 struct vm_area_struct *vma; 5604 struct page *page = get_user_page_vma_remote(mm, addr, 5605 gup_flags, &vma); 5606 5607 if (IS_ERR_OR_NULL(page)) { If page is either an error pointer or NULL then 5608 int ret = 0; 5609 5610 #ifndef CONFIG_HAVE_IOREMAP_PROT 5611 break; 5612 #else 5613 /* 5614 * Check if this is a VM_IO | VM_PFNMAP VMA, which 5615 * we can access using slightly different code. 5616 */ --> 5617 if (!vma) that means vma is unitialized. 5618 break; 5619 if (vma->vm_ops && vma->vm_ops->access) 5620 ret = vma->vm_ops->access(vma, addr, buf, 5621 len, write); 5622 if (ret <= 0) 5623 break; 5624 bytes = ret; 5625 #endif 5626 } else { 5627 bytes = len; 5628 offset = addr & (PAGE_SIZE-1); 5629 if (bytes > PAGE_SIZE-offset) 5630 bytes = PAGE_SIZE-offset; 5631 5632 maddr = kmap(page); 5633 if (write) { 5634 copy_to_user_page(vma, page, addr, 5635 maddr + offset, buf, bytes); 5636 set_page_dirty_lock(page); 5637 } else { 5638 copy_from_user_page(vma, page, addr, 5639 buf, maddr + offset, bytes); 5640 } 5641 kunmap(page); 5642 put_page(page); 5643 } 5644 len -= bytes; 5645 buf += bytes; 5646 addr += bytes; 5647 } 5648 mmap_read_unlock(mm); 5649 5650 return buf - old_buf; 5651 } regards, dan carpenter