Commit 803d0c8351b47b72b8b018457a33b342557b90a2

Authored by Cesar Eduardo Barros
Committed by Linus Torvalds
1 parent cc5d462f77

sys_swapon: use vzalloc() instead of vmalloc/memset

This patch series refactors the sys_swapon function.

sys_swapon is currently a very large function, with 313 lines (more than
12 25-line screens), which can make it a bit hard to read. This patch
series reduces this size by half, by extracting large chunks of related
code to new helper functions.

One of these chunks of code was nearly identical to the part of
sys_swapoff which is used in case of a failure return from
try_to_unuse(), so this patch series also makes both share the same
code.

As a side effect of all this refactoring, the compiled code gets a bit
smaller (from v1 of this patch series):

   text       data        bss        dec        hex    filename
  14012        944        276      15232       3b80    mm/swapfile.o.before
  13941        944        276      15161       3b39    mm/swapfile.o.after

This patch:

Use vzalloc() instead of vmalloc/memset.

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Tested-by: Eric B Munson <emunson@mgebm.net>
Acked-by: Eric B Munson <emunson@mgebm.net>
Reviewed-by: Pekka Enberg <penberg@kernel.org>
Reviewed-by: Jesper Juhl <jj@chaosbits.net>
Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Cc: Hugh Dickins <hughd@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 1 additions and 2 deletions Side-by-side Diff

... ... @@ -2047,13 +2047,12 @@
2047 2047 goto bad_swap;
2048 2048  
2049 2049 /* OK, set up the swap map and apply the bad block list */
2050   - swap_map = vmalloc(maxpages);
  2050 + swap_map = vzalloc(maxpages);
2051 2051 if (!swap_map) {
2052 2052 error = -ENOMEM;
2053 2053 goto bad_swap;
2054 2054 }
2055 2055  
2056   - memset(swap_map, 0, maxpages);
2057 2056 nr_good_pages = maxpages - 1; /* omit header page */
2058 2057  
2059 2058 for (i = 0; i < swap_header->info.nr_badpages; i++) {