diff -rpuN crash-4.0-3.21.org/defs.h crash-4.0-3.21/defs.h
--- crash-4.0-3.21.org/defs.h	2007-03-23 10:36:58.000000000 +0900
+++ crash-4.0-3.21/defs.h	2007-03-23 10:37:09.000000000 +0900
@@ -211,6 +211,7 @@ struct number_option {
 
 #define DISKDUMP_LOCAL      (0x1)
 #define KDUMP_CMPRS_LOCAL   (0x2)
+#define NOT_ACCESS_EXCLUDED (0x4)
 #define DISKDUMP_VALID()    (dd->flags & DISKDUMP_LOCAL)
 #define KDUMP_CMPRS_VALID() (dd->flags & KDUMP_CMPRS_LOCAL)
 
diff -rpuN crash-4.0-3.21.org/diskdump.c crash-4.0-3.21/diskdump.c
--- crash-4.0-3.21.org/diskdump.c	2007-03-23 10:36:58.000000000 +0900
+++ crash-4.0-3.21/diskdump.c	2007-03-23 10:38:30.000000000 +0900
@@ -134,6 +134,8 @@ static int read_dump_header(void)
 	} else if (!memcmp(header->signature, KDUMP_SIGNATURE,
 				sizeof(header->signature))) {
 		dd->flags |= KDUMP_CMPRS_LOCAL;
+		if (header->header_version >= 1)
+			dd->flags |= NOT_ACCESS_EXCLUDED;
 	} else {
 		if (CRASHDEBUG(1))
 			error(INFO, "diskdump: dump does not have panic dump header\n");
@@ -452,6 +454,10 @@ read_diskdump(int fd, void *bufptr, int 
 	if ((pfn >= dd->header->max_mapnr) || !page_is_ram(pfn))
 		return SEEK_ERROR;
 	if (!page_is_dumpable(pfn)) {
+		if (dd->flags & NOT_ACCESS_EXCLUDED) {
+			error(INFO, "diskdump: paddr(%lx) excluded from dump\n", paddr);
+			return SEEK_ERROR;
+		}
 		memset(bufptr, 0, cnt);
 		return cnt;
 	}
