svn commit: r368375 - head/sys/kern

Jessica Clarke jrtc27 at freebsd.org
Sun Dec 6 17:03:35 UTC 2020


Hi Mateusz,
This looks like a behavioural change to me. Was that intended and a bug
fix (in which case, it should have been documented in the commit
message) or not? See below for the exact change.

On 6 Dec 2020, at 04:59, Mateusz Guzik <mjg at FreeBSD.org> wrote:
> +static int
> +namei_getpath(struct nameidata *ndp)
> +{
> +	struct componentname *cnp;
> +	int error;
> +
> +	cnp = &ndp->ni_cnd;
> +
> +	/*
> +	 * Get a buffer for the name to be translated, and copy the
> +	 * name into the buffer.
> +	 */
> +	cnp->cn_pnbuf = uma_zalloc(namei_zone, M_WAITOK);
> +	if (ndp->ni_segflg == UIO_SYSSPACE) {
> +		error = copystr(ndp->ni_dirp, cnp->cn_pnbuf, MAXPATHLEN,
> +		    &ndp->ni_pathlen);
> +	} else {
> +		error = copyinstr(ndp->ni_dirp, cnp->cn_pnbuf, MAXPATHLEN,
> +		    &ndp->ni_pathlen);
> +	}
> +
> +	if (__predict_false(error != 0)) {
> +		return (error);

This does not call namei_cleanup_cnp.

> @@ -531,31 +568,11 @@ namei(struct nameidata *ndp)
> 	ndp->ni_lcf = 0;
> 	ndp->ni_vp = NULL;
> 
> -	/*
> -	 * Get a buffer for the name to be translated, and copy the
> -	 * name into the buffer.
> -	 */
> -	cnp->cn_pnbuf = uma_zalloc(namei_zone, M_WAITOK);
> -	if (ndp->ni_segflg == UIO_SYSSPACE)
> -		error = copystr(ndp->ni_dirp, cnp->cn_pnbuf, MAXPATHLEN,
> -		    &ndp->ni_pathlen);
> -	else
> -		error = copyinstr(ndp->ni_dirp, cnp->cn_pnbuf, MAXPATHLEN,
> -		    &ndp->ni_pathlen);
> -
> +	error = namei_getpath(ndp);
> 	if (__predict_false(error != 0)) {
> -		namei_cleanup_cnp(cnp);

But it used to be called in that case here.

> 		return (error);
> 	}

Jess



More information about the svn-src-head mailing list