diff mbox series

ION: Sys_heap: fix the incorrect pool->gfp_mask setting

Message ID 1515494623-8383-1-git-send-email-prime.zeng@hisilicon.com
State New
Headers show
Series ION: Sys_heap: fix the incorrect pool->gfp_mask setting | expand

Commit Message

Zeng Tao Jan. 9, 2018, 10:43 a.m. UTC
This issue is introduced by the commit <e7f63771b60e> ("ION: Sys_heap:
Add cached pool to spead up cached buffer alloc"), the gfp_mask low
order pool is overlapped by the high order inside the loop, so the
gfp_mask of all pools are set to high_order_gfp_flags.

Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>

---
 drivers/staging/android/ion/ion_system_heap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.7.4

Comments

Chen Feng Jan. 9, 2018, 3:30 a.m. UTC | #1
On 2018/1/9 18:43, Zeng Tao wrote:
> This issue is introduced by the commit <e7f63771b60e> ("ION: Sys_heap:

> Add cached pool to spead up cached buffer alloc"), the gfp_mask low

> order pool is overlapped by the high order inside the loop, so the

> gfp_mask of all pools are set to high_order_gfp_flags.

> 


Thanks
> Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>

> ---

>  drivers/staging/android/ion/ion_system_heap.c | 2 +-

>  1 file changed, 1 insertion(+), 1 deletion(-)

> 

> diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c

> index 4dc5d7a..b6386be 100644

> --- a/drivers/staging/android/ion/ion_system_heap.c

> +++ b/drivers/staging/android/ion/ion_system_heap.c

> @@ -298,10 +298,10 @@ static int ion_system_heap_create_pools(struct ion_page_pool **pools,

>  					bool cached)

>  {

>  	int i;

> -	gfp_t gfp_flags = low_order_gfp_flags;

>  

>  	for (i = 0; i < NUM_ORDERS; i++) {

>  		struct ion_page_pool *pool;

> +		gfp_t gfp_flags = low_order_gfp_flags;


Not define here. Better "gfp_flags = low_order_gfp_flags"
>  

>  		if (orders[i] > 4)

>  			gfp_flags = high_order_gfp_flags;

>
Dan Carpenter Jan. 9, 2018, 9:14 a.m. UTC | #2
On Tue, Jan 09, 2018 at 11:30:09AM +0800, Chen Feng wrote:
> 

> 

> On 2018/1/9 18:43, Zeng Tao wrote:

> > This issue is introduced by the commit <e7f63771b60e> ("ION: Sys_heap:

> > Add cached pool to spead up cached buffer alloc"),


Use the Fixes tag.

Fixes: e7f63771b60e ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")

> the gfp_mask low

> > order pool is overlapped by the high order inside the loop, so the

> > gfp_mask of all pools are set to high_order_gfp_flags.

> > 

> 

> Thanks

> > Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>

> > ---

> >  drivers/staging/android/ion/ion_system_heap.c | 2 +-

> >  1 file changed, 1 insertion(+), 1 deletion(-)

> > 

> > diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c

> > index 4dc5d7a..b6386be 100644

> > --- a/drivers/staging/android/ion/ion_system_heap.c

> > +++ b/drivers/staging/android/ion/ion_system_heap.c

> > @@ -298,10 +298,10 @@ static int ion_system_heap_create_pools(struct ion_page_pool **pools,

> >  					bool cached)

> >  {

> >  	int i;

> > -	gfp_t gfp_flags = low_order_gfp_flags;

> >  

> >  	for (i = 0; i < NUM_ORDERS; i++) {

> >  		struct ion_page_pool *pool;

> > +		gfp_t gfp_flags = low_order_gfp_flags;

> 

> Not define here. Better "gfp_flags = low_order_gfp_flags"


Either way is fine...

regards,
dan carpenter
Laura Abbott Jan. 11, 2018, midnight UTC | #3
On 01/09/2018 04:06 AM, Zengtao (B) wrote:
>> -----邮件原件-----

>> 发件人: Dan Carpenter [mailto:dan.carpenter@oracle.com]

>> 发送时间: 2018年1月9日 17:14

>> 收件人: Chenfeng (puck) <puck.chen@hisilicon.com>

>> 抄送: Zengtao (B) <prime.zeng@hisilicon.com>; labbott@redhat.com;

>> sumit.semwal@linaro.org; gregkh@linuxfoundation.org; arve@android.com;

>> tkjos@android.com; maco@android.com; devel@driverdev.osuosl.org;

>> linux-kernel@vger.kernel.org

>> 主题: Re: [PATCH] ION: Sys_heap: fix the incorrect pool->gfp_mask setting

>>

>> On Tue, Jan 09, 2018 at 11:30:09AM +0800, Chen Feng wrote:

>>>

>>>

>>> On 2018/1/9 18:43, Zeng Tao wrote:

>>>> This issue is introduced by the commit <e7f63771b60e> ("ION: Sys_heap:

>>>> Add cached pool to spead up cached buffer alloc"),

>>

>> Use the Fixes tag.

>>

>> Fixes: e7f63771b60e ("ION: Sys_heap: Add cached pool to spead up cached

>> buffer alloc")

>>

> Agree, thanks.

> 


If you're going to be fixing this, it would be good to
fix the other problems pointed out (stop with the
#define of the flags).

Thanks,
Laura
Laura Abbott Jan. 11, 2018, 6:29 p.m. UTC | #4
On 01/10/2018 06:06 PM, Zengtao (B) wrote:
>> -----邮件原件-----

>> 发件人: Laura Abbott [mailto:labbott@redhat.com]

>> 发送时间: 2018年1月11日 8:01

>> 收件人: Zengtao (B) <prime.zeng@hisilicon.com>; Dan Carpenter

>> <dan.carpenter@oracle.com>; Chenfeng (puck) <puck.chen@hisilicon.com>

>> 抄送: sumit.semwal@linaro.org; gregkh@linuxfoundation.org;

>> arve@android.com; tkjos@android.com; maco@android.com;

>> devel@driverdev.osuosl.org; linux-kernel@vger.kernel.org

>> 主题: Re: 答复: [PATCH] ION: Sys_heap: fix the incorrect pool->gfp_mask

>> setting

>>

>> On 01/09/2018 04:06 AM, Zengtao (B) wrote:

>>>> -----邮件原件-----

>>>> 发件人: Dan Carpenter [mailto:dan.carpenter@oracle.com]

>>>> 发送时间: 2018年1月9日 17:14

>>>> 收件人: Chenfeng (puck) <puck.chen@hisilicon.com>

>>>> 抄送: Zengtao (B) <prime.zeng@hisilicon.com>; labbott@redhat.com;

>>>> sumit.semwal@linaro.org; gregkh@linuxfoundation.org;

>>>> arve@android.com; tkjos@android.com; maco@android.com;

>>>> devel@driverdev.osuosl.org; linux-kernel@vger.kernel.org

>>>> 主题: Re: [PATCH] ION: Sys_heap: fix the incorrect pool->gfp_mask

>>>> setting

>>>>

>>>> On Tue, Jan 09, 2018 at 11:30:09AM +0800, Chen Feng wrote:

>>>>>

>>>>>

>>>>> On 2018/1/9 18:43, Zeng Tao wrote:

>>>>>> This issue is introduced by the commit <e7f63771b60e> ("ION: Sys_heap:

>>>>>> Add cached pool to spead up cached buffer alloc"),

>>>>

>>>> Use the Fixes tag.

>>>>

>>>> Fixes: e7f63771b60e ("ION: Sys_heap: Add cached pool to spead up

>>>> cached buffer alloc")

>>>>

>>> Agree, thanks.

>>>

>>

>> If you're going to be fixing this, it would be good to fix the other problems

>> pointed out (stop with the #define of the flags).

>>

> It is OK, I will fix in the new version fix.

> 

> And to make the code more explicit, I have to choices of fixes:

> Choice 1:

> if (orders[i] > 4)

> 	gfp_flags = high_order_gfp_flags;

> else

> 	gfp_flags = low_order_gfp_flags;

> Choice 2:

> gfp_flags = (orders[i] > 4) ? high_order_gfp_flags : low_order_gfp_flags;

> 


I prefer #1, but please make sure you are following the
suggestions in https://marc.info/?l=linux-kernel&m=151518104214191&w=2

> Any suggestion ?

> 

> 

> BTW, I found another problem related:

> Currently the order 4 and order 0 allocation flag haven't got the __GFP_NOWARN set,

> if the order 4 allocation failed but the allocation of order 0 success, it will print warning

> message which is useless.

> 

> Of course, this is not related to this fix, but this is what I have met when test this fix.

> 


Yes, go ahead and fix that in a separate patch too.

> Thanks

> Zengtao

> 


Thanks,
Laura
diff mbox series

Patch

diff --git a/drivers/staging/android/ion/ion_system_heap.c b/drivers/staging/android/ion/ion_system_heap.c
index 4dc5d7a..b6386be 100644
--- a/drivers/staging/android/ion/ion_system_heap.c
+++ b/drivers/staging/android/ion/ion_system_heap.c
@@ -298,10 +298,10 @@  static int ion_system_heap_create_pools(struct ion_page_pool **pools,
 					bool cached)
 {
 	int i;
-	gfp_t gfp_flags = low_order_gfp_flags;
 
 	for (i = 0; i < NUM_ORDERS; i++) {
 		struct ion_page_pool *pool;
+		gfp_t gfp_flags = low_order_gfp_flags;
 
 		if (orders[i] > 4)
 			gfp_flags = high_order_gfp_flags;