git://ftp.safe.ca
/
safe
/
jmp
/
linux-2.6
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
crypto: rmd320 - Switch to shash
[safe/jmp/linux-2.6]
/
lib
/
scatterlist.c
diff --git
a/lib/scatterlist.c
b/lib/scatterlist.c
index
876ba6d
..
b7b449d
100644
(file)
--- a/
lib/scatterlist.c
+++ b/
lib/scatterlist.c
@@
-395,7
+395,7
@@
void sg_miter_stop(struct sg_mapping_iter *miter)
WARN_ON(!irqs_disabled());
kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ);
} else
WARN_ON(!irqs_disabled());
kunmap_atomic(miter->addr, KM_BIO_SRC_IRQ);
} else
- kunmap(miter->
addr
);
+ kunmap(miter->
page
);
miter->page = NULL;
miter->addr = NULL;
miter->page = NULL;
miter->addr = NULL;
@@
-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 int offset = 0;
struct sg_mapping_iter miter;
+ unsigned long flags;
sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC);
sg_miter_start(&miter, sgl, nents, SG_MITER_ATOMIC);
+ local_irq_save(flags);
+
while (sg_miter_next(&miter) && offset < buflen) {
unsigned int len;
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);
sg_miter_stop(&miter);
+ local_irq_restore(flags);
return offset;
}
return offset;
}