From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ming Lei Subject: [PATCH V4 09/16] staging: rtsx: use sg helper to operate scatterlist Date: Mon, 17 Jun 2019 11:03:42 +0800 Message-ID: <20190617030349.26415-10-ming.lei@redhat.com> References: <20190617030349.26415-1-ming.lei@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20190617030349.26415-1-ming.lei@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: driverdev-devel-bounces@linuxdriverproject.org Sender: "devel" To: linux-scsi@vger.kernel.org, "Martin K . Petersen" Cc: Michael Schmitz , devel@driverdev.osuosl.org, Hannes Reinecke , Benjamin Block , Bart Van Assche , Greg Kroah-Hartman , linux-usb@vger.kernel.org, James Smart , "Ewan D . Milne" , Jim Gill , James Bottomley , Brian King , Finn Thain , Kim Bradley , "Juergen E . Fischer" , Ming Lei , Christoph Hellwig , Dan Carpenter List-Id: linux-scsi@vger.kernel.org Use the scatterlist iterators and remove direct indexing of the scatterlist array. This way allows us to pre-allocate one small scatterlist, which can be chained with one runtime allocated scatterlist if the pre-allocated one isn't enough for the whole request. Cc: Kim Bradley Cc: devel@driverdev.osuosl.org Cc: Greg Kroah-Hartman Signed-off-by: Ming Lei --- drivers/staging/rts5208/rtsx_transport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/staging/rts5208/rtsx_transport.c b/drivers/staging/rts5208/rtsx_transport.c index 8277d7895608..407c9079b052 100644 --- a/drivers/staging/rts5208/rtsx_transport.c +++ b/drivers/staging/rts5208/rtsx_transport.c @@ -63,6 +63,8 @@ unsigned int rtsx_stor_access_xfer_buf(unsigned char *buffer, struct scatterlist *sg = (struct scatterlist *)scsi_sglist(srb) + *index; + if (sg_is_chain(sg)) + sg = sg_chain_ptr(sg); /* * This loop handles a single s-g list entry, which may @@ -86,7 +88,7 @@ unsigned int rtsx_stor_access_xfer_buf(unsigned char *buffer, /* Transfer continues to next s-g entry */ *offset = 0; ++*index; - ++sg; + sg = sg_next(sg); } while (sglen > 0) { -- 2.20.1