On Fri, 03 Jul 2015 18:50:07 +0530, Pintu Kumar said: > This patch provides 2 things:
> 2. Enable shrink_all_memory API in kernel with new CONFIG_SHRINK_MEMORY.
> Currently, shrink_all_memory function is used only during hibernation.
> With the new config we can make use of this API for non-hibernation case
> also without disturbing the hibernation case.
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -3571,12 +3571,17 @@ unsigned long shrink_all_memory(unsigned long
> nr_to_reclaim)
> struct reclaim_state reclaim_state;
> struct scan_control sc = {
> .nr_to_reclaim = nr_to_reclaim,
> +#ifdef CONFIG_SHRINK_MEMORY
> + .gfp_mask = (GFP_HIGHUSER_MOVABLE | GFP_RECLAIM_MASK),
> + .hibernation_mode = 0,
> +#else
> .gfp_mask = GFP_HIGHUSER_MOVABLE,
> + .hibernation_mode = 1,
> +#endif
That looks like a bug just waiting to happen. What happens if we
call an actual hibernation mode in a SHRINK_MEMORY=y kernel, and it finds
an extra gfp mask bit set, and hibernation_mode set to an unexpected value?
pgp_A5y0K3LJM.pgp
Description: PGP signature

