From 0bae9a1bffe34170569ce37bd7effbdfe0603fa1 Mon Sep 17 00:00:00 2001 From: Zdenek Kabelac Date: Sat, 30 Jun 2018 10:35:08 +0200 Subject: [PATCH] locking: memory locking ONLY with suspending reason It's important to lock memory beforo running SUSPEND ioctl - but whole lvm preload runs in memory unlocked environment - as in this phase memory allocation is allowed and is meant to happen. Once all targets are preload and ready (confirmed from all targets) we start suspending tree - and here the memory allocation (or i.e. opening files) is no longer allowed - as it may cause kernel deadlock. --- lib/mm/memlock.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/mm/memlock.c b/lib/mm/memlock.c index 65f13c4bf..9ebf96d03 100644 --- a/lib/mm/memlock.c +++ b/lib/mm/memlock.c @@ -604,8 +604,7 @@ static void _unlock_mem_if_possible(struct cmd_context *cmd) void critical_section_inc(struct cmd_context *cmd, const char *reason) { if (!_critical_section && - ((strcmp(reason, "suspending") == 0) || - (strcmp(reason, "locking for suspend") == 0))) { + (strcmp(reason, "suspending") == 0)) { /* * Profiles are loaded on-demand so make sure that before * entering the critical section all needed profiles are