powerpc/fadump: re-register firmware-assisted dump if already registered
authorHari Bathini <hbathini@linux.ibm.com>
Fri, 14 Sep 2018 14:06:02 +0000 (19:36 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 19 Sep 2018 12:08:12 +0000 (22:08 +1000)
Firmware-Assisted Dump (FADump) needs to be registered again after any
memory hot add/remove operation to update the crash memory ranges. But
currently, the kernel returns '-EEXIST' if we try to register without
uregistering it first. This could expose the system to racing issues
while unregistering and registering FADump from userspace during udev
events. Spare the userspace of this and let it be taken care of in the
kernel space for a simpler interface.

Since this change, running 'echo 1 > /sys/kernel/fadump_registered'
would result in re-regisering (unregistering and registering) FADump,
if it was already registered.

Signed-off-by: Hari Bathini <hbathini@linux.ibm.com>
Acked-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/kernel/fadump.c

index a711d22339ea76d75cc09a1a9e215764147eb983..761b28b1427d894d3838841aaf16810c4e7765de 100644 (file)
@@ -1444,8 +1444,8 @@ static ssize_t fadump_register_store(struct kobject *kobj,
                break;
        case 1:
                if (fw_dump.dump_registered == 1) {
-                       ret = -EEXIST;
-                       goto unlock_out;
+                       /* Un-register Firmware-assisted dump */
+                       fadump_unregister_dump(&fdm);
                }
                /* Register Firmware-assisted dump */
                ret = register_fadump();