ucq: Fix print_ucq()
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 21 Mar 2017 18:25:19 +0000 (14:25 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 21 Mar 2017 18:29:06 +0000 (14:29 -0400)
Two things: one was a u64 vs u32 (the slot is often > 4 GB), and the comma
operator in the for loop's check was wrong.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/src/ucq.c

index 8b24b7d..cabf077 100644 (file)
@@ -143,8 +143,8 @@ void print_ucq(struct proc *p, struct ucq *ucq)
               atomic_read(&ucq->nr_extra_pgs));
        printk("prod_overflow: %d\n", ucq->prod_overflow);
        /* Try to see our previous ucqs */
-       for (int i = atomic_read(&ucq->prod_idx), count = 0;
-            slot_is_good(i), count < 25;  i--, count++) {
+       for (uintptr_t i = atomic_read(&ucq->prod_idx), count = 0;
+            slot_is_good(i) && count < 25;  i--, count++) {
                /* only attempt to print messages on the same page */
                if (PTE_ADDR(i) != PTE_ADDR(atomic_read(&ucq->prod_idx)))
                        break;