p9_client_attach(): set fid->uid correctly
it's almost always equal to current_fsuid(), but there's an exception - if the first writeback fid is opened by non-root *and* that happens before root has done any lookups in /, we end up doing attach for root. The current code leaves the resulting FID owned by root from the server POV and by non-root from the client one. Unfortunately, it means that e.g. massive dcache eviction will leave that user buggered - they'll end up redoing walks from / *and* picking that FID every time. As soon as they try to create something, the things will get nasty. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ce85dd58ad
commit
21c9f5ccb1
@ -1116,6 +1116,7 @@ struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid,
|
||||
fid = NULL;
|
||||
goto error;
|
||||
}
|
||||
fid->uid = n_uname;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TATTACH, "ddss?u", fid->fid,
|
||||
afid ? afid->fid : P9_NOFID, uname, aname, n_uname);
|
||||
|
Loading…
Reference in New Issue
Block a user