]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - kernel/relay.c
x86: fix panic with interrupts off (needed for MCE)
[karo-tx-linux.git] / kernel / relay.c
index 824b91ac10f1f94f3990d5db6f7437d161f0f2a4..bc188549788f4f8876e86a729d85267904a839e7 100644 (file)
@@ -795,13 +795,15 @@ void relay_subbufs_consumed(struct rchan *chan,
        if (!chan)
                return;
 
-       if (cpu >= NR_CPUS || !chan->buf[cpu])
+       if (cpu >= NR_CPUS || !chan->buf[cpu] ||
+                                       subbufs_consumed > chan->n_subbufs)
                return;
 
        buf = chan->buf[cpu];
-       buf->subbufs_consumed += subbufs_consumed;
-       if (buf->subbufs_consumed > buf->subbufs_produced)
+       if (subbufs_consumed > buf->subbufs_produced - buf->subbufs_consumed)
                buf->subbufs_consumed = buf->subbufs_produced;
+       else
+               buf->subbufs_consumed += subbufs_consumed;
 }
 EXPORT_SYMBOL_GPL(relay_subbufs_consumed);