aboutsummaryrefslogtreecommitdiffstats
path: root/lib/scatterlist.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/scatterlist.c')
-rw-r--r--lib/scatterlist.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/scatterlist.c b/lib/scatterlist.c
index 0d475d8167bf..e6dcd3b0d974 100644
--- a/lib/scatterlist.c
+++ b/lib/scatterlist.c
@@ -9,6 +9,7 @@
9#include <linux/module.h> 9#include <linux/module.h>
10#include <linux/scatterlist.h> 10#include <linux/scatterlist.h>
11#include <linux/highmem.h> 11#include <linux/highmem.h>
12#include <linux/interrupt.h>
12 13
13/** 14/**
14 * sg_next - return the next scatterlist entry in a list 15 * sg_next - return the next scatterlist entry in a list
@@ -399,7 +400,7 @@ void sg_miter_stop(struct sg_mapping_iter *miter)
399 flush_kernel_dcache_page(miter->page); 400 flush_kernel_dcache_page(miter->page);
400 401
401 if (miter->__flags & SG_MITER_ATOMIC) { 402 if (miter->__flags & SG_MITER_ATOMIC) {
402 WARN_ON(!irqs_disabled()); 403 WARN_ON_NONRT(!irqs_disabled());
403 kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ); 404 kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ);
404 } else 405 } else
405 kunmap(miter->page); 406 kunmap(miter->page);
@@ -439,7 +440,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
439 440
440 sg_miter_start(&miter, sgl, nents, sg_flags); 441 sg_miter_start(&miter, sgl, nents, sg_flags);
441 442
442 local_irq_save(flags); 443 local_irq_save_nort(flags);
443 444
444 while (sg_miter_next(&miter) && offset < buflen) { 445 while (sg_miter_next(&miter) && offset < buflen) {
445 unsigned int len; 446 unsigned int len;
@@ -456,7 +457,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents,
456 457
457 sg_miter_stop(&miter); 458 sg_miter_stop(&miter);
458 459
459 local_irq_restore(flags); 460 local_irq_restore_nort(flags);
460 return offset; 461 return offset;
461} 462}
462 463