Skip to content

Commit

Permalink
9pfs: fix potential segfault during walk
Browse files Browse the repository at this point in the history
If the call to fid_to_qid() returns an error, we will call v9fs_path_free()
on uninitialized paths.

It is a regression introduced by the following commit:

56f101e 9pfs: handle walk of ".." in the root directory

Let's fix this by initializing dpath and path before calling fid_to_qid().

Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
[groug: updated the changelog to indicate this is regression and to provide
        the offending commit SHA1]
Signed-off-by: Greg Kurz <groug@kaod.org>

(cherry picked from commit 13fd08e)
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
  • Loading branch information
gkurz authored and mdroth committed Sep 20, 2016
1 parent b9ab2f6 commit 5e2c6fe
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions hw/9pfs/9p.c
Expand Up @@ -1318,13 +1318,14 @@ static void v9fs_walk(void *opaque)
goto out_nofid;
}

v9fs_path_init(&dpath);
v9fs_path_init(&path);

err = fid_to_qid(pdu, fidp, &qid);
if (err < 0) {
goto out;
}

v9fs_path_init(&dpath);
v9fs_path_init(&path);
/*
* Both dpath and path initially poin to fidp.
* Needed to handle request with nwnames == 0
Expand Down

0 comments on commit 5e2c6fe

Please sign in to comment.