Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752375AbdCCSlc (ORCPT ); Fri, 3 Mar 2017 13:41:32 -0500 Received: from mail-qk0-f182.google.com ([209.85.220.182]:32768 "EHLO mail-qk0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752009AbdCCSla (ORCPT ); Fri, 3 Mar 2017 13:41:30 -0500 Subject: Re: [RFC PATCH 03/12] staging: android: ion: Duplicate sg_table To: Hillf Danton , "'Sumit Semwal'" , "'Riley Andrews'" , arve@android.com References: <1488491084-17252-1-git-send-email-labbott@redhat.com> <1488491084-17252-4-git-send-email-labbott@redhat.com> <07df01d293f6$bcfb4f30$36f1ed90$@alibaba-inc.com> Cc: romlem@google.com, devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org, linaro-mm-sig@lists.linaro.org, "'Greg Kroah-Hartman'" , linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org, dri-devel@lists.freedesktop.org, "'Brian Starkey'" , "'Daniel Vetter'" , "'Mark Brown'" , "'Benjamin Gaignard'" , linux-mm@kvack.org From: Laura Abbott Message-ID: <59f69b1b-0a10-01e9-3e64-387d8f123674@redhat.com> Date: Fri, 3 Mar 2017 10:41:25 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 MIME-Version: 1.0 In-Reply-To: <07df01d293f6$bcfb4f30$36f1ed90$@alibaba-inc.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 923 Lines: 42 On 03/03/2017 12:18 AM, Hillf Danton wrote: > > On March 03, 2017 5:45 AM Laura Abbott wrote: >> >> +static struct sg_table *dup_sg_table(struct sg_table *table) >> +{ >> + struct sg_table *new_table; >> + int ret, i; >> + struct scatterlist *sg, *new_sg; >> + >> + new_table = kzalloc(sizeof(*new_table), GFP_KERNEL); >> + if (!new_table) >> + return ERR_PTR(-ENOMEM); >> + >> + ret = sg_alloc_table(new_table, table->nents, GFP_KERNEL); >> + if (ret) { >> + kfree(table); > > Free new table? > >> + return ERR_PTR(-ENOMEM); >> + } >> + >> + new_sg = new_table->sgl; >> + for_each_sg(table->sgl, sg, table->nents, i) { >> + memcpy(new_sg, sg, sizeof(*sg)); >> + sg->dma_address = 0; >> + new_sg = sg_next(new_sg); >> + } >> + > > Do we need a helper, sg_copy_table(dst_table, src_table)? > >> + return new_table; >> +} >> + Yes, that would probably be good since I've seen this code elsewhere. Thanks, Laura