|
@@ -989,13 +989,16 @@ void crash_kexec(struct pt_regs *regs)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-size_t crash_get_memory_size(void)
|
|
|
+ssize_t crash_get_memory_size(void)
|
|
|
{
|
|
|
- size_t size = 0;
|
|
|
+ ssize_t size = 0;
|
|
|
+
|
|
|
+ if (!mutex_trylock(&kexec_mutex))
|
|
|
+ return -EBUSY;
|
|
|
|
|
|
- mutex_lock(&kexec_mutex);
|
|
|
if (crashk_res.end != crashk_res.start)
|
|
|
size = resource_size(&crashk_res);
|
|
|
+
|
|
|
mutex_unlock(&kexec_mutex);
|
|
|
return size;
|
|
|
}
|
|
@@ -1016,7 +1019,8 @@ int crash_shrink_memory(unsigned long new_size)
|
|
|
unsigned long old_size;
|
|
|
struct resource *ram_res;
|
|
|
|
|
|
- mutex_lock(&kexec_mutex);
|
|
|
+ if (!mutex_trylock(&kexec_mutex))
|
|
|
+ return -EBUSY;
|
|
|
|
|
|
if (kexec_crash_image) {
|
|
|
ret = -ENOENT;
|