Skip to contentSkip to conversation

staging: lustre: libcfs: use octal permissions

PATCH In review Ernestas Kulik 3 participants 4 messages Jan 24, 2017 – Jan 25, 2017 Staging

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 staging: lustre: libcfs: use octal permissions

Using octal permissions instead of symbolic ones is preferred.

---
 drivers/staging/lustre/lnet/libcfs/module.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/lustre/lnet/libcfs/module.c +2 -2
index 161e04226521..c388550c2d10 100644
@@ -488,10 +488,10 @@ static const struct file_operations lnet_debugfs_file_operations_wo = {
 
 static const struct file_operations *lnet_debugfs_fops_select(umode_t mode)
 {
-	if (!(mode & S_IWUGO))
+	if (!(mode & 0222))
 		return &lnet_debugfs_file_operations_ro;
 
-	if (!(mode & S_IRUGO))
+	if (!(mode & 0444))
 		return &lnet_debugfs_file_operations_wo;
 
 	return &lnet_debugfs_file_operations_rw;
Signature · 1 line
2.11.0
#1 lore raw

PATCH 2/2 staging: lustre: llite: use octal permissions

Using octal permissions instead of symbolic ones is preferred.

---
 drivers/staging/lustre/lustre/llite/dir.c       | 2 +-
 drivers/staging/lustre/lustre/llite/file.c      | 2 +-
 drivers/staging/lustre/lustre/llite/llite_lib.c | 4 ++--
 drivers/staging/lustre/lustre/llite/namei.c     | 4 ++--
 4 files changed, 6 insertions(+), 6 deletions(-)
drivers/staging/lustre/lustre/llite/dir.c +1 -1
index ea5d247a3f70..526fea266926 100644
@@ -432,7 +432,7 @@ static int ll_dir_setdirstripe(struct inode *parent, struct lmv_user_md *lump,
 
 	if (!IS_POSIXACL(parent) || !exp_connect_umask(ll_i2mdexp(parent)))
 		mode &= ~current_umask();
-	mode = (mode & (S_IRWXUGO | S_ISVTX)) | S_IFDIR;
+	mode = (mode & (0777 | S_ISVTX)) | S_IFDIR;
 	op_data = ll_prep_md_op_data(NULL, parent, NULL, dirname,
 				     strlen(dirname), mode, LUSTRE_OPC_MKDIR,
 				     lump);
drivers/staging/lustre/lustre/llite/file.c +1 -1
index d93f06abd13c..a17118876555 100644
@@ -1883,7 +1883,7 @@ static int ll_hsm_import(struct inode *inode, struct file *file,
 		goto free_hss;
 	}
 
-	attr->ia_mode = hui->hui_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
+	attr->ia_mode = hui->hui_mode & 0777;
 	attr->ia_mode |= S_IFREG;
 	attr->ia_uid = make_kuid(&init_user_ns, hui->hui_uid);
 	attr->ia_gid = make_kgid(&init_user_ns, hui->hui_gid);
drivers/staging/lustre/lustre/llite/llite_lib.c +2 -2
index 25f5aed97f63..9cb4909e3b86 100644
@@ -1599,7 +1599,7 @@ int ll_setattr(struct dentry *de, struct iattr *attr)
 	if (((attr->ia_valid & (ATTR_MODE | ATTR_FORCE | ATTR_SIZE)) ==
 			       (ATTR_SIZE | ATTR_MODE)) &&
 	    (((mode & S_ISUID) && !(attr->ia_mode & S_ISUID)) ||
-	     (((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) &&
+	     (((mode & (S_ISGID | 0010)) == (S_ISGID | 0010)) &&
 	      !(attr->ia_mode & S_ISGID))))
 		attr->ia_valid |= ATTR_FORCE;
 
@@ -1610,7 +1610,7 @@ int ll_setattr(struct dentry *de, struct iattr *attr)
 		attr->ia_valid |= ATTR_KILL_SUID;
 
 	if ((attr->ia_valid & ATTR_MODE) &&
-	    ((mode & (S_ISGID | S_IXGRP)) == (S_ISGID | S_IXGRP)) &&
+	    ((mode & (S_ISGID | 0010)) == (S_ISGID | 0010)) &&
 	    !(attr->ia_mode & S_ISGID) &&
 	    !(attr->ia_valid & ATTR_KILL_SGID))
 		attr->ia_valid |= ATTR_KILL_SGID;
drivers/staging/lustre/lustre/llite/namei.c +2 -2
index a8f4e7fb0a46..f925656f11c9 100644
@@ -1041,7 +1041,7 @@ static int ll_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode)
 
 	if (!IS_POSIXACL(dir) || !exp_connect_umask(ll_i2mdexp(dir)))
 		mode &= ~current_umask();
-	mode = (mode & (S_IRWXUGO | S_ISVTX)) | S_IFDIR;
+	mode = (mode & (0777 | S_ISVTX)) | S_IFDIR;
 
 	err = ll_new_node(dir, dentry, NULL, mode, 0, LUSTRE_OPC_MKDIR);
 	if (!err)
@@ -1089,7 +1089,7 @@ static int ll_symlink(struct inode *dir, struct dentry *dentry,
 	CDEBUG(D_VFSTRACE, "VFS Op:name=%pd, dir="DFID"(%p),target=%.*s\n",
 	       dentry, PFID(ll_inode2fid(dir)), dir, 3000, oldname);
 
-	err = ll_new_node(dir, dentry, oldname, S_IFLNK | S_IRWXUGO,
+	err = ll_new_node(dir, dentry, oldname, S_IFLNK | 0777,
 			  0, LUSTRE_OPC_SYMLINK);
 
 	if (!err)
Signature · 1 line
2.11.0
#2 lore raw
In reply to Ernestas Kulik
Quoted 2 lines · Ernestas Kulik

Using octal permissions instead of symbolic ones is preferred.

Typically the reverse is true - using symbolic constants is preferred over numeric ones. Where does this recommendation come from?

Cheers, Andreas

Quoted 25 lines

---
drivers/staging/lustre/lnet/libcfs/module.c | 4 ++--

1 file changed, 2 insertions(+), 2 deletions(-)
drivers/staging/lustre/lnet/libcfs/module.c +2 -2
index 161e04226521..c388550c2d10 100644
@@ -488,10 +488,10 @@ static const struct file_operations lnet_debugfs_file_operations_wo = {
 
 static const struct file_operations *lnet_debugfs_fops_select(umode_t mode)
 {
-	if (!(mode & S_IWUGO))
+	if (!(mode & 0222))
 		return &lnet_debugfs_file_operations_ro;
 
-	if (!(mode & S_IRUGO))
+	if (!(mode & 0444))
 		return &lnet_debugfs_file_operations_wo;
 
 	return &lnet_debugfs_file_operations_rw;
Signature · 1 line
2.11.0
#3 lore raw
Quoted 6 lines · Andreas
Quoted 2 lines · Ernestas Kulik

Using octal permissions instead of symbolic ones is preferred.

Typically the reverse is true - using symbolic constants is preferred over numeric ones. Where does this recommendation come from?

http://lkml.kernel.org/r/CA+55aFw5v23T-zvDZp-MmD_EYxF8WbafwwB59934FV7g21uMGQ at mail.gmail.com

which is:

https://marc.info/?l=linux-arm-kernel&m=147017161402213&w=2

Subject:    Please don't replace numeric parameter like 0444 with macro
From:       Linus Torvalds <torvalds () linux-foundation ! org>
Date:       2016-08-02 20:58:29

[ So I answered similarly to another patch, but I'll just re-iterate and change the subject line so that it stands out a bit from the millions of actual patches ]

Quoted 3 lines · Pavel Machek

Everyone knows what 0644 is, but noone can read S_IRUSR | S_IWUSR | S_IRCRP | S_IROTH (*). Please don't do this.

Absolutely. It's *much* easier to parse and understand the octal numbers, while the symbolic macro names are just random line noise and hard as hell to understand. You really have to think about it.

So we should rather go the other way: convert existing bad symbolic permission bit macro use to just use the octal numbers.

The symbolic names are good for the *other* bits (ie sticky bit, and the inode mode _type_ numbers etc), but for the permission bits, the symbolic names are just insane crap. Nobody sane should ever use them. Not in the kernel, not in user space.