diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-11 14:50:15 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-09-11 14:50:15 -0400 |
| commit | a551b98d5f6fce5897d497abd8bfb262efb33d2a (patch) | |
| tree | 60634dfa4e501486ac6f948fca57aeff49cb9aa0 | |
| parent | d1c6d2e547148c5aa0c0a4ff6aac82f7c6da1d8b (diff) | |
| parent | 50bed2e2862a8f3a4f7d683d0d27292e71ef18b9 (diff) | |
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
| -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, | |||
| 422 | { | 422 | { |
| 423 | unsigned int offset = 0; | 423 | unsigned int offset = 0; |
| 424 | struct sg_mapping_iter miter; | 424 | struct sg_mapping_iter miter; |
| 425 | unsigned long flags; | ||
| 425 | 426 | ||
| 426 | sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC); | 427 | sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC); |
| 427 | 428 | ||
| 429 | local_irq_save(flags); | ||
| 430 | |||
| 428 | while (sg_miter_next(&miter) && offset < buflen) { | 431 | while (sg_miter_next(&miter) && offset < buflen) { |
| 429 | unsigned int len; | 432 | unsigned int len; |
| 430 | 433 | ||
| @@ -442,6 +445,7 @@ static size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, | |||
| 442 | 445 | ||
| 443 | sg_miter_stop(&miter); | 446 | sg_miter_stop(&miter); |
| 444 | 447 | ||
| 448 | local_irq_restore(flags); | ||
| 445 | return offset; | 449 | return offset; |
| 446 | } | 450 | } |
| 447 | 451 | ||
