cramfs: Error message about endianess
PATCH 1/1 cramfs: Error message about endianess
The README file in the cramfs subdirectory says:
"All data is currently in host-endian format; neither mkcramfs nor the kernel ever do swabbing."
If somebody tries to mount a cramfs with the wrong endianess, cramfs only complains about a wrong magic but doesn't inform the user that only the endianess isn't right.
The following patch adds an error message to the cramfs sources. If a user tries to mount a cramfs with the wrong endianess using the patched sources, cramfs will display the message "cramfs: wrong endianess".
I'm currently not subscribed to the list, so please CC me for any comments.
Tested on an i386 box. Diffed against Linus' git-tree.
Signed-off-by Andi Drebes <[email protected]>
---
fs/cramfs/inode.c +10 -1
@@ -258,12 +258,21 @@ static int cramfs_fill_super(struct super_block *sb, void *data, int silent)/* Do sanity checks on the superblock */ if (super.magic !=CRAMFS_MAGIC ) { +/* check for wrong endianess */ +if (super.magic ==CRAMFS_MAGIC_WEND ) { +if (!silent) +printk (KERN_ERR "cramfs: wrong endianess\n" ); + goto out; + } +/* check at 512 byte offset */ mutex_lock (&read_mutex);memcpy (&super,cramfs_read (sb,512 ,sizeof (super)),sizeof (super));mutex_unlock (&read_mutex);if (super.magic !=CRAMFS_MAGIC ) { -if (!silent) +if (super.magic ==CRAMFS_MAGIC_WEND && !silent) +printk (KERN_ERR "cramfs: wrong endianess\n" ); +else if (!silent)printk (KERN_ERR "cramfs: wrong magic\n" ); goto out; }
include/linux/cramfs_fs.h +1 -0
@@ -4,6 +4,7 @@#include <linux/types.h> #define CRAMFS_MAGIC 0x28cd3d45/* some random number */ +#define CRAMFS_MAGIC_WEND 0x453dcd28/* magic number with the wrong endianess */ #define CRAMFS_SIGNATURE "Compressed ROMFS"/*