]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
powerpc/xive: Fix missing check of rc != OPAL_BUSY
authorMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Apr 2017 04:43:19 +0000 (14:43 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 20 Apr 2017 04:43:19 +0000 (14:43 +1000)
Dan Carpenter noticed that the code in __xive_native_disable_queue() has a for
loop with an unconditional break in the middle, which doesn't make a lot of
sense.

What the code's supposed to do is loop as long as OPAL says it's busy, if we get
any other return code, either success or failure, then we should break the loop.

So add the missing check.

Fixes: 243e25112d06 ("powerpc/xive: Native exploitation of the XIVE interrupt controller")
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/sysdev/xive/native.c

index 5fae59186cb24fe5f1e12bc9cae7f4a8a5bda3a9..1a726229a4274f3e5be275b96ab48a47c0c31e6f 100644 (file)
@@ -180,6 +180,7 @@ static void __xive_native_disable_queue(u32 vp_id, struct xive_q *q, u8 prio)
        /* Disable the queue in HW */
        for (;;) {
                rc = opal_xive_set_queue_info(vp_id, prio, 0, 0, 0);
+               if (rc != OPAL_BUSY)
                        break;
                msleep(1);
        }