diff options
-rw-r--r-- | drivers/s390/char/vmur.c | 4 | ||||
-rw-r--r-- | drivers/s390/char/vmur.h | 4 |
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 |