summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/s390/char/vmur.c4
-rw-r--r--drivers/s390/char/vmur.h4
2 files changed, 6 insertions, 2 deletions
diff --git a/drivers/s390/char/vmur.c b/drivers/s390/char/vmur.c
index 27b8bf927415..04395c0f99d8 100644
--- a/drivers/s390/char/vmur.c
+++ b/drivers/s390/char/vmur.c
@@ -556,7 +556,9 @@ static int verify_device(struct urdev *urd)
rc = diag_read_next_file_info(&fcb, 0);
if (rc)
return rc;
-
+ /* if file is in hold status, we do not read it */
+ if (fcb.file_stat & (FLG_SYSTEM_HOLD | FLG_USER_HOLD))
+ return -EPERM;
/* open file on virtual reader */
buf = kmalloc(PAGE_SIZE, GFP_KERNEL);
if (!buf)
diff --git a/drivers/s390/char/vmur.h b/drivers/s390/char/vmur.h
index 16d0a4e38e40..522a9dfaa275 100644
--- a/drivers/s390/char/vmur.h
+++ b/drivers/s390/char/vmur.h
@@ -50,7 +50,9 @@ struct file_control_block {
char rest[200];
} __attribute__ ((packed));
-#define FLG_CP_DUMP 0x10
+#define FLG_SYSTEM_HOLD 0x04
+#define FLG_CP_DUMP 0x10
+#define FLG_USER_HOLD 0x20
/*
* A struct urdev is created for each ur device that is made available