Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 4 Mar 2007 10:39:40 +0100
From:      Divacky Roman <xdivac02@stud.fit.vutbr.cz>
To:        hackers@freebsd.org
Subject:   inconsistency in using vn_fullpath1()
Message-ID:  <20070304093940.GA82483@stud.fit.vutbr.cz>

next in thread | raw e-mail | index | archive | help
hi

I noticed that kern___getcwd() calls vn_fullpath1() with Giant held like this:

	mtx_lock(&Giant);
	FILEDESC_LOCK(fdp);
        error = vn_fullpath1(td, fdp->fd_cdir, fdp->fd_rdir, tmpbuf,
            &bp, buflen);
        FILEDESC_UNLOCK(fdp);
        mtx_unlock(&Giant);

on the other hand vn_fullpath() calls it without Giant held like this:

	FILEDESC_LOCK(fdp);
        error = vn_fullpath1(td, vn, fdp->fd_rdir, buf, retbuf, MAXPATHLEN);
        FILEDESC_UNLOCK(fdp);

I dont see much difference in the callings so I wonder if holding Giant is necessary
when calling vn_fullpath1(). Because we either - do one unecessary locking operation
or unsufficiently lock it.

thnx for explaining to me and possibly fixing it.

roman




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070304093940.GA82483>