diff options
Diffstat (limited to 'target/linux/pxa/patches-2.6.21/034-ramfs-mode-support.patch')
-rw-r--r-- | target/linux/pxa/patches-2.6.21/034-ramfs-mode-support.patch | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/target/linux/pxa/patches-2.6.21/034-ramfs-mode-support.patch b/target/linux/pxa/patches-2.6.21/034-ramfs-mode-support.patch deleted file mode 100644 index 8154857..0000000 --- a/target/linux/pxa/patches-2.6.21/034-ramfs-mode-support.patch +++ /dev/null @@ -1,86 +0,0 @@ ---- a/fs/ramfs/inode.c -+++ b/fs/ramfs/inode.c -@@ -33,6 +33,7 @@ - #include <linux/smp_lock.h> - #include <linux/backing-dev.h> - #include <linux/ramfs.h> -+#include <linux/ctype.h> - - #include <asm/uaccess.h> - #include "internal.h" -@@ -160,10 +161,66 @@ static const struct super_operations ram - .drop_inode = generic_delete_inode, - }; - -+static int ramfs_parse_options(char *options, int *mode) -+{ -+ char *this_char, *value, *rest; -+ -+ while (options != NULL) { -+ this_char = options; -+ for (;;) { -+ /* -+ * NUL-terminate this option: unfortunately, -+ * mount options form a comma-separated list, -+ * but mpol's nodelist may also contain commas. -+ */ -+ options = strchr(options, ','); -+ if (options == NULL) -+ break; -+ options++; -+ if (!isdigit(*options)) { -+ options[-1] = '\0'; -+ break; -+ } -+ } -+ if (!*this_char) -+ continue; -+ if ((value = strchr(this_char,'=')) != NULL) { -+ *value++ = 0; -+ } else { -+ printk(KERN_ERR -+ "ramfs: No value for mount option '%s'\n", -+ this_char); -+ return 1; -+ } -+ -+ if (!strcmp(this_char,"mode")) { -+ if (!mode) -+ continue; -+ *mode = simple_strtoul(value,&rest,8); -+ if (*rest) -+ goto bad_val; -+ } else { -+ printk(KERN_ERR "ramfs: Bad mount option %s\n", -+ this_char); -+ return 1; -+ } -+ } -+ return 0; -+ -+bad_val: -+ printk(KERN_ERR "ramfs: Bad value '%s' for mount option '%s'\n", -+ value, this_char); -+ return 1; -+} -+ - static int ramfs_fill_super(struct super_block * sb, void * data, int silent) - { - struct inode * inode; - struct dentry * root; -+ int mode = 0755; -+ -+ if (ramfs_parse_options(data, &mode)) -+ return -EINVAL; - - sb->s_maxbytes = MAX_LFS_FILESIZE; - sb->s_blocksize = PAGE_CACHE_SIZE; -@@ -171,7 +228,7 @@ static int ramfs_fill_super(struct super - sb->s_magic = RAMFS_MAGIC; - sb->s_op = &ramfs_ops; - sb->s_time_gran = 1; -- inode = ramfs_get_inode(sb, S_IFDIR | 0755, 0); -+ inode = ramfs_get_inode(sb, S_IFDIR | mode, 0); - if (!inode) - return -ENOMEM; - |