Print this page
patch as-lock-macro-simplification

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/i86xpv/io/privcmd.c
          +++ new/usr/src/uts/i86xpv/io/privcmd.c
↓ open down ↓ 161 lines elided ↑ open up ↑
 162  162                          error = EINVAL;
 163  163                          break;
 164  164                  }
 165  165  
 166  166                  addr = (caddr_t)mme->va;
 167  167  
 168  168                  /*
 169  169                   * Find the segment we want to mess with, then add
 170  170                   * the mfn range to the segment.
 171  171                   */
 172      -                AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
      172 +                AS_LOCK_ENTER(as, RW_READER);
 173  173                  if ((seg = as_findseg(as, addr, 0)) == NULL ||
 174  174                      addr + mmu_ptob(mme->npages) > seg->s_base + seg->s_size)
 175  175                          error = EINVAL;
 176  176                  else
 177  177                          error = segmf_add_mfns(seg, addr,
 178  178                              mme->mfn, mme->npages, mmc->dom);
 179      -                AS_LOCK_EXIT(as, &as->a_lock);
      179 +                AS_LOCK_EXIT(as);
 180  180  
 181  181                  if (error != 0)
 182  182                          break;
 183  183          }
 184  184  
 185  185  done:
 186  186          DTRACE_XPV1(mmap__end, int, error);
 187  187  
 188  188          return (error);
 189  189  }
↓ open down ↓ 22 lines elided ↑ open up ↑
 212  212          caddr_t addr;
 213  213          ulong_t *ulp;
 214  214  
 215  215          if (ddi_copyin(uarg, mmb, sizeof (*mmb), mode))
 216  216                  return (EFAULT);
 217  217  
 218  218          DTRACE_XPV3(mmapbatch__start, domid_t, mmb->dom, int, mmb->num,
 219  219              caddr_t, mmb->addr);
 220  220  
 221  221          addr = (caddr_t)mmb->addr;
 222      -        AS_LOCK_ENTER(as, &as->a_lock, RW_READER);
      222 +        AS_LOCK_ENTER(as, RW_READER);
 223  223          if ((seg = as_findseg(as, addr, 0)) == NULL ||
 224  224              addr + ptob(mmb->num) > seg->s_base + seg->s_size) {
 225  225                  error = EINVAL;
 226  226                  goto done;
 227  227          }
 228  228  
 229  229          for (i = 0, ulp = mmb->arr;
 230  230              i < mmb->num; i++, addr += PAGESIZE, ulp++) {
 231  231                  mfn_t mfn;
 232  232  
↓ open down ↓ 20 lines elided ↑ open up ↑
 253  253                   * won't later try to access it.
 254  254                   */
 255  255                  mfn |= XEN_DOMCTL_PFINFO_XTAB;
 256  256                  if (sulword(ulp, mfn) != 0) {
 257  257                          error = EFAULT;
 258  258                          break;
 259  259                  }
 260  260          }
 261  261  
 262  262  done:
 263      -        AS_LOCK_EXIT(as, &as->a_lock);
      263 +        AS_LOCK_EXIT(as);
 264  264  
 265  265          DTRACE_XPV3(mmapbatch__end, int, error, struct seg *, seg, caddr_t,
 266  266              mmb->addr);
 267  267  
 268  268          return (error);
 269  269  }
 270  270  
 271  271  /*ARGSUSED*/
 272  272  static int
 273  273  privcmd_ioctl(dev_t dev, int cmd, intptr_t arg, int mode, cred_t *cr, int *rval)
↓ open down ↓ 138 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX