Commit e13889ba authored by Al Viro's avatar Al Viro

fix devtmpfs race

After we's done complete(&req->done), there's nothing to prevent the
scope containing *req from being gone and *req overwritten by any
kind of junk.  So we must read req->next before that...
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent eda65cc6
...@@ -406,9 +406,10 @@ static int devtmpfsd(void *p) ...@@ -406,9 +406,10 @@ static int devtmpfsd(void *p)
requests = NULL; requests = NULL;
spin_unlock(&req_lock); spin_unlock(&req_lock);
while (req) { while (req) {
struct req *next = req->next;
req->err = handle(req->name, req->mode, req->dev); req->err = handle(req->name, req->mode, req->dev);
complete(&req->done); complete(&req->done);
req = req->next; req = next;
} }
spin_lock(&req_lock); spin_lock(&req_lock);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment