From: Li Zetao <lizetao1@huawei.com> To: <richard@nod.at>, <chengzhihao1@huawei.com> Cc: <lizetao1@huawei.com>, <linux-kernel@vger.kernel.org>, <linux-mtd@lists.infradead.org> Subject: [RFC PATCH 2/5] ubifs: Initialize or update ACLs for inode Date: Wed, 20 Mar 2024 00:16:43 +0800 [thread overview] Message-ID: <20240319161646.2153867-3-lizetao1@huawei.com> (raw) In-Reply-To: <20240319161646.2153867-1-lizetao1@huawei.com> There are two scenarios where ACL needs to be updated, the first one is when creating the inode, and the second one is in the chmod process. When creating directories/files/device node/tmpfile, ACLs needs to be initialized, but symlink do not. Signed-off-by: Li Zetao <lizetao1@huawei.com> --- fs/ubifs/dir.c | 16 ++++++++++++++++ fs/ubifs/file.c | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 551148de66cd..dfb6823cc953 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -316,6 +316,10 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, goto out_fname; } + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -466,6 +470,10 @@ static int ubifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, } ui = ubifs_inode(inode); + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -1013,6 +1021,10 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, goto out_fname; } + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -1108,6 +1120,10 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, ui->data = dev; ui->data_len = devlen; + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 5029eb3390a5..8f964f8b0f96 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -41,6 +41,7 @@ #include <linux/mount.h> #include <linux/slab.h> #include <linux/migrate.h> +#include <linux/posix_acl.h> static int read_block(struct inode *inode, void *addr, unsigned int block, struct ubifs_data_node *dn) @@ -1298,6 +1299,9 @@ int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, else err = do_setattr(c, inode, attr); + if (!err && (attr->ia_valid & ATTR_MODE)) + err = posix_acl_chmod(idmap, dentry, inode->i_mode); + return err; } -- 2.34.1
WARNING: multiple messages have this Message-ID (diff)
From: Li Zetao <lizetao1@huawei.com> To: <richard@nod.at>, <chengzhihao1@huawei.com> Cc: <lizetao1@huawei.com>, <linux-kernel@vger.kernel.org>, <linux-mtd@lists.infradead.org> Subject: [RFC PATCH 2/5] ubifs: Initialize or update ACLs for inode Date: Wed, 20 Mar 2024 00:16:43 +0800 [thread overview] Message-ID: <20240319161646.2153867-3-lizetao1@huawei.com> (raw) In-Reply-To: <20240319161646.2153867-1-lizetao1@huawei.com> There are two scenarios where ACL needs to be updated, the first one is when creating the inode, and the second one is in the chmod process. When creating directories/files/device node/tmpfile, ACLs needs to be initialized, but symlink do not. Signed-off-by: Li Zetao <lizetao1@huawei.com> --- fs/ubifs/dir.c | 16 ++++++++++++++++ fs/ubifs/file.c | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/fs/ubifs/dir.c b/fs/ubifs/dir.c index 551148de66cd..dfb6823cc953 100644 --- a/fs/ubifs/dir.c +++ b/fs/ubifs/dir.c @@ -316,6 +316,10 @@ static int ubifs_create(struct mnt_idmap *idmap, struct inode *dir, goto out_fname; } + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -466,6 +470,10 @@ static int ubifs_tmpfile(struct mnt_idmap *idmap, struct inode *dir, } ui = ubifs_inode(inode); + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -1013,6 +1021,10 @@ static int ubifs_mkdir(struct mnt_idmap *idmap, struct inode *dir, goto out_fname; } + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; @@ -1108,6 +1120,10 @@ static int ubifs_mknod(struct mnt_idmap *idmap, struct inode *dir, ui->data = dev; ui->data_len = devlen; + err = ubifs_init_acl(inode, dir); + if (err) + goto out_inode; + err = ubifs_init_security(dir, inode, &dentry->d_name); if (err) goto out_inode; diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 5029eb3390a5..8f964f8b0f96 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c @@ -41,6 +41,7 @@ #include <linux/mount.h> #include <linux/slab.h> #include <linux/migrate.h> +#include <linux/posix_acl.h> static int read_block(struct inode *inode, void *addr, unsigned int block, struct ubifs_data_node *dn) @@ -1298,6 +1299,9 @@ int ubifs_setattr(struct mnt_idmap *idmap, struct dentry *dentry, else err = do_setattr(c, inode, attr); + if (!err && (attr->ia_valid & ATTR_MODE)) + err = posix_acl_chmod(idmap, dentry, inode->i_mode); + return err; } -- 2.34.1 ______________________________________________________ Linux MTD discussion mailing list http://lists.infradead.org/mailman/listinfo/linux-mtd/
next prev parent reply other threads:[~2024-03-19 16:16 UTC|newest] Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-03-19 16:16 [RFC PATCH 0/5] ubifs: Support POSIX Access Control Lists (ACLs) Li Zetao 2024-03-19 16:16 ` Li Zetao 2024-03-19 16:16 ` [RFC PATCH 1/5] ubifs: Implement " Li Zetao 2024-03-19 16:16 ` Li Zetao 2024-03-21 2:55 ` Zhihao Cheng 2024-03-21 2:55 ` Zhihao Cheng 2024-03-22 11:36 ` Li Zetao 2024-03-22 11:36 ` Li Zetao 2024-03-19 16:16 ` Li Zetao [this message] 2024-03-19 16:16 ` [RFC PATCH 2/5] ubifs: Initialize or update ACLs for inode Li Zetao 2024-03-21 3:47 ` Zhihao Cheng 2024-03-21 3:47 ` Zhihao Cheng 2024-03-22 11:57 ` Li Zetao 2024-03-22 11:57 ` Li Zetao 2024-03-22 12:07 ` Zhihao Cheng 2024-03-22 12:07 ` Zhihao Cheng 2024-03-19 16:16 ` [RFC PATCH 3/5] ubifs: Support accessing ACLs through inode_operations Li Zetao 2024-03-19 16:16 ` Li Zetao 2024-03-19 16:16 ` [RFC PATCH 4/5] ubifs: Introduce ACLs mount options Li Zetao 2024-03-19 16:16 ` Li Zetao 2024-03-21 6:49 ` Zhihao Cheng 2024-03-21 6:49 ` Zhihao Cheng 2024-03-22 12:05 ` Li Zetao 2024-03-22 12:05 ` Li Zetao 2024-03-22 12:10 ` Zhihao Cheng 2024-03-22 12:10 ` Zhihao Cheng 2024-03-19 16:16 ` [RFC PATCH 5/5] ubifs: Add ACLs config option Li Zetao 2024-03-19 16:16 ` Li Zetao
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20240319161646.2153867-3-lizetao1@huawei.com \ --to=lizetao1@huawei.com \ --cc=chengzhihao1@huawei.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mtd@lists.infradead.org \ --cc=richard@nod.at \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.