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

Commit 83b942bd authored by Tsuneo Yoshioka's avatar Tsuneo Yoshioka Committed by Linus Torvalds
Browse files

[PATCH] x86-64: Fix 32bit sendfile



If we use 64bit kernel on ia64/x86_64/s390 architecture, and we run
32bit binary on 32bit compatibility mode, sendfile system call seems be
not set offset argument.

This is because sendfile's return value is not zero but the code regards
the result by return value is zero or not.

This problem will be affect to ia64/x86_64/s390 and not affect to other
architecture does not affect other architecture (mips/parisc/ppc64/sparc64).

Signed-off-by: default avatarAndi Kleen <ak@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9acf23c4
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -2327,7 +2327,7 @@ sys32_sendfile (int out_fd, int in_fd, int __user *offset, unsigned int count)
	ret = sys_sendfile(out_fd, in_fd, offset ? (off_t __user *) &of : NULL, count);
	set_fs(old_fs);

	if (!ret && offset && put_user(of, offset))
	if (offset && put_user(of, offset))
		return -EFAULT;

	return ret;
+1 −1
Original line number Diff line number Diff line
@@ -678,7 +678,7 @@ asmlinkage long sys32_sendfile(int out_fd, int in_fd, compat_off_t *offset, size
	ret = sys_sendfile(out_fd, in_fd, offset ? &of : NULL, count);
	set_fs(old_fs);
	
	if (!ret && offset && put_user(of, offset))
	if (offset && put_user(of, offset))
		return -EFAULT;
		
	return ret;
+1 −1
Original line number Diff line number Diff line
@@ -751,7 +751,7 @@ sys32_sendfile(int out_fd, int in_fd, compat_off_t __user *offset, s32 count)
	ret = sys_sendfile(out_fd, in_fd, offset ? &of : NULL, count);
	set_fs(old_fs);
	
	if (!ret && offset && put_user(of, offset))
	if (offset && put_user(of, offset))
		return -EFAULT;
		
	return ret;