scatterlist: make sure sg_miter_next() doesn't return 0 sized mappings
Impact: fix not-so-critical but annoying bug sg_miter_next() returns 0 sized mapping if there is an zero sized sg entry in the list or at the end of each iteration. As the users always check the ->length field, this bug shouldn't be critical other than causing unnecessary iteration. Fix it. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
This commit is contained in:
Родитель
0910697403
Коммит
23c560a99d
|
@ -347,9 +347,12 @@ bool sg_miter_next(struct sg_mapping_iter *miter)
|
||||||
sg_miter_stop(miter);
|
sg_miter_stop(miter);
|
||||||
|
|
||||||
/* get to the next sg if necessary. __offset is adjusted by stop */
|
/* get to the next sg if necessary. __offset is adjusted by stop */
|
||||||
if (miter->__offset == miter->__sg->length && --miter->__nents) {
|
while (miter->__offset == miter->__sg->length) {
|
||||||
|
if (--miter->__nents) {
|
||||||
miter->__sg = sg_next(miter->__sg);
|
miter->__sg = sg_next(miter->__sg);
|
||||||
miter->__offset = 0;
|
miter->__offset = 0;
|
||||||
|
} else
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* map the next page */
|
/* map the next page */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче