]> git.karo-electronics.de Git - karo-tx-linux.git/commit
fuse: fix ioctl when server is 32bit
authorMiklos Szeredi <mszeredi@suse.cz>
Tue, 30 Nov 2010 15:39:27 +0000 (16:39 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 7 Jan 2011 21:58:13 +0000 (13:58 -0800)
commite60a1892cafbc6b8e5bc1ad11149f120ce2af6ea
tree784719ac2b77363ab3eea515ace36fde5dbaace6
parent47c9e56abf97ecbe079bcc50a07b5b49b98b1753
fuse: fix ioctl when server is 32bit

commit d9d318d39dd5cb686660504a3565aac453709ccc upstream.

If a 32bit CUSE server is run on 64bit this results in EIO being
returned to the caller.

The reason is that FUSE_IOCTL_RETRY reply was defined to use 'struct
iovec', which is different on 32bit and 64bit archs.

Work around this by looking at the size of the reply to determine
which struct was used.  This is only needed if CONFIG_COMPAT is
defined.

A more permanent fix for the interface will be to use the same struct
on both 32bit and 64bit.

Reported-by: "ccmail111" <ccmail111@yahoo.com>
Signed-off-by: Miklos Szeredi <mszeredi@suse.cz>
CC: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/fuse/file.c