diff options
author | Arjan van de Ven <arjan@infradead.org> | 2008-11-19 15:36:19 -0800 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2008-12-05 10:55:11 -0800 |
commit | 3cd2da9078ffbb87afc4d5a15fa1cbb0891a724d (patch) | |
tree | 4059b26b0acbe1eb7c461e07dbeb52b360506787 /lib | |
parent | 0efdd6fd2451074d61deb9133f1ab06e10434510 (diff) | |
download | lwn-3cd2da9078ffbb87afc4d5a15fa1cbb0891a724d.tar.gz lwn-3cd2da9078ffbb87afc4d5a15fa1cbb0891a724d.zip |
lib/scatterlist.c: fix kunmap() argument in sg_miter_stop()
commit f652c521e0bec2e70cf123f47e80117a7e6ed139 upstream.
kunmap() takes as argument the struct page that orginally got kmap()'d,
however the sg_miter_stop() function passed it the kernel virtual address
instead, resulting in weird stuff.
Somehow I ended up fixing this bug by accident while looking for a bug in
the same area.
Reported-by: kerneloops.org
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Cc: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/scatterlist.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/scatterlist.c b/lib/scatterlist.c index 8d2688ff1352..b7b449dafbe5 100644 --- 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 - kunmap(miter->addr); + kunmap(miter->page); miter->page = NULL; miter->addr = NULL; |