Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933054AbcJXHVn (ORCPT ); Mon, 24 Oct 2016 03:21:43 -0400 Received: from mailout2.w1.samsung.com ([210.118.77.12]:23154 "EHLO mailout2.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751602AbcJXHVj (ORCPT ); Mon, 24 Oct 2016 03:21:39 -0400 X-AuditID: cbfec7f5-f79ce6d000004c54-ea-580db67fdce0 Subject: Re: [PATCH 1/5] lib/scatterlist: Fix offset type in sg_alloc_table_from_pages To: Tvrtko Ursulin , Intel-gfx@lists.freedesktop.org Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org, Chris Wilson , Tvrtko Ursulin , Masahiro Yamada , Pawel Osciak , Kyungmin Park , Matt Porter , Alexandre Bounine From: Marek Szyprowski Message-id: <38b72c9f-e9a7-2d7e-dd93-2f79c7f6c2eb@samsung.com> Date: Mon, 24 Oct 2016 09:21:34 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-version: 1.0 In-reply-to: <1477059083-3500-2-git-send-email-tvrtko.ursulin@linux.intel.com> Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA02Sa0hTYRjHe89lOy5PnabVo5XKwC+allJw0ojsgoeMqEhaIdnK0xSdyqaV fclLVs5V5jRjFtjFMK95TdIonbhF6WaKEJJLysScKY68RFqts8Bvv/f5P//3ef8PL4VL20lv KiE5jVcnK5JkIgnR0r1gCbrcQsu31raGss8f5mHsh5Eeki0taMTYnmy7mO1/cU/E6p41k2yx ZQ5niyYXxKy17wbJTvRnkuzLYQfavZJ7Oh3AjZjzMO5R+zjG6exXSM6Wb8K4zz/HRdzNpkrE mUvmCK6lMBfjHA0+hyUnJTvj+KSE87x6y67TkvgHFj1KHfO7+HC0kshENm8tcqOA2QavpipI gdeBdbhOpEUSSsqUIyidrSWEgwNBmbEG+++wdZWIBeEJgjtjv1yWMQT2+Ru4FlGUByOH+opo p8GTOQBZE7XI2YMz0xjkLN0VOwUREwLaSa3IyTSzC0q015CTCcYfDCbjv/paJgaGigZxoWcN zOuHCSe7MYcg06z/V8eZMPi6lEsK7AuN1ZO4cxgw42L4NJEndj4ImE3Q8BoXEuwDR9Wiiz3g m6lJLPBG6NfnEwLfQpCdGyjwXQS9k7TA4WA09blmrYLClhJcuJ6G61elAnIwPubabgTY8opc 6xlFoOtpJgqQr2FZGsOyBIZlCcoQXok8+XSNSslrtgdrFCpNerIy+GyKqgH9/VNvl0w/WlF5 d1gnYigkc6fN793lUlJxXpOh6kRA4TJP2quZlkvpOEXGJV6dEqtOT+I1nWgDRcjW0+1lA8el jFKRxifyfCqv/q9ilJt3JjoY1BGp1M+Hrt48N18fbrCfC56JCLmo3HEm6n51lTzUeGH/x4TY AWPkfeJ7TKO1zbLoONX77rH/isC6L5jB4Ohg9/hGJfrUfE0c2P3GstfHWm/fYEnrUPi03Yo5 qDrye+ro/qGc6Cbd1Ixf9my+QX+i1atqsPhYvyn4dpiqqzCrSUZo4hUhAbhao/gD2Q1Yq08D AAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrHIsWRmVeSWpSXmKPExsVy+t/xK7ox23gjDD7M17PYvqiTyeLmw7Os FrMnbGayONv0ht3i8q45bBY9G7ayWkw9/53ZYsrbn+wWFy72slq8vtzAarH33mdGB26PlR+0 PB6e6GTyWLznJZNHz5sWVo/73ceZPB7/esnm0bdlFaPHienfWTy2TWpl8vi8SS6AK8rNJiM1 MSW1SCE1Lzk/JTMv3VYpNMRN10JJIS8xN9VWKULXNyRISaEsMacUyDMyQAMOzgHuwUr6dglu GQvPT2YseK5QsejpKpYGxvtSXYycHBICJhL3j0xnh7DFJC7cW8/WxcjFISSwhFHiyrOdLBDO c0aJ0+tXMXUxcnAIC0RIbFwRCtIgIuAl0fh6HSNEzVNGiRnTX4N1Mwt8YZJ4/vg2K0gVm4Ch RNfbLjYQm1fATmJ6VzsjiM0ioCox6/hhsLioQIzE9WePoGoEJX5MvscCYnMK+Ek0nJjMDGIz C5hJfHl5mBXClpfYvOYt8wRGgVlIWmYhKZuFpGwBI/MqRpHU0uLc9NxiI73ixNzi0rx0veT8 3E2MwLjdduznlh2MXe+CDzEKcDAq8fAqXOWJEGJNLCuuzD3EKMHBrCTCK7mVN0KINyWxsiq1 KD++qDQntfgQoynQExOZpUST84EpJa8k3tDE0NzS0MjYwsLcyEhJnHfqhyvhQgLpiSWp2amp BalFMH1MHJxSDYzzD0l4S7a2CrZ5zly4e56As3CLU/XrqYzOitHl01Yub4qUN2W9cXZvjliI zeT5H8JPehfk9gd9P6TLZMWUHVTPZZhdJbH7nkDLB3FvYTkOjzKj7/8efg+3FFRr11z+ozh2 lfK5uBDDmK9Pz80zbA6YZcAiWbpp+rSlSxZrOV0/djV+5Y5p+UosxRmJhlrMRcWJACemaEnx AgAA X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20161024072135eucas1p216ca2c357b33946fd8562801f4cbc687 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRs=?= =?UTF-8?B?7IK87ISx7KCE7J6QG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Global-Sender: =?UTF-8?B?TWFyZWsgU3p5cHJvd3NraRtTUlBPTC1LZXJuZWwgKFRQKRtT?= =?UTF-8?B?YW1zdW5nIEVsZWN0cm9uaWNzG1NlbmlvciBTb2Z0d2FyZSBFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20161021141144eucas1p24cd984476554d06e4d45683bc8a60d0d X-RootMTR: 20161021141144eucas1p24cd984476554d06e4d45683bc8a60d0d References: <1477059083-3500-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1477059083-3500-2-git-send-email-tvrtko.ursulin@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4091 Lines: 106 Hi Tvrtko, On 2016-10-21 16:11, Tvrtko Ursulin wrote: > 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. > > 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 > --- > 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 fb6a177be461..a3aac7533241 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(vaddr & ~PAGE_MASK); > 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 436dfe871d32..f545cf20561f 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(xfer->loc_addr & ~PAGE_MASK); > 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 004fc70fc56a..e05e7fc98892 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; Best regards -- Marek Szyprowski, PhD Samsung R&D Institute Poland