CC: [email protected] CC: [email protected] TO: Haren Myneni <[email protected]> CC: Michael Ellerman <[email protected]> CC: Nicholas Piggin <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 1746f4db513563bb22e0ba0c419d0c90912dfae1 commit: 1a0d0d5ed5e3cd9e3fc1ad4459f1db2f3618fce0 powerpc/vas: Add platform specific user window operations date: 8 weeks ago :::::: branch date: 12 hours ago :::::: commit date: 8 weeks ago config: powerpc64-randconfig-m031-20210812 (attached as .config) compiler: powerpc-linux-gcc (GCC) 10.3.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: arch/powerpc/platforms/book3s/vas-api.c:100 coproc_ioc_tx_win_open() error: we previously assumed 'cp_inst->coproc->vops' could be null (see line 100) arch/powerpc/platforms/book3s/vas-api.c:170 coproc_mmap() error: we previously assumed 'cp_inst->coproc->vops' could be null (see line 170) vim +100 arch/powerpc/platforms/book3s/vas-api.c dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 72 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 73 static int coproc_ioc_tx_win_open(struct file *fp, unsigned long arg) dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 74 { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 75 void __user *uptr = (void __user *)arg; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 76 struct vas_tx_win_open_attr uattr; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 77 struct coproc_instance *cp_inst; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 78 struct vas_window *txwin; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 79 int rc; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 80 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 81 cp_inst = fp->private_data; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 82 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 83 /* dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 84 * One window for file descriptor dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 85 */ dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 86 if (cp_inst->txwin) dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 87 return -EEXIST; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 88 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 89 rc = copy_from_user(&uattr, uptr, sizeof(uattr)); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 90 if (rc) { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 91 pr_err("%s(): copy_from_user() returns %d\n", __func__, rc); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 92 return -EFAULT; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 93 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 94 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 95 if (uattr.version != 1) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 96 pr_err("Invalid window open API version\n"); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 97 return -EINVAL; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 98 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 99 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 @100 if (!cp_inst->coproc->vops && !cp_inst->coproc->vops->open_win) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 101 pr_err("VAS API is not registered\n"); 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 102 return -EACCES; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 103 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 104 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 105 txwin = cp_inst->coproc->vops->open_win(uattr.vas_id, uattr.flags, 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 106 cp_inst->coproc->cop_type); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 107 if (IS_ERR(txwin)) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 108 pr_err("%s() VAS window open failed, %ld\n", __func__, dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 109 PTR_ERR(txwin)); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 110 return PTR_ERR(txwin); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 111 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 112 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 113 cp_inst->txwin = txwin; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 114 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 115 return 0; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 116 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 117 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 118 static int coproc_release(struct inode *inode, struct file *fp) dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 119 { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 120 struct coproc_instance *cp_inst = fp->private_data; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 121 int rc; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 122 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 123 if (cp_inst->txwin) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 124 if (cp_inst->coproc->vops && 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 125 cp_inst->coproc->vops->close_win) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 126 rc = cp_inst->coproc->vops->close_win(cp_inst->txwin); 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 127 if (rc) 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 128 return rc; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 129 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 130 cp_inst->txwin = NULL; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 131 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 132 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 133 kfree(cp_inst); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 134 fp->private_data = NULL; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 135 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 136 /* dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 137 * We don't know here if user has other receive windows dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 138 * open, so we can't really call clear_thread_tidr(). dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 139 * So, once the process calls set_thread_tidr(), the dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 140 * TIDR value sticks around until process exits, resulting dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 141 * in an extra copy in restore_sprs(). dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 142 */ dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 143 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 144 return 0; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 145 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 146 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 147 static int coproc_mmap(struct file *fp, struct vm_area_struct *vma) dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 148 { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 149 struct coproc_instance *cp_inst = fp->private_data; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 150 struct vas_window *txwin; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 151 unsigned long pfn; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 152 u64 paste_addr; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 153 pgprot_t prot; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 154 int rc; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 155 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 156 txwin = cp_inst->txwin; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 157 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 158 if ((vma->vm_end - vma->vm_start) > PAGE_SIZE) { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 159 pr_debug("%s(): size 0x%zx, PAGE_SIZE 0x%zx\n", __func__, dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 160 (vma->vm_end - vma->vm_start), PAGE_SIZE); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 161 return -EINVAL; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 162 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 163 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 164 /* Ensure instance has an open send window */ dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 165 if (!txwin) { dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 166 pr_err("%s(): No send window open?\n", __func__); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 167 return -EINVAL; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 168 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 169 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 @170 if (!cp_inst->coproc->vops && !cp_inst->coproc->vops->paste_addr) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 171 pr_err("%s(): VAS API is not registered\n", __func__); 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 172 return -EACCES; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 173 } 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 174 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 175 paste_addr = cp_inst->coproc->vops->paste_addr(txwin); 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 176 if (!paste_addr) { 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 177 pr_err("%s(): Window paste address failed\n", __func__); 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 178 return -EINVAL; 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 179 } 1a0d0d5ed5e3cd arch/powerpc/platforms/book3s/vas-api.c Haren Myneni 2021-06-17 180 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 181 pfn = paste_addr >> PAGE_SHIFT; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 182 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 183 /* flags, page_prot from cxl_mmap(), except we want cachable */ dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 184 vma->vm_flags |= VM_IO | VM_PFNMAP; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 185 vma->vm_page_prot = pgprot_cached(vma->vm_page_prot); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 186 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 187 prot = __pgprot(pgprot_val(vma->vm_page_prot) | _PAGE_DIRTY); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 188 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 189 rc = remap_pfn_range(vma, vma->vm_start, pfn + vma->vm_pgoff, dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 190 vma->vm_end - vma->vm_start, prot); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 191 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 192 pr_devel("%s(): paste addr %llx at %lx, rc %d\n", __func__, dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 193 paste_addr, vma->vm_start, rc); dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 194 dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 195 return rc; dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 196 } dda44eb29c2357 arch/powerpc/platforms/powernv/vas-api.c Haren Myneni 2020-04-17 197 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
