summaryrefslogtreecommitdiff
path: root/memfd.c
diff options
context:
space:
mode:
authorKay Sievers <kay@vrfy.org>2013-05-10 04:53:52 +0200
committerKay Sievers <kay@vrfy.org>2013-05-10 04:53:52 +0200
commitb8e6ce49c7824928e26417b3d61c76c7415a8c46 (patch)
tree0d5cfc11f327a5c78544a1160b23f106d7db1035 /memfd.c
parente8322f15cdb9deb54b428ef5b1938ca65f77ce8c (diff)
downloadkdbus-bus-b8e6ce49c7824928e26417b3d61c76c7415a8c46.tar.gz
kdbus-bus-b8e6ce49c7824928e26417b3d61c76c7415a8c46.tar.bz2
kdbus-bus-b8e6ce49c7824928e26417b3d61c76c7415a8c46.zip
add KDBUS_CMD_MEMFD_SIZE_SET
Diffstat (limited to 'memfd.c')
-rw-r--r--memfd.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/memfd.c b/memfd.c
index 34e480c1656..87e00875c73 100644
--- a/memfd.c
+++ b/memfd.c
@@ -216,6 +216,20 @@ kdbus_memfd_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
break;
}
+ case KDBUS_CMD_MEMFD_SIZE_SET: {
+ int __user *addr = argp;
+ u64 size;
+
+ if (get_user(size, addr)) {
+ ret = -EFAULT;
+ goto exit;
+ }
+
+ if (size != i_size_read(file_inode(mf->fp)))
+ ret = vfs_truncate(&mf->fp->f_path, size);
+ break;
+ }
+
case KDBUS_CMD_MEMFD_SEAL_GET: {
int __user *addr = argp;