OSDN Git Service

nouveau: add asserts to make sure krefs are there
authorIlia Mirkin <imirkin@alum.mit.edu>
Sun, 21 Jun 2015 23:26:42 +0000 (19:26 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Sun, 21 Jun 2015 23:26:42 +0000 (19:26 -0400)
This should help catch odd bugs at the callsites rather than much later
on with completely bogus bo indices.

Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
nouveau/pushbuf.c

index 4f77881..8e7dcdf 100644 (file)
@@ -234,6 +234,8 @@ pushbuf_krel(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
        bkref = cli_kref_get(push->client, bo);
        krel  = &krec->reloc[krec->nr_reloc++];
 
+       assert(pkref);
+       assert(bkref);
        krel->reloc_bo_index = pkref - krec->buffer;
        krel->reloc_bo_offset = (push->cur - nvpb->ptr) * 4;
        krel->bo_index = bkref - krec->buffer;
@@ -721,6 +723,7 @@ nouveau_pushbuf_data(struct nouveau_pushbuf *push, struct nouveau_bo *bo,
 
        if (bo) {
                kref = cli_kref_get(push->client, bo);
+               assert(kref);
                kpsh = &krec->push[krec->nr_push++];
                kpsh->bo_index = kref - krec->buffer;
                kpsh->offset   = offset;
@@ -757,6 +760,7 @@ nouveau_pushbuf_refd(struct nouveau_pushbuf *push, struct nouveau_bo *bo)
 
        if (cli_push_get(push->client, bo) == push) {
                kref = cli_kref_get(push->client, bo);
+               assert(kref);
                if (kref->read_domains)
                        flags |= NOUVEAU_BO_RD;
                if (kref->write_domains)