From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH 1/4] lib/scatterlist: Fix offset type in sg_alloc_table_from_pages Date: Thu, 4 May 2017 16:54:02 +0100 Message-ID: <20170504155405.7425-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 76BD86E079 for ; Thu, 4 May 2017 15:54:15 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id d79so4255352wmi.2 for ; Thu, 04 May 2017 08:54:15 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org Cc: Tomasz Stanislawski , Pawel Osciak , linux-kernel@vger.kernel.org, Masahiro Yamada , Kyungmin Park , Matt Porter , linux-media@vger.kernel.org, Alexandre Bounine , Marek Szyprowski List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClNjYXR0ZXJs aXN0IGVudHJpZXMgaGF2ZSBhbiB1bnNpZ25lZCBpbnQgZm9yIHRoZSBvZmZzZXQgc28KY29ycmVj dCB0aGUgc2dfYWxsb2NfdGFibGVfZnJvbV9wYWdlcyBmdW5jdGlvbiBhY2NvcmRpbmdseS4KClNp bmNlIHRoZXNlIGFyZSBvZmZzZXRzIHdpdGhpbmcgYSBwYWdlLCB1bnNpZ25lZCBpbnQgaXMKd2lk ZSBlbm91Z2guCgpBbHNvIGNvbnZlcnRzIGNhbGxlcnMgd2hpY2ggd2VyZSB1c2luZyB1bnNpZ25l ZCBsb25nIGxvY2FsbHkKd2l0aCB0aGUgbG93ZXJfMzJfYml0cyBhbm5vdGF0aW9uIHRvIG1ha2Ug aXQgZXhwbGljaXRseQpjbGVhciB3aGF0IGlzIGhhcHBlbmluZy4KCnYyOiBVc2Ugb2Zmc2V0X2lu X3BhZ2UuIChDaHJpcyBXaWxzb24pCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgpDYzogTWFzYWhpcm8gWWFtYWRhIDx5YW1hZGEubWFzYWhp cm9Ac29jaW9uZXh0LmNvbT4KQ2M6IFBhd2VsIE9zY2lhayA8cGF3ZWxAb3NjaWFrLmNvbT4KQ2M6 IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3NraUBzYW1zdW5nLmNvbT4KQ2M6IEt5dW5nbWlu IFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+CkNjOiBUb21hc3ogU3RhbmlzbGF3c2tp IDx0LnN0YW5pc2xhd3NAc2Ftc3VuZy5jb20+CkNjOiBNYXR0IFBvcnRlciA8bXBvcnRlckBrZXJu ZWwuY3Jhc2hpbmcub3JnPgpDYzogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZS5ib3VuaW5l QGlkdC5jb20+CkNjOiBsaW51eC1tZWRpYUB2Z2VyLmtlcm5lbC5vcmcKQ2M6IGxpbnV4LWtlcm5l bEB2Z2VyLmtlcm5lbC5vcmcKQWNrZWQtYnk6IE1hcmVrIFN6eXByb3dza2kgPG0uc3p5cHJvd3Nr aUBzYW1zdW5nLmNvbT4gKHYxKQpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+ClJldmlld2VkLWJ5OiBNYXVybyBDYXJ2YWxobyBDaGVoYWIgPG1jaGVo YWJAcy1vcGVuc291cmNlLmNvbT4KLS0tCiBkcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1 ZjItZG1hLWNvbnRpZy5jIHwgNCArKy0tCiBkcml2ZXJzL3JhcGlkaW8vZGV2aWNlcy9yaW9fbXBv cnRfY2Rldi5jICAgICAgIHwgNCArKy0tCiBpbmNsdWRlL2xpbnV4L3NjYXR0ZXJsaXN0LmggICAg ICAgICAgICAgICAgICAgIHwgMiArLQogbGliL3NjYXR0ZXJsaXN0LmMgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8IDIgKy0KIDQgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVv YnVmMi1kbWEtY29udGlnLmMgYi9kcml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1h LWNvbnRpZy5jCmluZGV4IDJkYjA0MTNmNWQ1Ny4uYjUwMDljMTY0OWJjIDEwMDY0NAotLS0gYS9k cml2ZXJzL21lZGlhL3Y0bDItY29yZS92aWRlb2J1ZjItZG1hLWNvbnRpZy5jCisrKyBiL2RyaXZl cnMvbWVkaWEvdjRsMi1jb3JlL3ZpZGVvYnVmMi1kbWEtY29udGlnLmMKQEAgLTQ3OCw3ICs0Nzgs NyBAQCBzdGF0aWMgdm9pZCAqdmIyX2RjX2dldF91c2VycHRyKHN0cnVjdCBkZXZpY2UgKmRldiwg dW5zaWduZWQgbG9uZyB2YWRkciwKIHsKIAlzdHJ1Y3QgdmIyX2RjX2J1ZiAqYnVmOwogCXN0cnVj dCBmcmFtZV92ZWN0b3IgKnZlYzsKLQl1bnNpZ25lZCBsb25nIG9mZnNldDsKKwl1bnNpZ25lZCBp bnQgb2Zmc2V0OwogCWludCBuX3BhZ2VzLCBpOwogCWludCByZXQgPSAwOwogCXN0cnVjdCBzZ190 YWJsZSAqc2d0OwpAQCAtNTA2LDcgKzUwNiw3IEBAIHN0YXRpYyB2b2lkICp2YjJfZGNfZ2V0X3Vz ZXJwdHIoc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIHZhZGRyLAogCWJ1Zi0+ZGV2 ID0gZGV2OwogCWJ1Zi0+ZG1hX2RpciA9IGRtYV9kaXI7CiAKLQlvZmZzZXQgPSB2YWRkciAmIH5Q QUdFX01BU0s7CisJb2Zmc2V0ID0gbG93ZXJfMzJfYml0cyhvZmZzZXRfaW5fcGFnZSh2YWRkcikp OwogCXZlYyA9IHZiMl9jcmVhdGVfZnJhbWV2ZWModmFkZHIsIHNpemUsIGRtYV9kaXIgPT0gRE1B X0ZST01fREVWSUNFKTsKIAlpZiAoSVNfRVJSKHZlYykpIHsKIAkJcmV0ID0gUFRSX0VSUih2ZWMp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9yYXBpZGlvL2RldmljZXMvcmlvX21wb3J0X2NkZXYuYyBi L2RyaXZlcnMvcmFwaWRpby9kZXZpY2VzL3Jpb19tcG9ydF9jZGV2LmMKaW5kZXggNTBiNjE3YWY4 MWJkLi5hOGI2Njk2YWI2Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcmFwaWRpby9kZXZpY2VzL3Jp b19tcG9ydF9jZGV2LmMKKysrIGIvZHJpdmVycy9yYXBpZGlvL2RldmljZXMvcmlvX21wb3J0X2Nk ZXYuYwpAQCAtODc2LDEwICs4NzYsMTAgQEAgcmlvX2RtYV90cmFuc2ZlcihzdHJ1Y3QgZmlsZSAq ZmlscCwgdTMyIHRyYW5zZmVyX21vZGUsCiAJICogb2Zmc2V0IHdpdGhpbiB0aGUgaW50ZXJuYWwg YnVmZmVyIHNwZWNpZmllZCBieSBoYW5kbGUgcGFyYW1ldGVyLgogCSAqLwogCWlmICh4ZmVyLT5s b2NfYWRkcikgewotCQl1bnNpZ25lZCBsb25nIG9mZnNldDsKKwkJdW5zaWduZWQgaW50IG9mZnNl dDsKIAkJbG9uZyBwaW5uZWQ7CiAKLQkJb2Zmc2V0ID0gKHVuc2lnbmVkIGxvbmcpKHVpbnRwdHJf dCl4ZmVyLT5sb2NfYWRkciAmIH5QQUdFX01BU0s7CisJCW9mZnNldCA9IGxvd2VyXzMyX2JpdHMo b2Zmc2V0X2luX3BhZ2UoeGZlci0+bG9jX2FkZHIpKTsKIAkJbnJfcGFnZXMgPSBQQUdFX0FMSUdO KHhmZXItPmxlbmd0aCArIG9mZnNldCkgPj4gUEFHRV9TSElGVDsKIAogCQlwYWdlX2xpc3QgPSBr bWFsbG9jX2FycmF5KG5yX3BhZ2VzLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zY2F0dGVy bGlzdC5oIGIvaW5jbHVkZS9saW51eC9zY2F0dGVybGlzdC5oCmluZGV4IGNiM2M4ZmU2YWNkNy4u Yzk4MWJlZTFhM2FlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NjYXR0ZXJsaXN0LmgKKysr IGIvaW5jbHVkZS9saW51eC9zY2F0dGVybGlzdC5oCkBAIC0yNjMsNyArMjYzLDcgQEAgaW50IF9f c2dfYWxsb2NfdGFibGUoc3RydWN0IHNnX3RhYmxlICosIHVuc2lnbmVkIGludCwgdW5zaWduZWQg aW50LAogaW50IHNnX2FsbG9jX3RhYmxlKHN0cnVjdCBzZ190YWJsZSAqLCB1bnNpZ25lZCBpbnQs IGdmcF90KTsKIGludCBzZ19hbGxvY190YWJsZV9mcm9tX3BhZ2VzKHN0cnVjdCBzZ190YWJsZSAq c2d0LAogCXN0cnVjdCBwYWdlICoqcGFnZXMsIHVuc2lnbmVkIGludCBuX3BhZ2VzLAotCXVuc2ln bmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNpemUsCisJdW5zaWduZWQgaW50IG9mZnNl dCwgdW5zaWduZWQgbG9uZyBzaXplLAogCWdmcF90IGdmcF9tYXNrKTsKIAogc2l6ZV90IHNnX2Nv cHlfYnVmZmVyKHN0cnVjdCBzY2F0dGVybGlzdCAqc2dsLCB1bnNpZ25lZCBpbnQgbmVudHMsIHZv aWQgKmJ1ZiwKZGlmZiAtLWdpdCBhL2xpYi9zY2F0dGVybGlzdC5jIGIvbGliL3NjYXR0ZXJsaXN0 LmMKaW5kZXggYzZjZjgyMjQyZDY1Li4xMWYxNzJjMzgzY2IgMTAwNjQ0Ci0tLSBhL2xpYi9zY2F0 dGVybGlzdC5jCisrKyBiL2xpYi9zY2F0dGVybGlzdC5jCkBAIC0zOTEsNyArMzkxLDcgQEAgRVhQ T1JUX1NZTUJPTChzZ19hbGxvY190YWJsZSk7CiAgKi8KIGludCBzZ19hbGxvY190YWJsZV9mcm9t X3BhZ2VzKHN0cnVjdCBzZ190YWJsZSAqc2d0LAogCXN0cnVjdCBwYWdlICoqcGFnZXMsIHVuc2ln bmVkIGludCBuX3BhZ2VzLAotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0LCB1bnNpZ25lZCBsb25nIHNp emUsCisJdW5zaWduZWQgaW50IG9mZnNldCwgdW5zaWduZWQgbG9uZyBzaXplLAogCWdmcF90IGdm cF9tYXNrKQogewogCXVuc2lnbmVkIGludCBjaHVua3M7Ci0tIAoyLjkuMwoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail-wm0-f66.google.com ([74.125.82.66]:36347 "EHLO mail-wm0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751474AbdEDPyP (ORCPT ); Thu, 4 May 2017 11:54:15 -0400 Received: by mail-wm0-f66.google.com with SMTP id u65so4217932wmu.3 for ; Thu, 04 May 2017 08:54:14 -0700 (PDT) From: Tvrtko Ursulin To: Intel-gfx@lists.freedesktop.org Cc: tursulin@ursulin.net, Tvrtko Ursulin , Masahiro Yamada , Pawel Osciak , Marek Szyprowski , Kyungmin Park , Tomasz Stanislawski , Matt Porter , Alexandre Bounine , linux-media@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] lib/scatterlist: Fix offset type in sg_alloc_table_from_pages Date: Thu, 4 May 2017 16:54:02 +0100 Message-Id: <20170504155405.7425-1-tvrtko.ursulin@linux.intel.com> Sender: linux-media-owner@vger.kernel.org List-ID: From: Tvrtko Ursulin 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 Cc: Masahiro Yamada Cc: Pawel Osciak Cc: Marek Szyprowski Cc: Kyungmin Park Cc: Tomasz Stanislawski Cc: Matt Porter Cc: Alexandre Bounine Cc: linux-media@vger.kernel.org Cc: linux-kernel@vger.kernel.org Acked-by: Marek Szyprowski (v1) Reviewed-by: Chris Wilson Reviewed-by: Mauro Carvalho Chehab --- drivers/media/v4l2-core/videobuf2-dma-contig.c | 4 ++-- drivers/rapidio/devices/rio_mport_cdev.c | 4 ++-- include/linux/scatterlist.h | 2 +- lib/scatterlist.c | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c index 2db0413f5d57..b5009c1649bc 100644 --- a/drivers/media/v4l2-core/videobuf2-dma-contig.c +++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c @@ -478,7 +478,7 @@ static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr, { struct vb2_dc_buf *buf; struct frame_vector *vec; - unsigned long offset; + unsigned int offset; int n_pages, i; int ret = 0; struct sg_table *sgt; @@ -506,7 +506,7 @@ static void *vb2_dc_get_userptr(struct device *dev, unsigned long vaddr, buf->dev = dev; buf->dma_dir = dma_dir; - offset = vaddr & ~PAGE_MASK; + offset = lower_32_bits(offset_in_page(vaddr)); vec = vb2_create_framevec(vaddr, size, dma_dir == DMA_FROM_DEVICE); if (IS_ERR(vec)) { ret = PTR_ERR(vec); diff --git a/drivers/rapidio/devices/rio_mport_cdev.c b/drivers/rapidio/devices/rio_mport_cdev.c index 50b617af81bd..a8b6696ab6cb 100644 --- a/drivers/rapidio/devices/rio_mport_cdev.c +++ b/drivers/rapidio/devices/rio_mport_cdev.c @@ -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, diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index cb3c8fe6acd7..c981bee1a3ae 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h @@ -263,7 +263,7 @@ int __sg_alloc_table(struct sg_table *, unsigned int, unsigned int, int sg_alloc_table(struct sg_table *, unsigned int, gfp_t); int sg_alloc_table_from_pages(struct sg_table *sgt, struct page **pages, unsigned int n_pages, - unsigned long offset, unsigned long size, + unsigned int offset, unsigned long size, gfp_t gfp_mask); size_t sg_copy_buffer(struct scatterlist *sgl, unsigned int nents, void *buf, diff --git a/lib/scatterlist.c b/lib/scatterlist.c index c6cf82242d65..11f172c383cb 100644 --- a/lib/scatterlist.c +++ b/lib/scatterlist.c @@ -391,7 +391,7 @@ EXPORT_SYMBOL(sg_alloc_table); */ int sg_alloc_table_from_pages(struct sg_table *sgt, struct page **pages, unsigned int n_pages, - unsigned long offset, unsigned long size, + unsigned int offset, unsigned long size, gfp_t gfp_mask) { unsigned int chunks; -- 2.9.3