sparse_buffer_fini(..) takes the following actions even though the value of sparsemap_buf is NULL, 1. calculate size of sparsemap buffer (which is meaningless). 2. set sparsemap_buf variable to NULL (although it is already NULL). These steps are unnecessary if the variable, sparsemap_buf is NULL. Refactor the function to return right away if the variable is NULL. Hence, it doesn't need to take further actions. Signed-off-by: Leesoo Ahn <lsahn@xxxxxxxxxx> --- mm/sparse.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/sparse.c b/mm/sparse.c index e4b830091d13..091e4bc2f72c 100644 --- a/mm/sparse.c +++ b/mm/sparse.c @@ -469,9 +469,13 @@ static void __init sparse_buffer_init(unsigned long size, int nid) static void __init sparse_buffer_fini(void) { - unsigned long size = sparsemap_buf_end - sparsemap_buf; + unsigned long size; - if (sparsemap_buf && size > 0) + if (!sparsemap_buf) + return; + + size = sparsemap_buf_end - sparsemap_buf; + if (size > 0) sparse_buffer_free(size); sparsemap_buf = NULL; } -- 2.34.1