diff mbox

Btrfs: avoid build warning on 32-bit

Message ID 4264141.3m7C7LgF5c@wuerfel (mailing list archive)
State Superseded
Headers show

Commit Message

Arnd Bergmann Jan. 13, 2015, 2:09 p.m. UTC
A recent change introduced a type cast from a private 64-bit
value to a pointer, which works fine on 64-bit architectures,
but not on 32-bit ones, where it produces a harmless compiler
warning:

fs/btrfs/extent_io.c: In function 'btrfs_free_io_failure_record':
fs/btrfs/extent_io.c:2193:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]

This adds an intermediate cast to 'unsigned long', which tells
the compiler to ignore the type mismatch.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Fixes: f612496bca664 ("Btrfs: cleanup the read failure record after write
			or when the inode is freeing")


--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

David Sterba Jan. 14, 2015, 12:16 a.m. UTC | #1
On Tue, Jan 13, 2015 at 03:09:03PM +0100, Arnd Bergmann wrote:
> A recent change introduced a type cast from a private 64-bit
> value to a pointer, which works fine on 64-bit architectures,
> but not on 32-bit ones, where it produces a harmless compiler
> warning:
> 
> fs/btrfs/extent_io.c: In function 'btrfs_free_io_failure_record':
> fs/btrfs/extent_io.c:2193:13: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
> 
> This adds an intermediate cast to 'unsigned long', which tells
> the compiler to ignore the type mismatch.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> Fixes: f612496bca664 ("Btrfs: cleanup the read failure record after write
> 			or when the inode is freeing")

Already reported, but not merged

https://patchwork.kernel.org/patch/5541281/
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Chris Mason Jan. 14, 2015, 1:12 a.m. UTC | #2
On Tue, Jan 13, 2015 at 7:16 PM, David Sterba <dsterba@suse.cz> wrote:
> On Tue, Jan 13, 2015 at 03:09:03PM +0100, Arnd Bergmann wrote:
>>  A recent change introduced a type cast from a private 64-bit
>>  value to a pointer, which works fine on 64-bit architectures,
>>  but not on 32-bit ones, where it produces a harmless compiler
>>  warning:
>> 
>>  fs/btrfs/extent_io.c: In function 'btrfs_free_io_failure_record':
>>  fs/btrfs/extent_io.c:2193:13: warning: cast to pointer from integer 
>> of different size [-Wint-to-pointer-cast]
>> 
>>  This adds an intermediate cast to 'unsigned long', which tells
>>  the compiler to ignore the type mismatch.
>> 
>>  Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>>  Fixes: f612496bca664 ("Btrfs: cleanup the read failure record after 
>> write
>>  			or when the inode is freeing")
> 
> Already reported, but not merged

I'll take the original cast one for now and we can do the larger 
cleanup for the next merge window.

-chris

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c
index 4ebabd237153..790dbae3343c 100644
--- a/fs/btrfs/extent_io.c
+++ b/fs/btrfs/extent_io.c
@@ -2190,7 +2190,7 @@  void btrfs_free_io_failure_record(struct inode *inode, u64 start, u64 end)
 
 		next = next_state(state);
 
-		failrec = (struct io_failure_record *)state->private;
+		failrec = (struct io_failure_record *)(unsigned long)state->private;
 		free_extent_state(state);
 		kfree(failrec);