lib/scatterlist: Avoid potential scatterlist entry overflow
authorTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 3 Aug 2017 09:13:12 +0000 (10:13 +0100)
committerTvrtko Ursulin <tvrtko.ursulin@intel.com>
Thu, 7 Sep 2017 09:48:28 +0000 (10:48 +0100)
commitc125906b839b794c580a5de911de65bd2c63aaee
treed0a71a8b3ceb1d76b0b06387436bb7fab2801ef2
parentc4860ad60564838994b74e7ee7dd12ceeda0f520
lib/scatterlist: Avoid potential scatterlist entry overflow

Since the scatterlist length field is an unsigned int, make
sure that sg_alloc_table_from_pages does not overflow it while
coalescing pages to a single entry.

v2: Drop reference to future use. Use UINT_MAX.
v3: max_segment must be page aligned.
v4: Do not rely on compiler to optimise out the rounddown.
    (Joonas Lahtinen)
v5: Simplified loops and use post-increments rather than
    pre-increments. Use PAGE_MASK and fix comment typo.
    (Andy Shevchenko)
v6: Commit spelling fix.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: linux-kernel@vger.kernel.org
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20170803091312.22875-1-tvrtko.ursulin@linux.intel.com
include/linux/scatterlist.h
lib/scatterlist.c