NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: kern/56316: vn_open doesn't follow symlinks



The following reply was made to PR kern/56316; it has been noted by GNATS.

From: Frank Kardel <kardel%kardel.name@localhost>
To: gnats-bugs%netbsd.org@localhost, kern-bug-people%netbsd.org@localhost,
 gnats-admin%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost, mlelstv%serpens.de@localhost
Cc: 
Subject: Re: kern/56316: vn_open doesn't follow symlinks
Date: Sun, 18 Jul 2021 09:06:55 +0200

 Did you notice that zfs has a wrapper zfs_vn_open for vn_open in
 
 src/external/cddl/osnet/sys/sys/vnode.h?
 
 static inline int
 zfs_vn_open(const char *pnamep, enum uio_seg seg, int filemode, int 
 createmode,
      vnode_t **vpp, enum create crwhy, mode_t umask)
 {
          struct pathbuf *pb;
          int error;
 
          ASSERT(seg == UIO_SYSSPACE);
          ASSERT((filemode & (FWRITE | FCREAT | FTRUNC | FOFFMAX)) != 0);
          ASSERT(crwhy == CRCREAT);
          ASSERT(umask == 0);
 
          "
 
          pb = pathbuf_create(pnamep);
          error = vn_open(NULL, pb, 0, filemode, createmode, vpp, NULL, 
 NULL);
          if (error == 0) {
                  VOP_UNLOCK(*vpp, 0);
          }
          pathbuf_destroy(pb);
          return (error);
 }
 
 There is is forced.
 
 Removing "filemode |= O_NOFOLLOW;" there makes ZFS opening devices via 
 symlinks again.
 
 Frank
 
 On 07/18/21 08:55, Michael van Elst wrote:
 > The following reply was made to PR kern/56316; it has been noted by GNATS.
 >
 > From: mlelstv%serpens.de@localhost (Michael van Elst)
 > To: gnats-bugs%netbsd.org@localhost
 > Cc:
 > Subject: Re: kern/56316: vn_open doesn't follow symlinks
 > Date: Sun, 18 Jul 2021 06:51:48 -0000 (UTC)
 >
 >   kardel%netbsd.org@localhost (Frank Kardel) writes:
 >   
 >   > We should just disable the force setting of O_NOFOLLOW in vnopen and
 >   
 >   It's not forced. Apparently just in the ZFS case the caller was changed
 >   to set O_NOFOLLOW and there is confusion on what FOLLOW and NOFOLLOW
 >   do. In fact, both are and were masked inside vn_open, so the O_NOFOLLOW
 >   flag is and has been the only relevant (despite what the comment said).
 >   
 >   
 


Home | Main Index | Thread Index | Old Index