2019-02-01 07:05:26

by Xiaqing (A)

[permalink] [raw]
Subject: [PATCH] staging: android: ion: fix sys heap pool's gfp_flags

In the first loop, gfp_flags will be modified to high_order_gfp_flags,
and there will be no chance to change back to low_order_gfp_flags.

Fixes: e7f63771 ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")
Signed-off-by: Qing Xia <[email protected]>
---
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 0383f75..20f2103 100644
--- a/drivers/staging/android/ion/ion_system_heap.c
+++ b/drivers/staging/android/ion/ion_system_heap.c
@@ -223,10 +223,10 @@ static void ion_system_heap_destroy_pools(struct ion_page_pool **pools)
static int ion_system_heap_create_pools(struct ion_page_pool **pools)
{
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;
--
2.7.3



2019-02-01 07:56:51

by Chen Feng

[permalink] [raw]
Subject: Re: [PATCH] staging: android: ion: fix sys heap pool's gfp_flags

Thanks.

On 2019/2/1 14:59, Qing Xia wrote:
> In the first loop, gfp_flags will be modified to high_order_gfp_flags,
> and there will be no chance to change back to low_order_gfp_flags.
>
> Fixes: e7f63771 ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")
> Signed-off-by: Qing Xia <[email protected]>
> ---
> 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 0383f75..20f2103 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -223,10 +223,10 @@ static void ion_system_heap_destroy_pools(struct ion_page_pool **pools)
> static int ion_system_heap_create_pools(struct ion_page_pool **pools)
> {
> 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;
>

--
Cheers,
- Feng


2019-02-01 08:17:19

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] staging: android: ion: fix sys heap pool's gfp_flags

On Fri, Feb 01, 2019 at 02:59:46PM +0800, Qing Xia wrote:
> In the first loop, gfp_flags will be modified to high_order_gfp_flags,
> and there will be no chance to change back to low_order_gfp_flags.
>
> Fixes: e7f63771 ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")

Huh... Presumably you found this bug just by reading the code. I
wonder how it affects runtime?

regards,
dan carpenter


2019-02-01 08:32:50

by Xiaqing (A)

[permalink] [raw]
Subject: Re: [PATCH] staging: android: ion: fix sys heap pool's gfp_flags



On 2019/2/1 16:15, Dan Carpenter wrote:
> On Fri, Feb 01, 2019 at 02:59:46PM +0800, Qing Xia wrote:
>> In the first loop, gfp_flags will be modified to high_order_gfp_flags,
>> and there will be no chance to change back to low_order_gfp_flags.
>>
>> Fixes: e7f63771 ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")
>
> Huh... Presumably you found this bug just by reading the code. I
> wonder how it affects runtime?
>
The problem is that when I found that there was no page allocation failure warning
after the failure of the ion alloc in my test, and then I found the problem of gfp_flags.

regards,
Qing

> regards,
> dan carpenter
>
>
> .
>


2019-02-19 21:20:54

by Laura Abbott

[permalink] [raw]
Subject: Re: [PATCH] staging: android: ion: fix sys heap pool's gfp_flags

On 1/31/19 10:59 PM, Qing Xia wrote:
> In the first loop, gfp_flags will be modified to high_order_gfp_flags,
> and there will be no chance to change back to low_order_gfp_flags.
>
> Fixes: e7f63771 ("ION: Sys_heap: Add cached pool to spead up cached buffer alloc")
> Signed-off-by: Qing Xia <[email protected]>
> ---
> 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 0383f75..20f2103 100644
> --- a/drivers/staging/android/ion/ion_system_heap.c
> +++ b/drivers/staging/android/ion/ion_system_heap.c
> @@ -223,10 +223,10 @@ static void ion_system_heap_destroy_pools(struct ion_page_pool **pools)
> static int ion_system_heap_create_pools(struct ion_page_pool **pools)
> {
> 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;
>

Acked-by: Laura Abbott <[email protected]>