Whamcloud - gitweb
LU-2463 security: osd_mknod shouldn't alter mode after creation
authorLai Siyao <laisiyao@whamcloud.com>
Fri, 14 Dec 2012 02:25:08 +0000 (10:25 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 20 Dec 2012 04:02:44 +0000 (23:02 -0500)
ldiskfs osd_mknod() calls init_special_inode() after creation, which
will update inode->i_mode, don't use the mode from client because
mode is decided at creation time.

Test-Parameters: envdefinitions=SLOW=yes testlist=posix
Signed-off-by: Lai Siyao <laisiyao@whamcloud.com>
Change-Id: Id11c00bf57903e210fc96d33437dd3ece6f2e171
Reviewed-on: http://review.whamcloud.com/4829
Reviewed-by: Bobi Jam <bobijam@gmail.com>
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/osd-ldiskfs/osd_handler.c

index 59d093f..c0e5a91 100644 (file)
@@ -1784,7 +1784,8 @@ static int osd_mknod(struct osd_thread_info *info, struct osd_object *obj,
                 * This inode should be marked dirty for i_rdev.  Currently
                 * that is done in the osd_attr_init().
                 */
                 * This inode should be marked dirty for i_rdev.  Currently
                 * that is done in the osd_attr_init().
                 */
-                init_special_inode(obj->oo_inode, mode, attr->la_rdev);
+               init_special_inode(obj->oo_inode, obj->oo_inode->i_mode,
+                                  attr->la_rdev);
         }
         LINVRNT(osd_invariant(obj));
         return result;
         }
         LINVRNT(osd_invariant(obj));
         return result;