[BACK]Return to ufs_extattr.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / sys / ufs / ufs

Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.

Diff for /src/sys/ufs/ufs/ufs_extattr.c between version 1.7 and 1.8

version 1.7, 2006/03/01 12:38:33 version 1.8, 2006/05/14 21:33:39
Line 91  static int ufs_extattr_disable(struct uf
Line 91  static int ufs_extattr_disable(struct uf
                     const char *attrname, struct lwp *l);                      const char *attrname, struct lwp *l);
 static int      ufs_extattr_get(struct vnode *vp, int attrnamespace,  static int      ufs_extattr_get(struct vnode *vp, int attrnamespace,
                     const char *name, struct uio *uio, size_t *size,                      const char *name, struct uio *uio, size_t *size,
                     struct ucred *cred, struct lwp *l);                      kauth_cred_t cred, struct lwp *l);
 static int      ufs_extattr_set(struct vnode *vp, int attrnamespace,  static int      ufs_extattr_set(struct vnode *vp, int attrnamespace,
                     const char *name, struct uio *uio, struct ucred *cred,                      const char *name, struct uio *uio, kauth_cred_t cred,
                     struct lwp *l);                      struct lwp *l);
 static int      ufs_extattr_rm(struct vnode *vp, int attrnamespace,  static int      ufs_extattr_rm(struct vnode *vp, int attrnamespace,
                     const char *name, struct ucred *cred, struct lwp *l);                      const char *name, kauth_cred_t cred, struct lwp *l);
   
 /*  /*
  * Per-FS attribute lock protecting attribute operations.   * Per-FS attribute lock protecting attribute operations.
Line 224  ufs_extattr_start(struct mount *mp, stru
Line 224  ufs_extattr_start(struct mount *mp, stru
   
         ump->um_extattr.uepm_flags |= UFS_EXTATTR_UEPM_STARTED;          ump->um_extattr.uepm_flags |= UFS_EXTATTR_UEPM_STARTED;
   
         ump->um_extattr.uepm_ucred = l->l_proc->p_ucred;          ump->um_extattr.uepm_ucred = l->l_proc->p_cred;
         crhold(ump->um_extattr.uepm_ucred);          kauth_cred_hold(ump->um_extattr.uepm_ucred);
   
  unlock:   unlock:
         ufs_extattr_uepm_unlock(ump);          ufs_extattr_uepm_unlock(ump);
Line 257  ufs_extattr_lookup(struct vnode *start_d
Line 257  ufs_extattr_lookup(struct vnode *start_d
         cnp.cn_nameiop = LOOKUP;          cnp.cn_nameiop = LOOKUP;
         cnp.cn_flags = ISLASTCN | lockparent;          cnp.cn_flags = ISLASTCN | lockparent;
         cnp.cn_lwp = l;          cnp.cn_lwp = l;
         cnp.cn_cred = l->l_proc->p_ucred;          cnp.cn_cred = l->l_proc->p_cred;
         cnp.cn_pnbuf = PNBUF_GET();          cnp.cn_pnbuf = PNBUF_GET();
         cnp.cn_nameptr = cnp.cn_pnbuf;          cnp.cn_nameptr = cnp.cn_pnbuf;
         error = copystr(dirname, cnp.cn_pnbuf, MAXPATHLEN,          error = copystr(dirname, cnp.cn_pnbuf, MAXPATHLEN,
Line 329  ufs_extattr_enable_with_open(struct ufsm
Line 329  ufs_extattr_enable_with_open(struct ufsm
 {  {
         int error;          int error;
   
         error = VOP_OPEN(vp, FREAD|FWRITE, l->l_proc->p_ucred, l);          error = VOP_OPEN(vp, FREAD|FWRITE, l->l_proc->p_cred, l);
         if (error) {          if (error) {
                 printf("ufs_extattr_enable_with_open.VOP_OPEN(): failed "                  printf("ufs_extattr_enable_with_open.VOP_OPEN(): failed "
                     "with %d\n", error);                      "with %d\n", error);
Line 345  ufs_extattr_enable_with_open(struct ufsm
Line 345  ufs_extattr_enable_with_open(struct ufsm
   
         error = ufs_extattr_enable(ump, attrnamespace, attrname, vp, l);          error = ufs_extattr_enable(ump, attrnamespace, attrname, vp, l);
         if (error != 0)          if (error != 0)
                 vn_close(vp, FREAD|FWRITE, l->l_proc->p_ucred, l);                  vn_close(vp, FREAD|FWRITE, l->l_proc->p_cred, l);
         return (error);          return (error);
 }  }
   
Line 383  ufs_extattr_iterate_directory(struct ufs
Line 383  ufs_extattr_iterate_directory(struct ufs
         vargs.a_desc = NULL;          vargs.a_desc = NULL;
         vargs.a_vp = dvp;          vargs.a_vp = dvp;
         vargs.a_uio = &auio;          vargs.a_uio = &auio;
         vargs.a_cred = l->l_proc->p_ucred;          vargs.a_cred = l->l_proc->p_cred;
         vargs.a_eofflag = &eofflag;          vargs.a_eofflag = &eofflag;
         vargs.a_ncookies = NULL;          vargs.a_ncookies = NULL;
         vargs.a_cookies = NULL;          vargs.a_cookies = NULL;
Line 578  ufs_extattr_stop(struct mount *mp, struc
Line 578  ufs_extattr_stop(struct mount *mp, struc
   
         ump->um_extattr.uepm_flags &= ~UFS_EXTATTR_UEPM_STARTED;          ump->um_extattr.uepm_flags &= ~UFS_EXTATTR_UEPM_STARTED;
   
         crfree(ump->um_extattr.uepm_ucred);          kauth_cred_free(ump->um_extattr.uepm_ucred);
         ump->um_extattr.uepm_ucred = NULL;          ump->um_extattr.uepm_ucred = NULL;
   
  unlock:   unlock:
Line 635  ufs_extattr_enable(struct ufsmount *ump,
Line 635  ufs_extattr_enable(struct ufsmount *ump,
         auio.uio_rw = UIO_READ;          auio.uio_rw = UIO_READ;
         UIO_SETUP_SYSSPACE(&auio);          UIO_SETUP_SYSSPACE(&auio);
   
         VOP_LEASE(backing_vnode, l, l->l_proc->p_ucred, LEASE_WRITE);          VOP_LEASE(backing_vnode, l, l->l_proc->p_cred, LEASE_WRITE);
         vn_lock(backing_vnode, LK_SHARED | LK_RETRY);          vn_lock(backing_vnode, LK_SHARED | LK_RETRY);
         error = VOP_READ(backing_vnode, &auio, IO_NODELOCKED,          error = VOP_READ(backing_vnode, &auio, IO_NODELOCKED,
             ump->um_extattr.uepm_ucred);              ump->um_extattr.uepm_ucred);
Line 712  ufs_extattr_disable(struct ufsmount *ump
Line 712  ufs_extattr_disable(struct ufsmount *ump
         LIST_REMOVE(uele, uele_entries);          LIST_REMOVE(uele, uele_entries);
   
         error = vn_close(uele->uele_backing_vnode, FREAD|FWRITE,          error = vn_close(uele->uele_backing_vnode, FREAD|FWRITE,
             l->l_proc->p_ucred, l);              l->l_proc->p_cred, l);
   
         free(uele, M_UFS_EXTATTR);          free(uele, M_UFS_EXTATTR);
   
Line 734  ufs_extattrctl(struct mount *mp, int cmd
Line 734  ufs_extattrctl(struct mount *mp, int cmd
         /*          /*
          * Only privileged processes can configure extended attributes.           * Only privileged processes can configure extended attributes.
          */           */
         if ((error = suser(l->l_proc->p_ucred, &l->l_proc->p_acflag)) != 0) {          if ((error = kauth_authorize_generic(l->l_proc->p_cred, KAUTH_GENERIC_ISSUSER,
                                          &l->l_proc->p_acflag)) != 0) {
                 if (filename_vp != NULL)                  if (filename_vp != NULL)
                         VOP_UNLOCK(filename_vp, 0);                          VOP_UNLOCK(filename_vp, 0);
                 return (error);                  return (error);
Line 811  vop_getextattr {
Line 812  vop_getextattr {
         IN const char *a_name;          IN const char *a_name;
         INOUT struct uio *a_uio;          INOUT struct uio *a_uio;
         OUT size_t *a_size;          OUT size_t *a_size;
         IN struct ucred *a_cred;          IN kauth_cred_t a_cred;
         IN struct lwp *a_l;          IN struct lwp *a_l;
 };  };
 */  */
Line 836  vop_getextattr {
Line 837  vop_getextattr {
  */   */
 static int  static int
 ufs_extattr_get(struct vnode *vp, int attrnamespace, const char *name,  ufs_extattr_get(struct vnode *vp, int attrnamespace, const char *name,
     struct uio *uio, size_t *size, struct ucred *cred, struct lwp *l)      struct uio *uio, size_t *size, kauth_cred_t cred, struct lwp *l)
 {  {
         struct ufs_extattr_list_entry *attribute;          struct ufs_extattr_list_entry *attribute;
         struct ufs_extattr_header ueh;          struct ufs_extattr_header ueh;
Line 992  vop_deleteextattr {
Line 993  vop_deleteextattr {
         IN struct vnode *a_vp;          IN struct vnode *a_vp;
         IN int a_attrnamespace;          IN int a_attrnamespace;
         IN const char *a_name;          IN const char *a_name;
         IN struct ucred *a_cred;          IN kauth_cred_t a_cred;
         IN struct lwp *a_l;          IN struct lwp *a_l;
 };  };
 */  */
Line 1022  vop_setextattr {
Line 1023  vop_setextattr {
         IN int a_attrnamespace;          IN int a_attrnamespace;
         IN const char *a_name;          IN const char *a_name;
         INOUT struct uio *a_uio;          INOUT struct uio *a_uio;
         IN struct ucred *a_cred;          IN kauth_cred_t a_cred;
         IN struct lwp *a_l;          IN struct lwp *a_l;
 };  };
 */  */
Line 1053  vop_setextattr {
Line 1054  vop_setextattr {
  */   */
 static int  static int
 ufs_extattr_set(struct vnode *vp, int attrnamespace, const char *name,  ufs_extattr_set(struct vnode *vp, int attrnamespace, const char *name,
     struct uio *uio, struct ucred *cred, struct lwp *l)      struct uio *uio, kauth_cred_t cred, struct lwp *l)
 {  {
         struct ufs_extattr_list_entry *attribute;          struct ufs_extattr_list_entry *attribute;
         struct ufs_extattr_header ueh;          struct ufs_extattr_header ueh;
Line 1167  ufs_extattr_set(struct vnode *vp, int at
Line 1168  ufs_extattr_set(struct vnode *vp, int at
  */   */
 static int  static int
 ufs_extattr_rm(struct vnode *vp, int attrnamespace, const char *name,  ufs_extattr_rm(struct vnode *vp, int attrnamespace, const char *name,
     struct ucred *cred, struct lwp *l)      kauth_cred_t cred, struct lwp *l)
 {  {
         struct ufs_extattr_list_entry *attribute;          struct ufs_extattr_list_entry *attribute;
         struct ufs_extattr_header ueh;          struct ufs_extattr_header ueh;
Line 1316  ufs_extattr_vnode_inactive(struct vnode 
Line 1317  ufs_extattr_vnode_inactive(struct vnode 
   
         LIST_FOREACH(uele, &ump->um_extattr.uepm_list, uele_entries)          LIST_FOREACH(uele, &ump->um_extattr.uepm_list, uele_entries)
                 ufs_extattr_rm(vp, uele->uele_attrnamespace,                  ufs_extattr_rm(vp, uele->uele_attrnamespace,
                     uele->uele_attrname, proc0.p_ucred, l);                      uele->uele_attrname, proc0.p_cred, l);
   
         ufs_extattr_uepm_unlock(ump);          ufs_extattr_uepm_unlock(ump);
 }  }

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

CVSweb <webmaster@jp.NetBSD.org>