lib/scatterlist: Fix offset type in sg_alloc_table_from_pages
Scatterlist entries have an unsigned int for the offset so correct the sg_alloc_table_from_pages function accordingly. Since these are offsets withing a page, unsigned int is wide enough. Also converts callers which were using unsigned long locally with the lower_32_bits annotation to make it explicitly clear what is happening. v2: Use offset_in_page. (Chris Wilson) Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Pawel Osciak <pawel@osciak.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Tomasz Stanislawski <t.stanislaws@samsung.com> Cc: Matt Porter <mporter@kernel.crashing.org> Cc: Alexandre Bounine <alexandre.bounine@idt.com> Cc: linux-media@vger.kernel.org Cc: linux-kernel@vger.kernel.org Acked-by: Marek Szyprowski <m.szyprowski@samsung.com> (v1) Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mauro Carvalho Chehab <mchehab@s-opensource.com> Link: https://patchwork.freedesktop.org/patch/msgid/20170731185512.20010-1-tvrtko.ursulin@linux.intel.com
This commit is contained in:
@@ -876,10 +876,10 @@ rio_dma_transfer(struct file *filp, u32 transfer_mode,
|
||||
* offset within the internal buffer specified by handle parameter.
|
||||
*/
|
||||
if (xfer->loc_addr) {
|
||||
unsigned long offset;
|
||||
unsigned int offset;
|
||||
long pinned;
|
||||
|
||||
offset = (unsigned long)(uintptr_t)xfer->loc_addr & ~PAGE_MASK;
|
||||
offset = lower_32_bits(offset_in_page(xfer->loc_addr));
|
||||
nr_pages = PAGE_ALIGN(xfer->length + offset) >> PAGE_SHIFT;
|
||||
|
||||
page_list = kmalloc_array(nr_pages,
|
||||
|
Reference in New Issue
Block a user