[Devel] [PATCH] fs/fuse kio: deny unavailable ioctl's in kio
Pavel Butsykin
pbutsykin at virtuozzo.com
Tue Dec 25 18:11:29 MSK 2018
There are some ioctl's that were made to service the kio module, and they
should not be available to user app.
Also there are two ioctls PCS_IOC_NOCSUMONREAD and PCS_IOC_NOWRITEDELAY that
must be handled in kio, otherwise they are meaningless. So let's return
-EOPNOTSUPP unless we implement them in kio.
#VSTOR-19332
Signed-off-by: Pavel Butsykin <pbutsykin at virtuozzo.com>
---
fs/fuse/kio/pcs/pcs_fuse_kdirect.c | 19 ++++++++++++++++---
fs/fuse/kio/pcs/pcs_ioctl.h | 5 +++++
2 files changed, 21 insertions(+), 3 deletions(-)
diff --git a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
index 89866370a341..13acd2e172f3 100644
--- a/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
+++ b/fs/fuse/kio/pcs/pcs_fuse_kdirect.c
@@ -1110,9 +1110,22 @@ static int pcs_kio_classify_req(struct fuse_conn *fc, struct fuse_req *req, bool
case FUSE_IOCTL: {
struct fuse_ioctl_in const *inarg = req->in.args[0].value;
- if (inarg->cmd != FS_IOC_FIEMAP)
- return 1;
-
+ switch (inarg->cmd) {
+ case FS_IOC_FIEMAP:
+ break;
+ case PCS_IOC_NOCSUMONREAD:
+ case PCS_IOC_NOWRITEDELAY:
+ return -EOPNOTSUPP;
+ case PCS_IOC_INIT_KDIRECT:
+ case PCS_IOC_CSCONN:
+ case PCS_IOC_GETFILEINFO:
+ case PCS_IOC_KDIRECT_CLAIM:
+ case PCS_IOC_KDIRECT_RELEASE:
+ case PCS_IOC_GETMAP:
+ return -EPERM;
+ default:
+ return 1;
+ }
break;
}
default:
diff --git a/fs/fuse/kio/pcs/pcs_ioctl.h b/fs/fuse/kio/pcs/pcs_ioctl.h
index 5cf40e35f881..d6c02ae66977 100644
--- a/fs/fuse/kio/pcs/pcs_ioctl.h
+++ b/fs/fuse/kio/pcs/pcs_ioctl.h
@@ -78,6 +78,11 @@ struct pcs_ioc_csconn
#define PCS_IOC_CS_REOPEN (PCS_IOC_CS_OPEN|PCS_IOC_CS_CLOSE)
};
+#define PCS_IOC_NOCSUMONREAD _IOW('V',3,u32)
+# define PCS_IOC_NOCSUMONREAD_DATA 1
+# define PCS_IOC_NOCSUMONREAD_METADATA 2
+#define PCS_IOC_NOWRITEDELAY _IOW('V',4,u32)
+
#define PCS_IOC_INIT_KDIRECT _IOR('V',32, struct pcs_ioc_init_kdirect)
#define PCS_IOC_CSCONN _IOR('V',33, struct pcs_ioc_csconn)
#define PCS_IOC_GETFILEINFO _IOR('V',34, struct pcs_ioc_fileinfo)
--
2.15.1
More information about the Devel
mailing list