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]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to