Lennert Buytenhek
94a3f78566
[ARM] 4837/1: make __get_unaligned_*() return unsigned types
...
Eric Sandeen tracked an XFS on ARM corruption bug down to a function
under fs/xfs/ involving some get_unaligned() calls on u64 pointers.
As it turns out, calling ARM's get_unaligned() on a u64 pointer
pointing to the following byte sequence:
80 81 82 83 84 85 86 87
would return ffffffff83828180 (LE mode.) This turns out to be
because of implicit u8 -> int promotion in ARM's implementation of
various helpers for get_unaligned(), causing them to accidentally
return signed instead of unsigned values, which in turn caused the
subsequent casts to unsigned long long in __get_unaligned_8_[bl]e()
to sign-extend the lower words.
Fix by casting the return values of __get_unaligned_[24]_[bl]e()
to unsigned int.
Cc: Eric Sandeen <sandeen@sandeen.net>
Cc: Rabeeh Khoury <rabeeh@marvell.com>
Cc: Nicolas Pitre <nico@marvell.com>
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
2008-02-29 22:46:48 +00:00
..
2007-10-19 23:21:04 +02:00
2008-02-04 13:16:39 +00:00
2007-05-12 15:25:50 +01:00
2007-02-17 15:04:29 +00:00
2007-10-31 15:21:52 +00:00
2007-05-12 15:25:50 +01:00
2007-05-12 15:25:50 +01:00
2008-01-26 14:37:31 +00:00
2007-02-17 15:04:29 +00:00
2007-10-16 09:43:21 -07:00
2007-05-16 15:35:26 +01:00
2008-02-06 10:12:18 -07:00
2007-07-20 09:35:35 +01:00
2007-07-13 08:06:19 -07:00
2008-02-04 15:29:53 -08:00
2007-11-29 20:56:57 +00:00
2007-02-17 15:04:29 +00:00
2008-01-26 14:38:48 +00:00
2007-02-17 15:04:29 +00:00
2007-03-08 13:33:57 +00:00
2008-01-26 14:39:14 +00:00
2007-07-28 20:52:55 +01:00
2007-05-03 20:22:49 +01:00
2007-10-12 23:43:41 +01:00
2008-02-08 10:38:01 -08:00
2008-02-08 11:52:23 -05:00
2007-02-17 15:04:29 +00:00
2008-02-23 17:12:14 -08:00
2008-02-04 17:52:28 +00:00
2007-10-12 23:43:11 +01:00
2007-07-22 17:06:04 +01:00
2008-02-06 10:41:17 -08:00
2007-10-12 23:43:21 +01:00
2007-02-17 15:04:29 +00:00
2008-02-03 14:59:11 +02:00
2008-02-06 10:12:18 -07:00
2008-02-21 21:13:35 +00:00
2007-10-31 15:21:33 +00:00
2008-01-28 13:20:51 +00:00
2007-02-17 11:26:41 +00:00
2008-02-08 09:22:30 -08:00
2008-02-08 09:22:29 -08:00
2006-06-25 12:01:48 +01:00
2007-05-08 11:15:20 -07:00
2005-09-07 16:57:21 -07:00
2008-01-28 23:58:27 -05:00
2006-12-07 22:38:09 +00:00
2006-06-28 17:59:45 +01:00
2006-06-19 15:35:36 +01:00
2006-01-08 20:13:39 -08:00
2008-01-26 15:03:38 +00:00
2007-02-06 16:46:46 +00:00
2006-12-07 16:06:45 +00:00
2006-12-13 14:34:43 +00:00
2006-12-13 14:34:43 +00:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-03-21 22:06:07 +00:00
2007-02-12 10:28:24 +00:00
2007-04-25 22:23:33 -07:00
2007-10-23 12:37:59 +02:00
2006-04-26 12:56:16 +01:00
2007-02-08 14:49:18 +00:00
2006-07-01 22:30:09 +01:00
2007-05-11 17:19:02 +01:00
2008-02-07 08:42:30 -08:00
2005-07-26 14:35:41 -07:00
2005-04-16 15:20:36 -07:00
2007-07-17 10:23:11 -07:00
2005-09-07 16:57:38 -07:00
2005-04-16 15:20:36 -07:00
2007-10-31 15:21:42 +00:00
2007-10-17 08:42:55 -07:00
2008-01-26 14:41:28 +00:00
2006-01-08 20:13:39 -08:00
2007-05-08 22:55:53 +01:00
2007-02-12 09:48:34 -08:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2006-10-08 12:32:36 -07:00
2007-07-12 16:20:15 +01:00
2007-10-20 00:32:32 +02:00
2007-10-14 12:41:52 -07:00
2006-01-10 08:01:34 -08:00
2007-05-28 23:07:34 +01:00
2005-04-16 15:20:36 -07:00
2006-10-06 10:59:54 -07:00
2006-12-30 17:05:07 +00:00
2006-09-20 14:58:35 +01:00
2007-07-12 16:20:15 +01:00
2007-05-08 11:15:04 -07:00
2008-02-04 13:21:03 +00:00
2005-04-16 15:20:36 -07:00
2008-01-26 15:25:17 +00:00
2006-04-26 12:56:16 +01:00
2005-04-16 15:20:36 -07:00
2007-06-10 12:22:20 +01:00
2005-04-16 15:20:36 -07:00
2005-10-18 07:51:34 +01:00
2005-04-16 15:20:36 -07:00
2006-11-30 22:52:28 +00:00
2006-02-15 15:32:22 -08:00
2007-05-17 10:19:23 +01:00
2007-05-17 10:19:23 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-07-07 16:50:16 +02:00
2008-02-08 09:22:31 -08:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-06-28 17:59:45 +01:00
2008-02-08 09:22:42 -08:00
2006-03-21 22:05:45 +00:00
2005-04-16 15:20:36 -07:00
2007-10-15 18:53:59 +01:00
2005-04-16 15:20:36 -07:00
2008-02-08 09:22:42 -08:00
2006-06-29 18:24:21 +01:00
2007-08-04 22:13:43 +01:00
2007-11-08 10:07:14 +00:00
2007-05-11 08:29:34 -07:00
2008-02-08 09:22:34 -08:00
2008-01-26 15:03:38 +00:00
2008-02-08 09:22:29 -08:00
2006-11-30 12:24:46 +00:00
2007-07-12 16:20:52 +01:00
2005-04-16 15:20:36 -07:00
2006-03-27 08:44:50 -08:00
2007-10-22 21:20:03 +02:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-10-17 08:42:47 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2007-05-30 13:15:06 +01:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2005-04-16 15:20:36 -07:00
2006-07-02 17:29:22 -07:00
2007-05-11 21:07:58 +01:00
2008-02-04 17:52:19 +00:00
2008-01-31 19:27:19 -08:00
2007-04-25 22:24:04 -07:00
2005-09-10 10:06:21 -07:00
2007-02-11 10:51:34 -08:00
2006-01-14 16:32:12 +00:00
2006-01-14 16:35:03 +00:00
2005-04-25 23:40:05 +01:00
2005-04-16 15:20:36 -07:00
2008-02-07 08:42:31 -08:00
2007-05-28 23:07:34 +01:00
2007-05-28 23:07:34 +01:00
2005-04-16 15:20:36 -07:00
2007-07-31 15:39:38 -07:00
2006-06-22 10:24:18 +01:00
2005-04-16 15:20:36 -07:00
2008-02-05 09:44:18 -08:00
2007-10-19 11:53:34 -07:00
2005-04-16 15:20:36 -07:00
2008-01-26 15:25:17 +00:00
2007-10-17 08:42:53 -07:00
2007-02-17 20:11:19 +01:00
2006-06-28 17:54:59 +01:00
2008-02-29 22:46:48 +00:00
2007-10-12 23:43:31 +01:00
2008-02-07 08:42:30 -08:00
2008-01-26 14:41:28 +00:00
2008-01-26 14:41:28 +00:00
2006-06-22 15:05:58 -07:00
2005-04-16 15:20:36 -07:00