diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2009-03-20 10:24:40 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2009-03-20 10:25:16 +1000 |
commit | c37fca4ef678667bcba9c45c6e0a59c8d174c7c5 (patch) | |
tree | 567ca4c26441d755cf27efaba15cbeff8d562dce | |
parent | 00d8e960ca665b7f0528438331f4d0ae77fbb4cc (diff) |
libdrm/nouveau: incr refcount on ref fence before decr on old fence
-rw-r--r-- | libdrm/nouveau/nouveau_fence.c | 16 |
1 files changed, 5 insertions, 11 deletions
diff --git a/libdrm/nouveau/nouveau_fence.c b/libdrm/nouveau/nouveau_fence.c index e31fc89c..33466160 100644 --- a/libdrm/nouveau/nouveau_fence.c +++ b/libdrm/nouveau/nouveau_fence.c @@ -96,22 +96,16 @@ nouveau_fence_new(struct nouveau_channel *chan, struct nouveau_fence **fence) int nouveau_fence_ref(struct nouveau_fence *ref, struct nouveau_fence **fence) { - struct nouveau_fence_priv *nvfence; - if (!fence) return -EINVAL; - if (*fence) { - nouveau_fence_del(fence); - *fence = NULL; - } + if (ref) + nouveau_fence(ref)->refcount++; - if (ref) { - nvfence = nouveau_fence(ref); - nvfence->refcount++; - *fence = &nvfence->base; - } + if (*fence) + nouveau_fence_del(fence); + *fence = ref; return 0; } |