Brad Bishop | d7bf8c1 | 2018-02-25 22:55:05 -0500 | [diff] [blame] | 1 | From f6d188580c2c9599319076fee22f2424652c711c Mon Sep 17 00:00:00 2001 |
| 2 | From: Robert Yang <liezhi.yang@windriver.com> |
| 3 | Date: Wed, 13 Sep 2017 19:55:35 -0700 |
| 4 | Subject: [PATCH] misc/create_inode.c: set dir's mode correctly |
| 5 | |
| 6 | The dir's mode has been set by ext2fs_mkdir() with umask, so |
| 7 | reset it to the source's mode in set_inode_extra(). |
| 8 | |
| 9 | Fixed when source dir's mode is 521, but tarball would be 721, this was |
| 10 | incorrect. |
| 11 | |
| 12 | Upstream-Status: Submitted |
| 13 | |
| 14 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> |
| 15 | --- |
| 16 | misc/create_inode.c | 9 ++++++++- |
| 17 | 1 file changed, 8 insertions(+), 1 deletion(-) |
| 18 | |
| 19 | diff --git a/misc/create_inode.c b/misc/create_inode.c |
| 20 | index 8ce3faf..50fbaa8 100644 |
| 21 | --- a/misc/create_inode.c |
| 22 | +++ b/misc/create_inode.c |
| 23 | @@ -116,7 +116,14 @@ static errcode_t set_inode_extra(ext2_filsys fs, ext2_ino_t ino, |
| 24 | |
| 25 | inode.i_uid = st->st_uid; |
| 26 | inode.i_gid = st->st_gid; |
| 27 | - inode.i_mode |= st->st_mode; |
| 28 | + /* |
| 29 | + * The dir's mode has been set by ext2fs_mkdir() with umask, so |
| 30 | + * reset it to the source's mode |
| 31 | + */ |
| 32 | + if S_ISDIR(st->st_mode) |
| 33 | + inode.i_mode = LINUX_S_IFDIR | st->st_mode; |
| 34 | + else |
| 35 | + inode.i_mode |= st->st_mode; |
| 36 | inode.i_atime = st->st_atime; |
| 37 | inode.i_mtime = st->st_mtime; |
| 38 | inode.i_ctime = st->st_ctime; |
| 39 | -- |
| 40 | 2.10.2 |
| 41 | |