>-----Original Message----- >From: Greg Kroah-Hartman [mailto:gregkh@xxxxxxxxxxxxxxxxxxx] >Sent: Saturday, March 30, 2019 12:02 AM >To: Zengtao (B) <prime.zeng@xxxxxxxxxxxxx> >Cc: labbott@xxxxxxxxxx; sumit.semwal@xxxxxxxxxx; >devel@xxxxxxxxxxxxxxxxxxxx; Todd Kjos <tkjos@xxxxxxxxxxx>; >linux-kernel@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; >linaro-mm-sig@xxxxxxxxxxxxxxxx; Arve Hjønnevåg <arve@xxxxxxxxxxx>; >Joel Fernandes <joel@xxxxxxxxxxxxxxxxx>; Martijn Coenen ><maco@xxxxxxxxxxx>; Christian Brauner <christian@xxxxxxxxxx> >Subject: Re: [PATCH] staging: android: ion: refactory ion_alloc for kernel >driver use > >On Sat, Mar 30, 2019 at 02:40:16AM +0800, Zeng Tao wrote: >> There are two reasons for this patch: >> 1. There are some potential requirements for ion_alloc in kernel >> space, some media drivers need to allocate media buffers from ion >> instead of buddy or dma framework, this is more convient and clean >> very for media drivers. And In that case, ion is the only media buffer >> provider, it's more easier to maintain. >> 2. Fd is only needed by user processes, not the kernel space, so >> dma_buf should be returned instead of fd for kernel space, and >> dma_buf_fd should be called only for userspace api. >> >> Signed-off-by: Zeng Tao <prime.zeng@xxxxxxxxxxxxx> >> --- >> drivers/staging/android/ion/ion.c | 32 >> +++++++++++++++++--------------- >> 1 file changed, 17 insertions(+), 15 deletions(-) >> >> diff --git a/drivers/staging/android/ion/ion.c >> b/drivers/staging/android/ion/ion.c >> index 92c2914..e93fb49 100644 >> --- a/drivers/staging/android/ion/ion.c >> +++ b/drivers/staging/android/ion/ion.c >> @@ -387,13 +387,13 @@ static const struct dma_buf_ops >dma_buf_ops = { >> .unmap = ion_dma_buf_kunmap, >> }; >> >> -static int ion_alloc(size_t len, unsigned int heap_id_mask, unsigned >> int flags) >> +struct dma_buf *ion_alloc(size_t len, unsigned int heap_id_mask, >> + unsigned int flags) >> { >> struct ion_device *dev = internal_dev; >> struct ion_buffer *buffer = NULL; >> struct ion_heap *heap; >> DEFINE_DMA_BUF_EXPORT_INFO(exp_info); >> - int fd; >> struct dma_buf *dmabuf; >> >> pr_debug("%s: len %zu heap_id_mask %u flags %x\n", __func__, >@@ >> -407,7 +407,7 @@ static int ion_alloc(size_t len, unsigned int >heap_id_mask, unsigned int flags) >> len = PAGE_ALIGN(len); >> >> if (!len) >> - return -EINVAL; >> + return ERR_PTR(-EINVAL); >> >> down_read(&dev->lock); >> plist_for_each_entry(heap, &dev->heaps, node) { @@ -421,10 >+421,10 >> @@ static int ion_alloc(size_t len, unsigned int heap_id_mask, >unsigned int flags) >> up_read(&dev->lock); >> >> if (!buffer) >> - return -ENODEV; >> + return ERR_PTR(-ENODEV); >> >> if (IS_ERR(buffer)) >> - return PTR_ERR(buffer); >> + return ERR_PTR(PTR_ERR(buffer)); >> >> exp_info.ops = &dma_buf_ops; >> exp_info.size = buffer->size; >> @@ -432,17 +432,12 @@ static int ion_alloc(size_t len, unsigned int >heap_id_mask, unsigned int flags) >> exp_info.priv = buffer; >> >> dmabuf = dma_buf_export(&exp_info); >> - if (IS_ERR(dmabuf)) { >> + if (IS_ERR(dmabuf)) >> _ion_buffer_destroy(buffer); >> - return PTR_ERR(dmabuf); >> - } >> >> - fd = dma_buf_fd(dmabuf, O_CLOEXEC); >> - if (fd < 0) >> - dma_buf_put(dmabuf); >> - >> - return fd; >> + return dmabuf; >> } >> +EXPORT_SYMBOL(ion_alloc); > >If you are going to do this (and personally I'm with Laura in that I don't >think you need it) this should be EXPORT_SYMBOL_GPL() please. > Agree, thanks Regards Zengtao >thanks, > >greg k-h _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel