linprocfs: find cwd and root handling

The code would incorrectly use curthread instead of the target proc to
resolve vnodes.

Fixes:	8d03b99b9d ("fd: move vnodes out of filedesc into a dedicated structure")
PR:	258729
Noted by:	 Damjan Jovanovic <damjan.jov@gmail.com>
This commit is contained in:
Mateusz Guzik 2021-09-30 12:50:18 +02:00
parent 85c855d31b
commit 69ab528386

View File

@ -1169,7 +1169,7 @@ linprocfs_doproccwd(PFS_FILL_ARGS)
char *fullpath = "unknown";
char *freepath = NULL;
pwd = pwd_hold(td);
pwd = pwd_hold_proc(p);
vn_fullpath(pwd->pwd_cdir, &fullpath, &freepath);
sbuf_printf(sb, "%s", fullpath);
if (freepath)
@ -1189,7 +1189,7 @@ linprocfs_doprocroot(PFS_FILL_ARGS)
char *fullpath = "unknown";
char *freepath = NULL;
pwd = pwd_hold(td);
pwd = pwd_hold_proc(p);
vp = jailed(p->p_ucred) ? pwd->pwd_jdir : pwd->pwd_rdir;
vn_fullpath(vp, &fullpath, &freepath);
sbuf_printf(sb, "%s", fullpath);