From: Aneesh Kumar K.V Date: Tue, 2 Aug 2011 06:06:24 +0000 (+0530) Subject: hw/9pfs: Avoid unnecessary get_fid in v9fs_clunk X-Git-Tag: v1.0-rc0~177^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce421a19612aaf0d25dede4bad3ea205587c9dae;p=thirdparty%2Fqemu.git hw/9pfs: Avoid unnecessary get_fid in v9fs_clunk Signed-off-by: Aneesh Kumar K.V --- diff --git a/hw/9pfs/virtio-9p.c b/hw/9pfs/virtio-9p.c index 2a6895396d2..e51df2aa0f4 100644 --- a/hw/9pfs/virtio-9p.c +++ b/hw/9pfs/virtio-9p.c @@ -417,7 +417,7 @@ static void put_fid(V9fsState *s, V9fsFidState *fidp) } } -static int clunk_fid(V9fsState *s, int32_t fid) +static V9fsFidState *clunk_fid(V9fsState *s, int32_t fid) { V9fsFidState **fidpp, *fidp; @@ -426,14 +426,13 @@ static int clunk_fid(V9fsState *s, int32_t fid) break; } } - if (*fidpp == NULL) { - return -ENOENT; + return NULL; } fidp = *fidpp; *fidpp = fidp->next; fidp->clunked = 1; - return 0; + return fidp; } void v9fs_reclaim_fd(V9fsState *s) @@ -1700,17 +1699,18 @@ static void v9fs_clunk(void *opaque) pdu_unmarshal(pdu, offset, "d", &fid); - fidp = get_fid(s, fid); + fidp = clunk_fid(s, fid); if (fidp == NULL) { err = -ENOENT; goto out_nofid; } - err = clunk_fid(s, fidp->fid); - if (err < 0) { - goto out; - } + /* + * Bump the ref so that put_fid will + * free the fid. + */ + fidp->ref++; err = offset; -out: + put_fid(s, fidp); out_nofid: complete_pdu(s, pdu, err);