Re: IA-32 support patch: fcntl64 calls are broken

From: Arun Sharma <adsharma_at_unix-os.sc.intel.com>
Date: 2003-07-09 04:57:21
Arun Sharma wrote:
> 
> Currently, sys32_fcntl64() is broken, because it passes F_*64 commands 
> to sys_fcntl(), which it doesn't understand. The F_XXX64 commands need 
> to be converted to F_XXX before calling sys_fcntl().
> 
> We also eliminated a copy, because the 32 bit struct flock64 and the 64 
> bit struct flock seem to be identical.
> 

Turns out that the structures are not identical (even though the data types of all the members have the same size) due to alignment issues. So the copy can not be eliminated.

> This patch is relevant only to 2.4, as it has already been taken care of 
> in 2.5.

A new patch is attached.

	-Arun

--- linux/arch/ia64/ia32/sys_ia32.c-	Tue Jun 24 15:43:39 2003
+++ linux/arch/ia64/ia32/sys_ia32.c	Tue Jul  1 14:09:27 2003
@@ -3622,9 +3622,11 @@
 			return -EFAULT;
 		old_fs = get_fs();
 		set_fs(KERNEL_DS);
-		ret = sys_fcntl(fd, cmd, (unsigned long) &f);
+                ret = sys_fcntl(fd, (cmd == F_GETLK64) ? F_GETLK :
+                        ((cmd == F_SETLK64) ? F_SETLK : F_SETLKW),
+                        (unsigned long) &f);
 		set_fs(old_fs);
-		if (cmd == F_GETLK && ia32_put_flock(&f, arg))
+		if (cmd == F_GETLK64 && ia32_put_flock(&f, arg))
 			return -EFAULT;
 		break;
 


-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Tue Jul 8 14:58:17 2003

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:16 EST