Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 586d232b authored by Mark Fasheh's avatar Mark Fasheh
Browse files

ocfs2: Implement compat_ioctl()



We need this to support 32 bit system calls on 64 bit kernels.

Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
parent 40caf5ea
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1853,6 +1853,9 @@ const struct file_operations ocfs2_fops = {
	.aio_read	= ocfs2_file_aio_read,
	.aio_write	= ocfs2_file_aio_write,
	.ioctl		= ocfs2_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl   = ocfs2_compat_ioctl,
#endif
	.splice_read	= ocfs2_file_splice_read,
	.splice_write	= ocfs2_file_splice_write,
};
@@ -1862,4 +1865,7 @@ const struct file_operations ocfs2_dops = {
	.readdir	= ocfs2_readdir,
	.fsync		= ocfs2_sync_file,
	.ioctl		= ocfs2_ioctl,
#ifdef CONFIG_COMPAT
	.compat_ioctl   = ocfs2_compat_ioctl,
#endif
};
+23 −0
Original line number Diff line number Diff line
@@ -134,3 +134,26 @@ int ocfs2_ioctl(struct inode * inode, struct file * filp,
	}
}

#ifdef CONFIG_COMPAT
long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg)
{
	struct inode *inode = file->f_path.dentry->d_inode;
	int ret;

	switch (cmd) {
	case OCFS2_IOC32_GETFLAGS:
		cmd = OCFS2_IOC_GETFLAGS;
		break;
	case OCFS2_IOC32_SETFLAGS:
		cmd = OCFS2_IOC_SETFLAGS;
		break;
	default:
		return -ENOIOCTLCMD;
	}

	lock_kernel();
	ret = ocfs2_ioctl(inode, file, cmd, arg);
	unlock_kernel();
	return ret;
}
#endif
+1 −0
Original line number Diff line number Diff line
@@ -12,5 +12,6 @@

int ocfs2_ioctl(struct inode * inode, struct file * filp,
	unsigned int cmd, unsigned long arg);
long ocfs2_compat_ioctl(struct file *file, unsigned cmd, unsigned long arg);

#endif /* OCFS2_IOCTL_H */
+2 −0
Original line number Diff line number Diff line
@@ -166,6 +166,8 @@
 */
#define OCFS2_IOC_GETFLAGS	_IOR('f', 1, long)
#define OCFS2_IOC_SETFLAGS	_IOW('f', 2, long)
#define OCFS2_IOC32_GETFLAGS	_IOR('f', 1, int)
#define OCFS2_IOC32_SETFLAGS	_IOW('f', 2, int)

/*
 * Journal Flags (ocfs2_dinode.id1.journal1.i_flags)