From: Hailong liu <[email protected]>

The trace point *trace_mm_page_alloc_zone_locked()* in __rmqueue() does not
currently cover all branches. Add the missing tracepoint and check the page
before do that.

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

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 7a2c89b21115..8cfa58bcf21a 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2871,7 +2871,7 @@ __rmqueue(struct zone *zone, unsigned int order, int 
migratetype,
            zone_page_state(zone, NR_FREE_PAGES) / 2) {
                page = __rmqueue_cma_fallback(zone, order);
                if (page)
-                       return page;
+                       goto out;
        }
 #endif
 retry:
@@ -2884,8 +2884,9 @@ __rmqueue(struct zone *zone, unsigned int order, int 
migratetype,
                                                                alloc_flags))
                        goto retry;
        }
-
-       trace_mm_page_alloc_zone_locked(page, order, migratetype);
+out:
+       if (page)
+               trace_mm_page_alloc_zone_locked(page, order, migratetype);
        return page;
 }
 
-- 
2.17.1


Reply via email to