diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-11 20:50:15 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-11 20:50:15 +0200 |
commit | a551b98d5f6fce5897d497abd8bfb262efb33d2a (patch) | |
tree | 60634dfa4e501486ac6f948fca57aeff49cb9aa0 /lib | |
parent | MN10300: Change the fault handler to check in_atomic() not in_interrupt() (diff) | |
parent | sg: disable interrupts inside sg_copy_buffer (diff) | |
download | linux-a551b98d5f6fce5897d497abd8bfb262efb33d2a.tar.xz linux-a551b98d5f6fce5897d497abd8bfb262efb33d2a.zip |
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
sg: disable interrupts inside sg_copy_buffer
Diffstat (limited to 'lib')
-rw-r--r-- | lib/scatterlist.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lib/scatterlist.c b/lib/scatterlist.c index 876ba6d5b670..8d2688ff1352 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -422,9 +422,12 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, { unsigned int offset = 0; struct sg_mapping_iter miter; + unsigned long flags; sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC); + local_irq_save(flags); + while (sg_miter_next(&miter) && offset < buflen) { unsigned int len; @@ -442,6 +445,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, sg_miter_stop(&miter); + local_irq_restore(flags); return offset; } |