Re: [PATCH] slob:Use _safe funtion to iterate partially free list.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 4, 2010 at 6:16 PM, Johannes Weiner <hannes@xxxxxxxxxxx> wrote:
> On Sun, Jul 04, 2010 at 05:22:33PM +0800, Bob Liu wrote:
>> Since a list entry may be removed, so use list_for_each_entry_safe
>> instead of list_for_each_entry.
>>
>> Signed-off-by: Bob Liu <lliubbo@xxxxxxxxx>
>> ---
>>  mm/slob.c |    4 ++--
>>  1 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/mm/slob.c b/mm/slob.c
>> index 3f19a34..e2af18b 100644
>> --- a/mm/slob.c
>> +++ b/mm/slob.c
>> @@ -320,7 +320,7 @@ static void *slob_page_alloc(struct slob_page *sp, size_t size, int align)
>>   */
>>  static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
>>  {
>> -     struct slob_page *sp;
>> +     struct slob_page *sp, *tmp;
>>       struct list_head *prev;
>>       struct list_head *slob_list;
>>       slob_t *b = NULL;
>> @@ -335,7 +335,7 @@ static void *slob_alloc(size_t size, gfp_t gfp, int align, int node)
>>
>>       spin_lock_irqsave(&slob_lock, flags);
>>       /* Iterate through each partially free page, try to find room */
>> -     list_for_each_entry(sp, slob_list, list) {
>> +     list_for_each_entry_safe(sp, tmp, slob_list, list) {
>>  #ifdef CONFIG_NUMA
>
> sp's list head is only modified if an allocation was successful, but
> then the iteration stops as well.  So I see no reason for your patch.
> Did I overlook something?
>

Sorry, I am wrong. Please ignore this patch.
Thanks for your comment.

But It seems that the slob_list maybe have some member's next pointer NULL.
Because I triggered a NULL pointer access error.

And after I changed spin_lock_irqsave(&slob_lock, flags) before set slob_list.
This bug seems disappeared.

I will resend a patch, Please review.
Thanks!

-- 
Regards,
--Bob

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxxx  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]