2015-11-04 07:35:47

by yalin wang

[permalink] [raw]
Subject: [PATCH] mm: change tlb_finish_mmu() to be more simple

This patch remove unneeded *next temp variable,
make this function more simple to read.

Signed-off-by: yalin wang <[email protected]>
---
mm/memory.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 7f3b9f2..f0040ed 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -270,17 +270,16 @@ void tlb_flush_mmu(struct mmu_gather *tlb)
*/
void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
{
- struct mmu_gather_batch *batch, *next;
+ struct mmu_gather_batch *batch;

tlb_flush_mmu(tlb);

/* keep the page table cache within bounds */
check_pgt_cache();

- for (batch = tlb->local.next; batch; batch = next) {
- next = batch->next;
+ for (batch = tlb->local.next; batch; batch = batch->next)
free_pages((unsigned long)batch, 0);
- }
+
tlb->local.next = NULL;
}

--
1.9.1


2015-11-04 08:33:40

by Kirill A. Shutemov

[permalink] [raw]
Subject: Re: [PATCH] mm: change tlb_finish_mmu() to be more simple

On Wed, Nov 04, 2015 at 03:35:31PM +0800, yalin wang wrote:
> This patch remove unneeded *next temp variable,
> make this function more simple to read.
>
> Signed-off-by: yalin wang <[email protected]>
> ---
> mm/memory.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/mm/memory.c b/mm/memory.c
> index 7f3b9f2..f0040ed 100644
> --- a/mm/memory.c
> +++ b/mm/memory.c
> @@ -270,17 +270,16 @@ void tlb_flush_mmu(struct mmu_gather *tlb)
> */
> void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end)
> {
> - struct mmu_gather_batch *batch, *next;
> + struct mmu_gather_batch *batch;
>
> tlb_flush_mmu(tlb);
>
> /* keep the page table cache within bounds */
> check_pgt_cache();
>
> - for (batch = tlb->local.next; batch; batch = next) {
> - next = batch->next;
> + for (batch = tlb->local.next; batch; batch = batch->next)

Use after free? No, thanks.

> free_pages((unsigned long)batch, 0);
> - }
> +
> tlb->local.next = NULL;
> }
>
> --
> 1.9.1
>
> --
> To unsubscribe, send a message with 'unsubscribe linux-mm' in
> the body to [email protected]. For more info on Linux MM,
> see: http://www.linux-mm.org/ .
> Don't email: <a href=mailto:"[email protected]"> [email protected] </a>

--
Kirill A. Shutemov

2015-11-04 08:35:18

by Sergey Senozhatsky

[permalink] [raw]
Subject: Re: [PATCH] mm: change tlb_finish_mmu() to be more simple

On (11/04/15 15:35), yalin wang wrote:
[..]
>
> - for (batch = tlb->local.next; batch; batch = next) {
> - next = batch->next;
> + for (batch = tlb->local.next; batch; batch = batch->next)
> free_pages((unsigned long)batch, 0);

accessing `batch->next' after calling free_pages() on `batch'?

-ss

2015-11-04 08:46:38

by yalin wang

[permalink] [raw]
Subject: Re: [PATCH] mm: change tlb_finish_mmu() to be more simple


> On Nov 4, 2015, at 16:36, Sergey Senozhatsky <[email protected]> wrote:
>
> On (11/04/15 15:35), yalin wang wrote:
> [..]
>>
>> - for (batch = tlb->local.next; batch; batch = next) {
>> - next = batch->next;
>> + for (batch = tlb->local.next; batch; batch = batch->next)
>> free_pages((unsigned long)batch, 0);
>
> accessing `batch->next' after calling free_pages() on `batch'?
>
> -ss
oh, my mistake, my code is buggy here .

Thanks-