ANDROID: sdcardfs: Switch strcasecmp for internal call
[firefly-linux-kernel-4.4.55.git] / fs / sdcardfs / inode.c
index cb0588691a0ff574116e686b7d1b4f909eaa6aa2..68e615045616e33f0f2c637e1f3ace655bb9998b 100644 (file)
@@ -66,7 +66,7 @@ static int sdcardfs_create(struct inode *dir, struct dentry *dentry,
        struct fs_struct *saved_fs;
        struct fs_struct *copied_fs;
 
-       if(!check_caller_access_to_name(dir, dentry->d_name.name)) {
+       if(!check_caller_access_to_name(dir, &dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  dentry: %s, task:%s\n",
                                                 __func__, dentry->d_name.name, current->comm);
@@ -168,7 +168,7 @@ static int sdcardfs_unlink(struct inode *dir, struct dentry *dentry)
        struct path lower_path;
        const struct cred *saved_cred = NULL;
 
-       if(!check_caller_access_to_name(dir, dentry->d_name.name)) {
+       if(!check_caller_access_to_name(dir, &dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  dentry: %s, task:%s\n",
                                                 __func__, dentry->d_name.name, current->comm);
@@ -275,8 +275,10 @@ static int sdcardfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
        int touch_err = 0;
        struct fs_struct *saved_fs;
        struct fs_struct *copied_fs;
+       struct qstr q_obb = QSTR_LITERAL("obb");
+       struct qstr q_data = QSTR_LITERAL("data");
 
-       if(!check_caller_access_to_name(dir, dentry->d_name.name)) {
+       if(!check_caller_access_to_name(dir, &dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  dentry: %s, task:%s\n",
                                                 __func__, dentry->d_name.name, current->comm);
@@ -351,13 +353,13 @@ static int sdcardfs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode
        set_nlink(dir, sdcardfs_lower_inode(dir)->i_nlink);
        fixup_lower_ownership(dentry, dentry->d_name.name);
        unlock_dir(lower_parent_dentry);
-       if ((!sbi->options.multiuser) && (!strcasecmp(dentry->d_name.name, "obb"))
+       if ((!sbi->options.multiuser) && (qstr_case_eq(&dentry->d_name, &q_obb))
                && (pi->perm == PERM_ANDROID) && (pi->userid == 0))
                make_nomedia_in_obb = 1;
 
        /* When creating /Android/data and /Android/obb, mark them as .nomedia */
        if (make_nomedia_in_obb ||
-               ((pi->perm == PERM_ANDROID) && (!strcasecmp(dentry->d_name.name, "data")))) {
+               ((pi->perm == PERM_ANDROID) && (qstr_case_eq(&dentry->d_name, &q_data)))) {
                REVERT_CRED(saved_cred);
                OVERRIDE_CRED(SDCARDFS_SB(dir->i_sb), saved_cred, SDCARDFS_I(d_inode(dentry)));
                set_fs_pwd(current->fs, &lower_path);
@@ -388,7 +390,7 @@ static int sdcardfs_rmdir(struct inode *dir, struct dentry *dentry)
        struct path lower_path;
        const struct cred *saved_cred = NULL;
 
-       if(!check_caller_access_to_name(dir, dentry->d_name.name)) {
+       if(!check_caller_access_to_name(dir, &dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  dentry: %s, task:%s\n",
                                                 __func__, dentry->d_name.name, current->comm);
@@ -476,8 +478,8 @@ static int sdcardfs_rename(struct inode *old_dir, struct dentry *old_dentry,
        struct path lower_old_path, lower_new_path;
        const struct cred *saved_cred = NULL;
 
-       if(!check_caller_access_to_name(old_dir, old_dentry->d_name.name) ||
-               !check_caller_access_to_name(new_dir, new_dentry->d_name.name)) {
+       if(!check_caller_access_to_name(old_dir, &old_dentry->d_name) ||
+               !check_caller_access_to_name(new_dir, &new_dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  new_dentry: %s, task:%s\n",
                                                 __func__, new_dentry->d_name.name, current->comm);
@@ -523,7 +525,7 @@ static int sdcardfs_rename(struct inode *old_dir, struct dentry *old_dentry,
                sdcardfs_copy_and_fix_attrs(old_dir, d_inode(lower_old_dir_dentry));
                fsstack_copy_inode_size(old_dir, d_inode(lower_old_dir_dentry));
        }
-       get_derived_permission_new(new_dentry->d_parent, old_dentry, new_dentry->d_name.name);
+       get_derived_permission_new(new_dentry->d_parent, old_dentry, &new_dentry->d_name);
        fixup_tmp_permissions(d_inode(old_dentry));
        fixup_lower_ownership(old_dentry, new_dentry->d_name.name);
        drop_recursive(old_dentry); /* Can't fixup ownership recursively :( */
@@ -743,7 +745,7 @@ static int sdcardfs_setattr(struct vfsmount *mnt, struct dentry *dentry, struct
        if (!err) {
                /* check the Android group ID */
                parent = dget_parent(dentry);
-               if(!check_caller_access_to_name(d_inode(parent), dentry->d_name.name)) {
+               if(!check_caller_access_to_name(d_inode(parent), &dentry->d_name)) {
                        printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                         "  dentry: %s, task:%s\n",
                                                         __func__, dentry->d_name.name, current->comm);
@@ -861,7 +863,7 @@ static int sdcardfs_getattr(struct vfsmount *mnt, struct dentry *dentry,
        int err;
 
        parent = dget_parent(dentry);
-       if(!check_caller_access_to_name(d_inode(parent), dentry->d_name.name)) {
+       if(!check_caller_access_to_name(d_inode(parent), &dentry->d_name)) {
                printk(KERN_INFO "%s: need to check the caller's gid in packages.list\n"
                                                 "  dentry: %s, task:%s\n",
                                                 __func__, dentry->d_name.name, current->comm);