diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-03 08:44:34 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-07-29 23:30:43 +0200 |
commit | a209458a0fc84eeaa483a23787667d8946a42673 (patch) | |
tree | 069e2cb43328124c8324e054d92b4999b06940de /lib | |
parent | 6a781e481548e435f451dde48c59117c378c1c7e (diff) | |
download | lwn-a209458a0fc84eeaa483a23787667d8946a42673.tar.gz lwn-a209458a0fc84eeaa483a23787667d8946a42673.zip |
mm: scatterlist dont disable irqs on RT
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/scatterlist.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/scatterlist.c b/lib/scatterlist.c index a295e404e908..9b4241f3c9bd 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -9,6 +9,7 @@ #include <linux/module.h> #include <linux/scatterlist.h> #include <linux/highmem.h> +#include <linux/interrupt.h> /** * sg_next - return the next scatterlist entry in a list @@ -395,7 +396,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter) miter->__offset += miter->consumed; if (miter->__flags & SG_MITER_ATOMIC) { - WARN_ON(!irqs_disabled()); + WARN_ON_NONRT(!irqs_disabled()); kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ); } else kunmap(miter->page); @@ -429,7 +430,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC); - local_irq_save(flags); + local_irq_save_nort(flags); while (sg_miter_next(&miter) && offset < buflen) { unsigned int len; @@ -448,7 +449,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_stop(&miter); - local_irq_restore(flags); + local_irq_restore_nort(flags); return offset; } |