This prepares for upcoming page->private checks in page freeing path.

Signed-off-by: Zi Yan <[email protected]>
Cc: Jason Xing <[email protected]>
Cc: Yushan Zhou <[email protected]>
Cc: "Masami Hiramatsu (Google)" <[email protected]>
---
 kernel/relay.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/kernel/relay.c b/kernel/relay.c
index 5c665b729132..d16f9966817f 100644
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -131,8 +131,10 @@ static void *relay_alloc_buf(struct rchan_buf *buf, size_t 
*size)
        return mem;
 
 depopulate:
-       for (j = 0; j < i; j++)
+       for (j = 0; j < i; j++) {
+               set_page_private(buf->page_array[i], 0);
                __free_page(buf->page_array[j]);
+       }
        relay_free_page_array(buf->page_array);
        return NULL;
 }
@@ -196,8 +198,10 @@ static void relay_destroy_buf(struct rchan_buf *buf)
 
        if (likely(buf->start)) {
                vunmap(buf->start);
-               for (i = 0; i < buf->page_count; i++)
+               for (i = 0; i < buf->page_count; i++) {
+                       set_page_private(buf->page_array[i], 0);
                        __free_page(buf->page_array[i]);
+               }
                relay_free_page_array(buf->page_array);
        }
        *per_cpu_ptr(chan->buf, buf->cpu) = NULL;
-- 
2.51.0

Reply via email to