If some code stops the queues more times than having started
(for when refcounting is used), warn on and reset the counter
to 0 to avoid blocking forever.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
        if (!test_bit(reason, &local->queue_stop_reasons[queue]))
                return;
 
-       if (!refcounted)
+       if (!refcounted) {
                local->q_stop_reasons[queue][reason] = 0;
-       else
+       } else {
                local->q_stop_reasons[queue][reason]--;
+               if (WARN_ON(local->q_stop_reasons[queue][reason] < 0))
+                       local->q_stop_reasons[queue][reason] = 0;
+       }
 
        if (local->q_stop_reasons[queue][reason] == 0)
                __clear_bit(reason, &local->queue_stop_reasons[queue]);