[SCSI] sg: fix a bug in st_map_user_pages failure path
sg's st_map_user_pages is modelled on an earlier version of st's sgl_map_user_pages, and has the same bug: if get_user_pages got some but not all of the pages, then those got were released, but the positive res code returned implied that they were still to be freed. Signed-off-by: Hugh Dickins <hugh@veritas.com> Signed-off-by: Douglas Gilbert <dougg@torque.net> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
032c09d76c
commit
4d5cda069b
|
@ -1860,9 +1860,11 @@ st_map_user_pages(struct scatterlist *sgl, const unsigned int max_pages,
|
||||||
unlock_page(pages[j]); */
|
unlock_page(pages[j]); */
|
||||||
res = 0;
|
res = 0;
|
||||||
out_unmap:
|
out_unmap:
|
||||||
if (res > 0)
|
if (res > 0) {
|
||||||
for (j=0; j < res; j++)
|
for (j=0; j < res; j++)
|
||||||
page_cache_release(pages[j]);
|
page_cache_release(pages[j]);
|
||||||
|
res = 0;
|
||||||
|
}
|
||||||
kfree(pages);
|
kfree(pages);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue