diff --git a/drivers/char/ramoops.c b/drivers/char/ramoops.c
index d3d63be2cd37efc15c5b261ab10492ba8b01caf6..eeec5758f9c48e9386250a7b7a11a8e6ac30bc32 100644
--- a/drivers/char/ramoops.c
+++ b/drivers/char/ramoops.c
@@ -68,6 +68,11 @@ static void ramoops_do_dump(struct kmsg_dumper *dumper,
 	char *buf, *buf_orig;
 	struct timeval timestamp;
 
+	if (reason != KMSG_DUMP_OOPS &&
+	    reason != KMSG_DUMP_PANIC &&
+	    reason != KMSG_DUMP_KEXEC)
+		return;
+
 	/* Only dump oopses if dump_oops is set */
 	if (reason == KMSG_DUMP_OOPS && !dump_oops)
 		return;
diff --git a/drivers/mtd/mtdoops.c b/drivers/mtd/mtdoops.c
index 1ee72f3f0512591d1ffd535f22aa2ac7dcb73941..c948150079bebe879316657f9bbc69791913dc1a 100644
--- a/drivers/mtd/mtdoops.c
+++ b/drivers/mtd/mtdoops.c
@@ -307,6 +307,11 @@ static void mtdoops_do_dump(struct kmsg_dumper *dumper,
 	unsigned long l1_cpy, l2_cpy;
 	char *dst;
 
+	if (reason != KMSG_DUMP_OOPS &&
+	    reason != KMSG_DUMP_PANIC &&
+	    reason != KMSG_DUMP_KEXEC)
+		return;
+
 	/* Only dump oopses if dump_oops is set */
 	if (reason == KMSG_DUMP_OOPS && !dump_oops)
 		return;