svn commit: r368375 - head/sys/kern

Mateusz Guzik mjguzik at gmail.com
Sun Dec 6 19:25:05 UTC 2020


Thanks for the report. Fixed in r368395.

On 12/6/20, Jessica Clarke <jrtc27 at freebsd.org> wrote:
> 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
>
>


-- 
Mateusz Guzik <mjguzik gmail.com>


More information about the svn-src-head mailing list