aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fuse.h
diff options
context:
space:
mode:
authorMiklos Szeredi <mszeredi@suse.cz>2010-12-07 14:16:56 -0500
committerMiklos Szeredi <mszeredi@suse.cz>2010-12-07 14:16:56 -0500
commit1baa26b2be92fe9917e2f7ef46d423b5dfa4da71 (patch)
tree1b4f24c149a01e74c17cb0c290952dd09778ca1d /include/linux/fuse.h
parent02c048b919455aaa38628563cdcc2e691c8a9f53 (diff)
fuse: fix ioctl ABI
In kernel ABI version 7.16 and later FUSE_IOCTL_RETRY reply from a unrestricted IOCTL request shall return with an array of 'struct fuse_ioctl_iovec' instead of 'struct iovec'. This fixes the ABI ambiguity of 32bit vs. 64bit. Reported-by: "ccmail111" <ccmail111@yahoo.com> Signed-off-by: Miklos Szeredi <mszeredi@suse.cz> CC: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'include/linux/fuse.h')
-rw-r--r--include/linux/fuse.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/include/linux/fuse.h b/include/linux/fuse.h
index cf11881f4938..d464de53db43 100644
--- a/include/linux/fuse.h
+++ b/include/linux/fuse.h
@@ -44,6 +44,9 @@
44 * 44 *
45 * 7.16 45 * 7.16
46 * - add BATCH_FORGET request 46 * - add BATCH_FORGET request
47 * - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct
48 * fuse_ioctl_iovec' instead of ambiguous 'struct iovec'
49 * - add FUSE_IOCTL_32BIT flag
47 */ 50 */
48 51
49#ifndef _LINUX_FUSE_H 52#ifndef _LINUX_FUSE_H
@@ -203,12 +206,14 @@ struct fuse_file_lock {
203 * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine 206 * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine
204 * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed 207 * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed
205 * FUSE_IOCTL_RETRY: retry with new iovecs 208 * FUSE_IOCTL_RETRY: retry with new iovecs
209 * FUSE_IOCTL_32BIT: 32bit ioctl
206 * 210 *
207 * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs 211 * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs
208 */ 212 */
209#define FUSE_IOCTL_COMPAT (1 << 0) 213#define FUSE_IOCTL_COMPAT (1 << 0)
210#define FUSE_IOCTL_UNRESTRICTED (1 << 1) 214#define FUSE_IOCTL_UNRESTRICTED (1 << 1)
211#define FUSE_IOCTL_RETRY (1 << 2) 215#define FUSE_IOCTL_RETRY (1 << 2)
216#define FUSE_IOCTL_32BIT (1 << 3)
212 217
213#define FUSE_IOCTL_MAX_IOV 256 218#define FUSE_IOCTL_MAX_IOV 256
214 219
@@ -524,6 +529,11 @@ struct fuse_ioctl_in {
524 __u32 out_size; 529 __u32 out_size;
525}; 530};
526 531
532struct fuse_ioctl_iovec {
533 __u64 base;
534 __u64 len;
535};
536
527struct fuse_ioctl_out { 537struct fuse_ioctl_out {
528 __s32 result; 538 __s32 result;
529 __u32 flags; 539 __u32 flags;