Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23c560a9 authored by Tejun Heo's avatar Tejun Heo Committed by Jens Axboe
Browse files

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: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
parent 09106974
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -347,9 +347,12 @@ bool sg_miter_next(struct sg_mapping_iter *miter)
	sg_miter_stop(miter);

	/* 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->__offset = 0;
		} else
			return false;
	}

	/* map the next page */