lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <678F3D1BB717D949B966B68EAEB446ED24EBDE20@DGGEMM506-MBS.china.huawei.com>
Date:   Sat, 30 Mar 2019 02:27:27 +0000
From:   "Zengtao (B)" <prime.zeng@...ilicon.com>
To:     Greg Kroah-Hartman <gregkh@...uxfoundation.org>
CC:     "labbott@...hat.com" <labbott@...hat.com>,
        "sumit.semwal@...aro.org" <sumit.semwal@...aro.org>,
        "devel@...verdev.osuosl.org" <devel@...verdev.osuosl.org>,
        Todd Kjos <tkjos@...roid.com>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "dri-devel@...ts.freedesktop.org" <dri-devel@...ts.freedesktop.org>,
        "linaro-mm-sig@...ts.linaro.org" <linaro-mm-sig@...ts.linaro.org>,
        Arve Hjønnevåg <arve@...roid.com>,
        Joel Fernandes <joel@...lfernandes.org>,
        Martijn Coenen <maco@...roid.com>,
        "Christian Brauner" <christian@...uner.io>
Subject: RE: [PATCH] staging: android: ion: refactory ion_alloc for kernel
 driver use



>-----Original Message-----
>From: Greg Kroah-Hartman [mailto:gregkh@...uxfoundation.org]
>Sent: Saturday, March 30, 2019 12:02 AM
>To: Zengtao (B) <prime.zeng@...ilicon.com>
>Cc: labbott@...hat.com; sumit.semwal@...aro.org;
>devel@...verdev.osuosl.org; Todd Kjos <tkjos@...roid.com>;
>linux-kernel@...r.kernel.org; dri-devel@...ts.freedesktop.org;
>linaro-mm-sig@...ts.linaro.org; Arve Hjønnevåg <arve@...roid.com>;
>Joel Fernandes <joel@...lfernandes.org>; Martijn Coenen
><maco@...roid.com>; Christian Brauner <christian@...uner.io>
>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@...ilicon.com>
>> ---
>>  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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ