All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/5] dynamic_dname(): drop unused dentry argument
@ 2022-08-18  2:57 Al Viro
  2022-08-18  2:58 ` [PATCH 2/5] ksmbd: don't open-code file_path() Al Viro
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Al Viro @ 2022-08-18  2:57 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 drivers/dma-buf/dma-buf.c | 2 +-
 fs/anon_inodes.c          | 2 +-
 fs/d_path.c               | 3 +--
 fs/nsfs.c                 | 2 +-
 fs/pipe.c                 | 2 +-
 include/linux/dcache.h    | 4 ++--
 net/socket.c              | 2 +-
 7 files changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index efb4990b29e1..5ec2f314b6e9 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -53,7 +53,7 @@ static char *dmabuffs_dname(struct dentry *dentry, char *buffer, int buflen)
 		ret = strlcpy(name, dmabuf->name, DMA_BUF_NAME_LEN);
 	spin_unlock(&dmabuf->name_lock);
 
-	return dynamic_dname(dentry, buffer, buflen, "/%s:%s",
+	return dynamic_dname(buffer, buflen, "/%s:%s",
 			     dentry->d_name.name, ret > 0 ? name : "");
 }
 
diff --git a/fs/anon_inodes.c b/fs/anon_inodes.c
index e0c3e33c4177..24192a7667ed 100644
--- a/fs/anon_inodes.c
+++ b/fs/anon_inodes.c
@@ -32,7 +32,7 @@ static struct inode *anon_inode_inode;
  */
 static char *anon_inodefs_dname(struct dentry *dentry, char *buffer, int buflen)
 {
-	return dynamic_dname(dentry, buffer, buflen, "anon_inode:%s",
+	return dynamic_dname(buffer, buflen, "anon_inode:%s",
 				dentry->d_name.name);
 }
 
diff --git a/fs/d_path.c b/fs/d_path.c
index e4e0ebad1f15..ce8d9d49e1e7 100644
--- a/fs/d_path.c
+++ b/fs/d_path.c
@@ -297,8 +297,7 @@ EXPORT_SYMBOL(d_path);
 /*
  * Helper function for dentry_operations.d_dname() members
  */
-char *dynamic_dname(struct dentry *dentry, char *buffer, int buflen,
-			const char *fmt, ...)
+char *dynamic_dname(char *buffer, int buflen, const char *fmt, ...)
 {
 	va_list args;
 	char temp[64];
diff --git a/fs/nsfs.c b/fs/nsfs.c
index 800c1d0eb0d0..3506f6074288 100644
--- a/fs/nsfs.c
+++ b/fs/nsfs.c
@@ -28,7 +28,7 @@ static char *ns_dname(struct dentry *dentry, char *buffer, int buflen)
 	struct inode *inode = d_inode(dentry);
 	const struct proc_ns_operations *ns_ops = dentry->d_fsdata;
 
-	return dynamic_dname(dentry, buffer, buflen, "%s:[%lu]",
+	return dynamic_dname(buffer, buflen, "%s:[%lu]",
 		ns_ops->name, inode->i_ino);
 }
 
diff --git a/fs/pipe.c b/fs/pipe.c
index 74ae9fafd25a..42c7ff41c2db 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -860,7 +860,7 @@ static struct vfsmount *pipe_mnt __read_mostly;
  */
 static char *pipefs_dname(struct dentry *dentry, char *buffer, int buflen)
 {
-	return dynamic_dname(dentry, buffer, buflen, "pipe:[%lu]",
+	return dynamic_dname(buffer, buflen, "pipe:[%lu]",
 				d_inode(dentry)->i_ino);
 }
 
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 92c78ed02b54..54d46518c481 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -287,8 +287,8 @@ static inline unsigned d_count(const struct dentry *dentry)
 /*
  * helper function for dentry_operations.d_dname() members
  */
-extern __printf(4, 5)
-char *dynamic_dname(struct dentry *, char *, int, const char *, ...);
+extern __printf(3, 4)
+char *dynamic_dname(char *, int, const char *, ...);
 
 extern char *__d_path(const struct path *, const struct path *, char *, int);
 extern char *d_absolute_path(const struct path *, char *, int);
diff --git a/net/socket.c b/net/socket.c
index 9b27c5e4e5ba..d183e83e0cdf 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -355,7 +355,7 @@ static const struct super_operations sockfs_ops = {
  */
 static char *sockfs_dname(struct dentry *dentry, char *buffer, int buflen)
 {
-	return dynamic_dname(dentry, buffer, buflen, "socket:[%lu]",
+	return dynamic_dname(buffer, buflen, "socket:[%lu]",
 				d_inode(dentry)->i_ino);
 }
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 2/5] ksmbd: don't open-code file_path()
  2022-08-18  2:57 [PATCH 1/5] dynamic_dname(): drop unused dentry argument Al Viro
@ 2022-08-18  2:58 ` Al Viro
  2022-08-18  6:19   ` Namjae Jeon
  2022-08-18  2:58 ` [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM Al Viro
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: Al Viro @ 2022-08-18  2:58 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/ksmbd/smb2pdu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index 9751cc92c111..0e1924a6476d 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -5416,7 +5416,7 @@ static int smb2_rename(struct ksmbd_work *work,
 	if (!pathname)
 		return -ENOMEM;
 
-	abs_oldname = d_path(&fp->filp->f_path, pathname, PATH_MAX);
+	abs_oldname = file_path(fp->filp, pathname, PATH_MAX);
 	if (IS_ERR(abs_oldname)) {
 		rc = -EINVAL;
 		goto out;
@@ -5551,7 +5551,7 @@ static int smb2_create_link(struct ksmbd_work *work,
 	}
 
 	ksmbd_debug(SMB, "link name is %s\n", link_name);
-	target_name = d_path(&filp->f_path, pathname, PATH_MAX);
+	target_name = file_path(filp, pathname, PATH_MAX);
 	if (IS_ERR(target_name)) {
 		rc = -EINVAL;
 		goto out;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM...
  2022-08-18  2:57 [PATCH 1/5] dynamic_dname(): drop unused dentry argument Al Viro
  2022-08-18  2:58 ` [PATCH 2/5] ksmbd: don't open-code file_path() Al Viro
@ 2022-08-18  2:58 ` Al Viro
  2022-08-18 18:34   ` Schaufler, Casey
  2022-08-26  7:45   ` Christian Brauner
  2022-08-18  2:59 ` [PATCH 4/5] ksmbd: don't open-code %pf Al Viro
  2022-08-18  2:59 ` [PATCH 5/5] d_path.c: typo fix Al Viro
  3 siblings, 2 replies; 15+ messages in thread
From: Al Viro @ 2022-08-18  2:58 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel

cast of ->d_name.name to char * is completely wrong - nothing is
allowed to modify its contents.

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/proc/base.c                | 2 +-
 include/linux/lsm_hook_defs.h | 2 +-
 include/linux/security.h      | 4 ++--
 security/apparmor/lsm.c       | 2 +-
 security/security.c           | 4 ++--
 security/selinux/hooks.c      | 2 +-
 security/smack/smack_lsm.c    | 2 +-
 7 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/fs/proc/base.c b/fs/proc/base.c
index 93f7e3d971e4..e347b8ce140c 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -2728,7 +2728,7 @@ static ssize_t proc_pid_attr_read(struct file * file, char __user * buf,
 		return -ESRCH;
 
 	length = security_getprocattr(task, PROC_I(inode)->op.lsm,
-				      (char*)file->f_path.dentry->d_name.name,
+				      file->f_path.dentry->d_name.name,
 				      &p);
 	put_task_struct(task);
 	if (length > 0)
diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
index 806448173033..03360d27bedf 100644
--- a/include/linux/lsm_hook_defs.h
+++ b/include/linux/lsm_hook_defs.h
@@ -253,7 +253,7 @@ LSM_HOOK(int, 0, sem_semop, struct kern_ipc_perm *perm, struct sembuf *sops,
 LSM_HOOK(int, 0, netlink_send, struct sock *sk, struct sk_buff *skb)
 LSM_HOOK(void, LSM_RET_VOID, d_instantiate, struct dentry *dentry,
 	 struct inode *inode)
-LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, char *name,
+LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, const char *name,
 	 char **value)
 LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t size)
 LSM_HOOK(int, 0, ismaclabel, const char *name)
diff --git a/include/linux/security.h b/include/linux/security.h
index 1bc362cb413f..93488c01d9bd 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -461,7 +461,7 @@ int security_sem_semctl(struct kern_ipc_perm *sma, int cmd);
 int security_sem_semop(struct kern_ipc_perm *sma, struct sembuf *sops,
 			unsigned nsops, int alter);
 void security_d_instantiate(struct dentry *dentry, struct inode *inode);
-int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
+int security_getprocattr(struct task_struct *p, const char *lsm, const char *name,
 			 char **value);
 int security_setprocattr(const char *lsm, const char *name, void *value,
 			 size_t size);
@@ -1301,7 +1301,7 @@ static inline void security_d_instantiate(struct dentry *dentry,
 { }
 
 static inline int security_getprocattr(struct task_struct *p, const char *lsm,
-				       char *name, char **value)
+				       const char *name, char **value)
 {
 	return -EINVAL;
 }
diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
index e29cade7b662..f56070270c69 100644
--- a/security/apparmor/lsm.c
+++ b/security/apparmor/lsm.c
@@ -614,7 +614,7 @@ static int apparmor_sb_pivotroot(const struct path *old_path,
 	return error;
 }
 
-static int apparmor_getprocattr(struct task_struct *task, char *name,
+static int apparmor_getprocattr(struct task_struct *task, const char *name,
 				char **value)
 {
 	int error = -ENOENT;
diff --git a/security/security.c b/security/security.c
index 14d30fec8a00..d8227531e2fd 100644
--- a/security/security.c
+++ b/security/security.c
@@ -2057,8 +2057,8 @@ void security_d_instantiate(struct dentry *dentry, struct inode *inode)
 }
 EXPORT_SYMBOL(security_d_instantiate);
 
-int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
-				char **value)
+int security_getprocattr(struct task_struct *p, const char *lsm,
+			 const char *name, char **value)
 {
 	struct security_hook_list *hp;
 
diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
index 79573504783b..c8168d19fb96 100644
--- a/security/selinux/hooks.c
+++ b/security/selinux/hooks.c
@@ -6327,7 +6327,7 @@ static void selinux_d_instantiate(struct dentry *dentry, struct inode *inode)
 }
 
 static int selinux_getprocattr(struct task_struct *p,
-			       char *name, char **value)
+			       const char *name, char **value)
 {
 	const struct task_security_struct *__tsec;
 	u32 sid;
diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
index 001831458fa2..434b348d8fcd 100644
--- a/security/smack/smack_lsm.c
+++ b/security/smack/smack_lsm.c
@@ -3479,7 +3479,7 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
  *
  * Returns the length of the smack label or an error code
  */
-static int smack_getprocattr(struct task_struct *p, char *name, char **value)
+static int smack_getprocattr(struct task_struct *p, const char *name, char **value)
 {
 	struct smack_known *skp = smk_of_task_struct_obj(p);
 	char *cp;
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-18  2:57 [PATCH 1/5] dynamic_dname(): drop unused dentry argument Al Viro
  2022-08-18  2:58 ` [PATCH 2/5] ksmbd: don't open-code file_path() Al Viro
  2022-08-18  2:58 ` [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM Al Viro
@ 2022-08-18  2:59 ` Al Viro
  2022-08-18  6:08   ` Namjae Jeon
  2022-08-18  2:59 ` [PATCH 5/5] d_path.c: typo fix Al Viro
  3 siblings, 1 reply; 15+ messages in thread
From: Al Viro @ 2022-08-18  2:59 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/ksmbd/vfs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
index 78d01033604c..a0fafba8b5d0 100644
--- a/fs/ksmbd/vfs.c
+++ b/fs/ksmbd/vfs.c
@@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work *work,
 	*total_size_written = 0;
 
 	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
-		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
+		pr_err("no right to read(%pf)\n", src_fp->filp);
 		return -EACCES;
 	}
 	if (!(dst_fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) {
-		pr_err("no right to write(%pd)\n", dst_fp->filp->f_path.dentry);
+		pr_err("no right to write(%pf)\n", dst_fp->filp);
 		return -EACCES;
 	}
 
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* [PATCH 5/5] d_path.c: typo fix...
  2022-08-18  2:57 [PATCH 1/5] dynamic_dname(): drop unused dentry argument Al Viro
                   ` (2 preceding siblings ...)
  2022-08-18  2:59 ` [PATCH 4/5] ksmbd: don't open-code %pf Al Viro
@ 2022-08-18  2:59 ` Al Viro
  3 siblings, 0 replies; 15+ messages in thread
From: Al Viro @ 2022-08-18  2:59 UTC (permalink / raw)
  To: linux-fsdevel; +Cc: linux-kernel

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
 fs/d_path.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/d_path.c b/fs/d_path.c
index ce8d9d49e1e7..56a6ee4c6331 100644
--- a/fs/d_path.c
+++ b/fs/d_path.c
@@ -34,7 +34,7 @@ static bool prepend_char(struct prepend_buffer *p, unsigned char c)
 }
 
 /*
- * The source of the prepend data can be an optimistoc load
+ * The source of the prepend data can be an optimistic load
  * of a dentry name and length. And because we don't hold any
  * locks, the length and the pointer to the name may not be
  * in sync if a concurrent rename happens, and the kernel
-- 
2.30.2


^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-18  2:59 ` [PATCH 4/5] ksmbd: don't open-code %pf Al Viro
@ 2022-08-18  6:08   ` Namjae Jeon
  2022-08-18 20:35     ` Al Viro
  0 siblings, 1 reply; 15+ messages in thread
From: Namjae Jeon @ 2022-08-18  6:08 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

2022-08-18 11:59 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> ---
>  fs/ksmbd/vfs.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
> index 78d01033604c..a0fafba8b5d0 100644
> --- a/fs/ksmbd/vfs.c
> +++ b/fs/ksmbd/vfs.c
> @@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work
> *work,
>  	*total_size_written = 0;
>
>  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
> -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
> +		pr_err("no right to read(%pf)\n", src_fp->filp);
Isn't this probably %pD?

Thanks.
>  		return -EACCES;
>  	}
>  	if (!(dst_fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) {
> -		pr_err("no right to write(%pd)\n", dst_fp->filp->f_path.dentry);
> +		pr_err("no right to write(%pf)\n", dst_fp->filp);
>  		return -EACCES;
>  	}
>
> --
> 2.30.2
>
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 2/5] ksmbd: don't open-code file_path()
  2022-08-18  2:58 ` [PATCH 2/5] ksmbd: don't open-code file_path() Al Viro
@ 2022-08-18  6:19   ` Namjae Jeon
  0 siblings, 0 replies; 15+ messages in thread
From: Namjae Jeon @ 2022-08-18  6:19 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-fsdevel, linux-kernel, CIFS

2022-08-18 11:58 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>

Thanks!
> ---
>  fs/ksmbd/smb2pdu.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
> index 9751cc92c111..0e1924a6476d 100644
> --- a/fs/ksmbd/smb2pdu.c
> +++ b/fs/ksmbd/smb2pdu.c
> @@ -5416,7 +5416,7 @@ static int smb2_rename(struct ksmbd_work *work,
>  	if (!pathname)
>  		return -ENOMEM;
>
> -	abs_oldname = d_path(&fp->filp->f_path, pathname, PATH_MAX);
> +	abs_oldname = file_path(fp->filp, pathname, PATH_MAX);
>  	if (IS_ERR(abs_oldname)) {
>  		rc = -EINVAL;
>  		goto out;
> @@ -5551,7 +5551,7 @@ static int smb2_create_link(struct ksmbd_work *work,
>  	}
>
>  	ksmbd_debug(SMB, "link name is %s\n", link_name);
> -	target_name = d_path(&filp->f_path, pathname, PATH_MAX);
> +	target_name = file_path(filp, pathname, PATH_MAX);
>  	if (IS_ERR(target_name)) {
>  		rc = -EINVAL;
>  		goto out;
> --
> 2.30.2
>
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* RE: [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM...
  2022-08-18  2:58 ` [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM Al Viro
@ 2022-08-18 18:34   ` Schaufler, Casey
  2022-08-26  7:45   ` Christian Brauner
  1 sibling, 0 replies; 15+ messages in thread
From: Schaufler, Casey @ 2022-08-18 18:34 UTC (permalink / raw)
  To: Al Viro, linux-fsdevel; +Cc: linux-kernel, linux-security-module

> -----Original Message-----
> From: Al Viro <viro@ftp.linux.org.uk> On Behalf Of Al Viro
> Sent: Wednesday, August 17, 2022 7:59 PM
> To: linux-fsdevel@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Subject: [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM...
> 
> cast of ->d_name.name to char * is completely wrong - nothing is
> allowed to modify its contents.
> 
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>

Could we please have the LSM list included when making changes in
the security sub-system?

Thank you.

> ---
>  fs/proc/base.c                | 2 +-
>  include/linux/lsm_hook_defs.h | 2 +-
>  include/linux/security.h      | 4 ++--
>  security/apparmor/lsm.c       | 2 +-
>  security/security.c           | 4 ++--
>  security/selinux/hooks.c      | 2 +-
>  security/smack/smack_lsm.c    | 2 +-
>  7 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/fs/proc/base.c b/fs/proc/base.c
> index 93f7e3d971e4..e347b8ce140c 100644
> --- a/fs/proc/base.c
> +++ b/fs/proc/base.c
> @@ -2728,7 +2728,7 @@ static ssize_t proc_pid_attr_read(struct file * file,
> char __user * buf,
>  		return -ESRCH;
> 
>  	length = security_getprocattr(task, PROC_I(inode)->op.lsm,
> -				      (char*)file->f_path.dentry-
> >d_name.name,
> +				      file->f_path.dentry->d_name.name,
>  				      &p);
>  	put_task_struct(task);
>  	if (length > 0)
> diff --git a/include/linux/lsm_hook_defs.h b/include/linux/lsm_hook_defs.h
> index 806448173033..03360d27bedf 100644
> --- a/include/linux/lsm_hook_defs.h
> +++ b/include/linux/lsm_hook_defs.h
> @@ -253,7 +253,7 @@ LSM_HOOK(int, 0, sem_semop, struct kern_ipc_perm
> *perm, struct sembuf *sops,
>  LSM_HOOK(int, 0, netlink_send, struct sock *sk, struct sk_buff *skb)
>  LSM_HOOK(void, LSM_RET_VOID, d_instantiate, struct dentry *dentry,
>  	 struct inode *inode)
> -LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, char *name,
> +LSM_HOOK(int, -EINVAL, getprocattr, struct task_struct *p, const char
> *name,
>  	 char **value)
>  LSM_HOOK(int, -EINVAL, setprocattr, const char *name, void *value, size_t
> size)
>  LSM_HOOK(int, 0, ismaclabel, const char *name)
> diff --git a/include/linux/security.h b/include/linux/security.h
> index 1bc362cb413f..93488c01d9bd 100644
> --- a/include/linux/security.h
> +++ b/include/linux/security.h
> @@ -461,7 +461,7 @@ int security_sem_semctl(struct kern_ipc_perm *sma,
> int cmd);
>  int security_sem_semop(struct kern_ipc_perm *sma, struct sembuf *sops,
>  			unsigned nsops, int alter);
>  void security_d_instantiate(struct dentry *dentry, struct inode *inode);
> -int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
> +int security_getprocattr(struct task_struct *p, const char *lsm, const char
> *name,
>  			 char **value);
>  int security_setprocattr(const char *lsm, const char *name, void *value,
>  			 size_t size);
> @@ -1301,7 +1301,7 @@ static inline void security_d_instantiate(struct
> dentry *dentry,
>  { }
> 
>  static inline int security_getprocattr(struct task_struct *p, const char *lsm,
> -				       char *name, char **value)
> +				       const char *name, char **value)
>  {
>  	return -EINVAL;
>  }
> diff --git a/security/apparmor/lsm.c b/security/apparmor/lsm.c
> index e29cade7b662..f56070270c69 100644
> --- a/security/apparmor/lsm.c
> +++ b/security/apparmor/lsm.c
> @@ -614,7 +614,7 @@ static int apparmor_sb_pivotroot(const struct path
> *old_path,
>  	return error;
>  }
> 
> -static int apparmor_getprocattr(struct task_struct *task, char *name,
> +static int apparmor_getprocattr(struct task_struct *task, const char *name,
>  				char **value)
>  {
>  	int error = -ENOENT;
> diff --git a/security/security.c b/security/security.c
> index 14d30fec8a00..d8227531e2fd 100644
> --- a/security/security.c
> +++ b/security/security.c
> @@ -2057,8 +2057,8 @@ void security_d_instantiate(struct dentry *dentry,
> struct inode *inode)
>  }
>  EXPORT_SYMBOL(security_d_instantiate);
> 
> -int security_getprocattr(struct task_struct *p, const char *lsm, char *name,
> -				char **value)
> +int security_getprocattr(struct task_struct *p, const char *lsm,
> +			 const char *name, char **value)
>  {
>  	struct security_hook_list *hp;
> 
> diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
> index 79573504783b..c8168d19fb96 100644
> --- a/security/selinux/hooks.c
> +++ b/security/selinux/hooks.c
> @@ -6327,7 +6327,7 @@ static void selinux_d_instantiate(struct dentry
> *dentry, struct inode *inode)
>  }
> 
>  static int selinux_getprocattr(struct task_struct *p,
> -			       char *name, char **value)
> +			       const char *name, char **value)
>  {
>  	const struct task_security_struct *__tsec;
>  	u32 sid;
> diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
> index 001831458fa2..434b348d8fcd 100644
> --- a/security/smack/smack_lsm.c
> +++ b/security/smack/smack_lsm.c
> @@ -3479,7 +3479,7 @@ static void smack_d_instantiate(struct dentry
> *opt_dentry, struct inode *inode)
>   *
>   * Returns the length of the smack label or an error code
>   */
> -static int smack_getprocattr(struct task_struct *p, char *name, char
> **value)
> +static int smack_getprocattr(struct task_struct *p, const char *name, char
> **value)
>  {
>  	struct smack_known *skp = smk_of_task_struct_obj(p);
>  	char *cp;
> --
> 2.30.2


^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-18  6:08   ` Namjae Jeon
@ 2022-08-18 20:35     ` Al Viro
  2022-08-18 23:26       ` Namjae Jeon
  0 siblings, 1 reply; 15+ messages in thread
From: Al Viro @ 2022-08-18 20:35 UTC (permalink / raw)
  To: Namjae Jeon; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

On Thu, Aug 18, 2022 at 03:08:36PM +0900, Namjae Jeon wrote:
> 2022-08-18 11:59 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> > ---
> >  fs/ksmbd/vfs.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
> > index 78d01033604c..a0fafba8b5d0 100644
> > --- a/fs/ksmbd/vfs.c
> > +++ b/fs/ksmbd/vfs.c
> > @@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work
> > *work,
> >  	*total_size_written = 0;
> >
> >  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
> > -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
> > +		pr_err("no right to read(%pf)\n", src_fp->filp);
> Isn't this probably %pD?

*blink*

It certainly is; thanks for catching that braino...  While we are at it,
there's several more places of the same form these days, so fixed and
updated variant follows:

ksmbd: don't open-code %pD
    
a bunch of places used %pd with file->f_path.dentry; shorter (and saner)
way to spell that is %pD with file...
    
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---

diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index 0e1924a6476d..bed670410c37 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -3897,8 +3897,7 @@ int smb2_query_dir(struct ksmbd_work *work)
 	    inode_permission(file_mnt_user_ns(dir_fp->filp),
 			     file_inode(dir_fp->filp),
 			     MAY_READ | MAY_EXEC)) {
-		pr_err("no right to enumerate directory (%pd)\n",
-		       dir_fp->filp->f_path.dentry);
+		pr_err("no right to enumerate directory (%pD)\n", dir_fp->filp);
 		rc = -EACCES;
 		goto err_out2;
 	}
@@ -6269,8 +6268,8 @@ int smb2_read(struct ksmbd_work *work)
 		goto out;
 	}
 
-	ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
-		    fp->filp->f_path.dentry, offset, length);
+	ksmbd_debug(SMB, "filename %pD, offset %lld, len %zu\n",
+		    fp->filp, offset, length);
 
 	work->aux_payload_buf = kvmalloc(length, GFP_KERNEL | __GFP_ZERO);
 	if (!work->aux_payload_buf) {
@@ -6534,8 +6533,8 @@ int smb2_write(struct ksmbd_work *work)
 		data_buf = (char *)(((char *)&req->hdr.ProtocolId) +
 				    le16_to_cpu(req->DataOffset));
 
-		ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
-			    fp->filp->f_path.dentry, offset, length);
+		ksmbd_debug(SMB, "filename %pD, offset %lld, len %zu\n",
+			    fp->filp, offset, length);
 		err = ksmbd_vfs_write(work, fp, data_buf, length, &offset,
 				      writethrough, &nbytes);
 		if (err < 0)
diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
index 78d01033604c..0c04a59cbe60 100644
--- a/fs/ksmbd/vfs.c
+++ b/fs/ksmbd/vfs.c
@@ -377,8 +377,7 @@ int ksmbd_vfs_read(struct ksmbd_work *work, struct ksmbd_file *fp, size_t count,
 
 	if (work->conn->connection_type) {
 		if (!(fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
-			pr_err("no right to read(%pd)\n",
-			       fp->filp->f_path.dentry);
+			pr_err("no right to read(%pD)\n", fp->filp);
 			return -EACCES;
 		}
 	}
@@ -487,8 +486,7 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct ksmbd_file *fp,
 
 	if (work->conn->connection_type) {
 		if (!(fp->daccess & FILE_WRITE_DATA_LE)) {
-			pr_err("no right to write(%pd)\n",
-			       fp->filp->f_path.dentry);
+			pr_err("no right to write(%pD)\n", fp->filp);
 			err = -EACCES;
 			goto out;
 		}
@@ -527,8 +525,8 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct ksmbd_file *fp,
 	if (sync) {
 		err = vfs_fsync_range(filp, offset, offset + *written, 0);
 		if (err < 0)
-			pr_err("fsync failed for filename = %pd, err = %d\n",
-			       fp->filp->f_path.dentry, err);
+			pr_err("fsync failed for filename = %pD, err = %d\n",
+			       fp->filp, err);
 	}
 
 out:
@@ -1743,11 +1741,11 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work *work,
 	*total_size_written = 0;
 
 	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
-		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
+		pr_err("no right to read(%pD)\n", src_fp->filp);
 		return -EACCES;
 	}
 	if (!(dst_fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) {
-		pr_err("no right to write(%pd)\n", dst_fp->filp->f_path.dentry);
+		pr_err("no right to write(%pD)\n", dst_fp->filp);
 		return -EACCES;
 	}
 

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-18 20:35     ` Al Viro
@ 2022-08-18 23:26       ` Namjae Jeon
  2022-08-20  3:47         ` Al Viro
  0 siblings, 1 reply; 15+ messages in thread
From: Namjae Jeon @ 2022-08-18 23:26 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

2022-08-19 5:35 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> On Thu, Aug 18, 2022 at 03:08:36PM +0900, Namjae Jeon wrote:
>> 2022-08-18 11:59 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
>> > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
>> > ---
>> >  fs/ksmbd/vfs.c | 4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
>> > index 78d01033604c..a0fafba8b5d0 100644
>> > --- a/fs/ksmbd/vfs.c
>> > +++ b/fs/ksmbd/vfs.c
>> > @@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct
>> > ksmbd_work
>> > *work,
>> >  	*total_size_written = 0;
>> >
>> >  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
>> > -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
>> > +		pr_err("no right to read(%pf)\n", src_fp->filp);
>> Isn't this probably %pD?
>
> *blink*
>
> It certainly is; thanks for catching that braino...  While we are at it,
> there's several more places of the same form these days, so fixed and
> updated variant follows:
Thanks for updating the patch!
>
> ksmbd: don't open-code %pD
>
> a bunch of places used %pd with file->f_path.dentry; shorter (and saner)
> way to spell that is %pD with file...
>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Acked-by: Namjae Jeon <linkinjeon@kernel.org>

Thanks!
> ---
>
> diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
> index 0e1924a6476d..bed670410c37 100644
> --- a/fs/ksmbd/smb2pdu.c
> +++ b/fs/ksmbd/smb2pdu.c
> @@ -3897,8 +3897,7 @@ int smb2_query_dir(struct ksmbd_work *work)
>  	    inode_permission(file_mnt_user_ns(dir_fp->filp),
>  			     file_inode(dir_fp->filp),
>  			     MAY_READ | MAY_EXEC)) {
> -		pr_err("no right to enumerate directory (%pd)\n",
> -		       dir_fp->filp->f_path.dentry);
> +		pr_err("no right to enumerate directory (%pD)\n", dir_fp->filp);
>  		rc = -EACCES;
>  		goto err_out2;
>  	}
> @@ -6269,8 +6268,8 @@ int smb2_read(struct ksmbd_work *work)
>  		goto out;
>  	}
>
> -	ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
> -		    fp->filp->f_path.dentry, offset, length);
> +	ksmbd_debug(SMB, "filename %pD, offset %lld, len %zu\n",
> +		    fp->filp, offset, length);
>
>  	work->aux_payload_buf = kvmalloc(length, GFP_KERNEL | __GFP_ZERO);
>  	if (!work->aux_payload_buf) {
> @@ -6534,8 +6533,8 @@ int smb2_write(struct ksmbd_work *work)
>  		data_buf = (char *)(((char *)&req->hdr.ProtocolId) +
>  				    le16_to_cpu(req->DataOffset));
>
> -		ksmbd_debug(SMB, "filename %pd, offset %lld, len %zu\n",
> -			    fp->filp->f_path.dentry, offset, length);
> +		ksmbd_debug(SMB, "filename %pD, offset %lld, len %zu\n",
> +			    fp->filp, offset, length);
>  		err = ksmbd_vfs_write(work, fp, data_buf, length, &offset,
>  				      writethrough, &nbytes);
>  		if (err < 0)
> diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
> index 78d01033604c..0c04a59cbe60 100644
> --- a/fs/ksmbd/vfs.c
> +++ b/fs/ksmbd/vfs.c
> @@ -377,8 +377,7 @@ int ksmbd_vfs_read(struct ksmbd_work *work, struct
> ksmbd_file *fp, size_t count,
>
>  	if (work->conn->connection_type) {
>  		if (!(fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
> -			pr_err("no right to read(%pd)\n",
> -			       fp->filp->f_path.dentry);
> +			pr_err("no right to read(%pD)\n", fp->filp);
>  			return -EACCES;
>  		}
>  	}
> @@ -487,8 +486,7 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct
> ksmbd_file *fp,
>
>  	if (work->conn->connection_type) {
>  		if (!(fp->daccess & FILE_WRITE_DATA_LE)) {
> -			pr_err("no right to write(%pd)\n",
> -			       fp->filp->f_path.dentry);
> +			pr_err("no right to write(%pD)\n", fp->filp);
>  			err = -EACCES;
>  			goto out;
>  		}
> @@ -527,8 +525,8 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct
> ksmbd_file *fp,
>  	if (sync) {
>  		err = vfs_fsync_range(filp, offset, offset + *written, 0);
>  		if (err < 0)
> -			pr_err("fsync failed for filename = %pd, err = %d\n",
> -			       fp->filp->f_path.dentry, err);
> +			pr_err("fsync failed for filename = %pD, err = %d\n",
> +			       fp->filp, err);
>  	}
>
>  out:
> @@ -1743,11 +1741,11 @@ int ksmbd_vfs_copy_file_ranges(struct ksmbd_work
> *work,
>  	*total_size_written = 0;
>
>  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
> -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
> +		pr_err("no right to read(%pD)\n", src_fp->filp);
>  		return -EACCES;
>  	}
>  	if (!(dst_fp->daccess & (FILE_WRITE_DATA_LE | FILE_APPEND_DATA_LE))) {
> -		pr_err("no right to write(%pd)\n", dst_fp->filp->f_path.dentry);
> +		pr_err("no right to write(%pD)\n", dst_fp->filp);
>  		return -EACCES;
>  	}
>
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-18 23:26       ` Namjae Jeon
@ 2022-08-20  3:47         ` Al Viro
  2022-08-20  5:44           ` Namjae Jeon
  0 siblings, 1 reply; 15+ messages in thread
From: Al Viro @ 2022-08-20  3:47 UTC (permalink / raw)
  To: Namjae Jeon; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

On Fri, Aug 19, 2022 at 08:26:55AM +0900, Namjae Jeon wrote:
> 2022-08-19 5:35 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> > On Thu, Aug 18, 2022 at 03:08:36PM +0900, Namjae Jeon wrote:
> >> 2022-08-18 11:59 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> >> > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> >> > ---
> >> >  fs/ksmbd/vfs.c | 4 ++--
> >> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >> >
> >> > diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
> >> > index 78d01033604c..a0fafba8b5d0 100644
> >> > --- a/fs/ksmbd/vfs.c
> >> > +++ b/fs/ksmbd/vfs.c
> >> > @@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct
> >> > ksmbd_work
> >> > *work,
> >> >  	*total_size_written = 0;
> >> >
> >> >  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
> >> > -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
> >> > +		pr_err("no right to read(%pf)\n", src_fp->filp);
> >> Isn't this probably %pD?
> >
> > *blink*
> >
> > It certainly is; thanks for catching that braino...  While we are at it,
> > there's several more places of the same form these days, so fixed and
> > updated variant follows:
> Thanks for updating the patch!

OK...  FWIW, I've another ksmbd patch hanging around and it might be
less PITA if I put it + those two patches into never-rebased branch
(for-ksmbd) for ksmbd folks to pull from.  Fewer pointless conflicts
that way...  The third patch is below:

ksmbd: constify struct path
    
... in particular, there should never be a non-const pointers to
any file->f_path.
    
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---

diff --git a/fs/ksmbd/misc.c b/fs/ksmbd/misc.c
index df991107ad2c..364a0a463dfc 100644
--- a/fs/ksmbd/misc.c
+++ b/fs/ksmbd/misc.c
@@ -159,7 +159,7 @@ int parse_stream_name(char *filename, char **stream_name, int *s_type)
  */
 
 char *convert_to_nt_pathname(struct ksmbd_share_config *share,
-			     struct path *path)
+			     const struct path *path)
 {
 	char *pathname, *ab_pathname, *nt_pathname;
 	int share_path_len = share->path_sz;
diff --git a/fs/ksmbd/misc.h b/fs/ksmbd/misc.h
index aae2a252945f..5a0ae2f8e5e7 100644
--- a/fs/ksmbd/misc.h
+++ b/fs/ksmbd/misc.h
@@ -15,7 +15,7 @@ int match_pattern(const char *str, size_t len, const char *pattern);
 int ksmbd_validate_filename(char *filename);
 int parse_stream_name(char *filename, char **stream_name, int *s_type);
 char *convert_to_nt_pathname(struct ksmbd_share_config *share,
-			     struct path *path);
+			     const struct path *path);
 int get_nlink(struct kstat *st);
 void ksmbd_conv_path_to_unix(char *path);
 void ksmbd_strip_last_slash(char *path);
diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
index bed670410c37..2b7b9dad94fc 100644
--- a/fs/ksmbd/smb2pdu.c
+++ b/fs/ksmbd/smb2pdu.c
@@ -2183,7 +2183,7 @@ static noinline int create_smb2_pipe(struct ksmbd_work *work)
  * Return:	0 on success, otherwise error
  */
 static int smb2_set_ea(struct smb2_ea_info *eabuf, unsigned int buf_len,
-		       struct path *path)
+		       const struct path *path)
 {
 	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
 	char *attr_name = NULL, *value;
@@ -2270,7 +2270,7 @@ static int smb2_set_ea(struct smb2_ea_info *eabuf, unsigned int buf_len,
 	return rc;
 }
 
-static noinline int smb2_set_stream_name_xattr(struct path *path,
+static noinline int smb2_set_stream_name_xattr(const struct path *path,
 					       struct ksmbd_file *fp,
 					       char *stream_name, int s_type)
 {
@@ -2309,7 +2309,7 @@ static noinline int smb2_set_stream_name_xattr(struct path *path,
 	return 0;
 }
 
-static int smb2_remove_smb_xattrs(struct path *path)
+static int smb2_remove_smb_xattrs(const struct path *path)
 {
 	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
 	char *name, *xattr_list = NULL;
@@ -2343,7 +2343,7 @@ static int smb2_remove_smb_xattrs(struct path *path)
 	return err;
 }
 
-static int smb2_create_truncate(struct path *path)
+static int smb2_create_truncate(const struct path *path)
 {
 	int rc = vfs_truncate(path, 0);
 
@@ -2362,7 +2362,7 @@ static int smb2_create_truncate(struct path *path)
 	return rc;
 }
 
-static void smb2_new_xattrs(struct ksmbd_tree_connect *tcon, struct path *path,
+static void smb2_new_xattrs(struct ksmbd_tree_connect *tcon, const struct path *path,
 			    struct ksmbd_file *fp)
 {
 	struct xattr_dos_attrib da = {0};
@@ -2385,7 +2385,7 @@ static void smb2_new_xattrs(struct ksmbd_tree_connect *tcon, struct path *path,
 }
 
 static void smb2_update_xattrs(struct ksmbd_tree_connect *tcon,
-			       struct path *path, struct ksmbd_file *fp)
+			       const struct path *path, struct ksmbd_file *fp)
 {
 	struct xattr_dos_attrib da;
 	int rc;
@@ -2445,7 +2445,7 @@ static int smb2_creat(struct ksmbd_work *work, struct path *path, char *name,
 
 static int smb2_create_sd_buffer(struct ksmbd_work *work,
 				 struct smb2_create_req *req,
-				 struct path *path)
+				 const struct path *path)
 {
 	struct create_context *context;
 	struct create_sd_buf_req *sd_buf;
@@ -4160,7 +4160,7 @@ static int smb2_get_ea(struct ksmbd_work *work, struct ksmbd_file *fp,
 	int rc, name_len, value_len, xattr_list_len, idx;
 	ssize_t buf_free_len, alignment_bytes, next_offset, rsp_data_cnt = 0;
 	struct smb2_ea_info_req *ea_req = NULL;
-	struct path *path;
+	const struct path *path;
 	struct user_namespace *user_ns = file_mnt_user_ns(fp->filp);
 
 	if (!(fp->daccess & FILE_READ_EA_LE)) {
@@ -4497,7 +4497,7 @@ static void get_file_stream_info(struct ksmbd_work *work,
 	struct smb2_file_stream_info *file_info;
 	char *stream_name, *xattr_list = NULL, *stream_buf;
 	struct kstat stat;
-	struct path *path = &fp->filp->f_path;
+	const struct path *path = &fp->filp->f_path;
 	ssize_t xattr_list_len;
 	int nbytes = 0, streamlen, stream_name_len, next, idx = 0;
 	int buf_free_len;
diff --git a/fs/ksmbd/smbacl.c b/fs/ksmbd/smbacl.c
index 3781bca2c8fc..85c4de640ed3 100644
--- a/fs/ksmbd/smbacl.c
+++ b/fs/ksmbd/smbacl.c
@@ -991,7 +991,7 @@ static void smb_set_ace(struct smb_ace *ace, const struct smb_sid *sid, u8 type,
 }
 
 int smb_inherit_dacl(struct ksmbd_conn *conn,
-		     struct path *path,
+		     const struct path *path,
 		     unsigned int uid, unsigned int gid)
 {
 	const struct smb_sid *psid, *creator = NULL;
@@ -1185,7 +1185,7 @@ bool smb_inherit_flags(int flags, bool is_dir)
 	return false;
 }
 
-int smb_check_perm_dacl(struct ksmbd_conn *conn, struct path *path,
+int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
 			__le32 *pdaccess, int uid)
 {
 	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
@@ -1352,7 +1352,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn, struct path *path,
 }
 
 int set_info_sec(struct ksmbd_conn *conn, struct ksmbd_tree_connect *tcon,
-		 struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
+		 const struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
 		 bool type_check)
 {
 	int rc;
diff --git a/fs/ksmbd/smbacl.h b/fs/ksmbd/smbacl.h
index fcb2c83f2992..f06abf247445 100644
--- a/fs/ksmbd/smbacl.h
+++ b/fs/ksmbd/smbacl.h
@@ -201,12 +201,12 @@ void posix_state_to_acl(struct posix_acl_state *state,
 			struct posix_acl_entry *pace);
 int compare_sids(const struct smb_sid *ctsid, const struct smb_sid *cwsid);
 bool smb_inherit_flags(int flags, bool is_dir);
-int smb_inherit_dacl(struct ksmbd_conn *conn, struct path *path,
+int smb_inherit_dacl(struct ksmbd_conn *conn, const struct path *path,
 		     unsigned int uid, unsigned int gid);
-int smb_check_perm_dacl(struct ksmbd_conn *conn, struct path *path,
+int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
 			__le32 *pdaccess, int uid);
 int set_info_sec(struct ksmbd_conn *conn, struct ksmbd_tree_connect *tcon,
-		 struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
+		 const struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
 		 bool type_check);
 void id_to_sid(unsigned int cid, uint sidtype, struct smb_sid *ssid);
 void ksmbd_init_domain(u32 *sub_auth);
diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
index 0c04a59cbe60..4fcf96a01c16 100644
--- a/fs/ksmbd/vfs.c
+++ b/fs/ksmbd/vfs.c
@@ -541,7 +541,7 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct ksmbd_file *fp,
  *
  * Return:	0 on success, otherwise error
  */
-int ksmbd_vfs_getattr(struct path *path, struct kstat *stat)
+int ksmbd_vfs_getattr(const struct path *path, struct kstat *stat)
 {
 	int err;
 
@@ -1166,7 +1166,7 @@ static int __caseless_lookup(struct dir_context *ctx, const char *name,
  *
  * Return:	0 on success, otherwise error
  */
-static int ksmbd_vfs_lookup_in_dir(struct path *dir, char *name, size_t namelen)
+static int ksmbd_vfs_lookup_in_dir(const struct path *dir, char *name, size_t namelen)
 {
 	int ret;
 	struct file *dfilp;
diff --git a/fs/ksmbd/vfs.h b/fs/ksmbd/vfs.h
index 70da4c0ba7ad..d7542a2dab52 100644
--- a/fs/ksmbd/vfs.h
+++ b/fs/ksmbd/vfs.h
@@ -85,7 +85,7 @@ int ksmbd_vfs_fsync(struct ksmbd_work *work, u64 fid, u64 p_id);
 int ksmbd_vfs_remove_file(struct ksmbd_work *work, char *name);
 int ksmbd_vfs_link(struct ksmbd_work *work,
 		   const char *oldname, const char *newname);
-int ksmbd_vfs_getattr(struct path *path, struct kstat *stat);
+int ksmbd_vfs_getattr(const struct path *path, struct kstat *stat);
 int ksmbd_vfs_fp_rename(struct ksmbd_work *work, struct ksmbd_file *fp,
 			char *newname);
 int ksmbd_vfs_truncate(struct ksmbd_work *work,

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-20  3:47         ` Al Viro
@ 2022-08-20  5:44           ` Namjae Jeon
  2022-08-20 15:33             ` Al Viro
  0 siblings, 1 reply; 15+ messages in thread
From: Namjae Jeon @ 2022-08-20  5:44 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

2022-08-20 12:47 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
> On Fri, Aug 19, 2022 at 08:26:55AM +0900, Namjae Jeon wrote:
>> 2022-08-19 5:35 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
>> > On Thu, Aug 18, 2022 at 03:08:36PM +0900, Namjae Jeon wrote:
>> >> 2022-08-18 11:59 GMT+09:00, Al Viro <viro@zeniv.linux.org.uk>:
>> >> > Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
>> >> > ---
>> >> >  fs/ksmbd/vfs.c | 4 ++--
>> >> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >> >
>> >> > diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
>> >> > index 78d01033604c..a0fafba8b5d0 100644
>> >> > --- a/fs/ksmbd/vfs.c
>> >> > +++ b/fs/ksmbd/vfs.c
>> >> > @@ -1743,11 +1743,11 @@ int ksmbd_vfs_copy_file_ranges(struct
>> >> > ksmbd_work
>> >> > *work,
>> >> >  	*total_size_written = 0;
>> >> >
>> >> >  	if (!(src_fp->daccess & (FILE_READ_DATA_LE | FILE_EXECUTE_LE))) {
>> >> > -		pr_err("no right to read(%pd)\n", src_fp->filp->f_path.dentry);
>> >> > +		pr_err("no right to read(%pf)\n", src_fp->filp);
>> >> Isn't this probably %pD?
>> >
>> > *blink*
>> >
>> > It certainly is; thanks for catching that braino...  While we are at
>> > it,
>> > there's several more places of the same form these days, so fixed and
>> > updated variant follows:
>> Thanks for updating the patch!
>
> OK...  FWIW, I've another ksmbd patch hanging around and it might be
> less PITA if I put it + those two patches into never-rebased branch
> (for-ksmbd) for ksmbd folks to pull from.  Fewer pointless conflicts
> that way...
Okay, Thanks for this. I'm trying to resend "ksmbd: fix racy issue
from using ->d_parent and ->d_name" patch to you, but It conflict with
these patches:)
We will pull them from that branch if you create it.

> The third patch is below:
>
> ksmbd: constify struct path
>
> ... in particular, there should never be a non-const pointers to
> any file->f_path.
>
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Looks good to me!

Acked-by: Namjae Jeon <linkinjeon@kernel.org>

Thanks!
> ---
>
> diff --git a/fs/ksmbd/misc.c b/fs/ksmbd/misc.c
> index df991107ad2c..364a0a463dfc 100644
> --- a/fs/ksmbd/misc.c
> +++ b/fs/ksmbd/misc.c
> @@ -159,7 +159,7 @@ int parse_stream_name(char *filename, char
> **stream_name, int *s_type)
>   */
>
>  char *convert_to_nt_pathname(struct ksmbd_share_config *share,
> -			     struct path *path)
> +			     const struct path *path)
>  {
>  	char *pathname, *ab_pathname, *nt_pathname;
>  	int share_path_len = share->path_sz;
> diff --git a/fs/ksmbd/misc.h b/fs/ksmbd/misc.h
> index aae2a252945f..5a0ae2f8e5e7 100644
> --- a/fs/ksmbd/misc.h
> +++ b/fs/ksmbd/misc.h
> @@ -15,7 +15,7 @@ int match_pattern(const char *str, size_t len, const char
> *pattern);
>  int ksmbd_validate_filename(char *filename);
>  int parse_stream_name(char *filename, char **stream_name, int *s_type);
>  char *convert_to_nt_pathname(struct ksmbd_share_config *share,
> -			     struct path *path);
> +			     const struct path *path);
>  int get_nlink(struct kstat *st);
>  void ksmbd_conv_path_to_unix(char *path);
>  void ksmbd_strip_last_slash(char *path);
> diff --git a/fs/ksmbd/smb2pdu.c b/fs/ksmbd/smb2pdu.c
> index bed670410c37..2b7b9dad94fc 100644
> --- a/fs/ksmbd/smb2pdu.c
> +++ b/fs/ksmbd/smb2pdu.c
> @@ -2183,7 +2183,7 @@ static noinline int create_smb2_pipe(struct ksmbd_work
> *work)
>   * Return:	0 on success, otherwise error
>   */
>  static int smb2_set_ea(struct smb2_ea_info *eabuf, unsigned int buf_len,
> -		       struct path *path)
> +		       const struct path *path)
>  {
>  	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
>  	char *attr_name = NULL, *value;
> @@ -2270,7 +2270,7 @@ static int smb2_set_ea(struct smb2_ea_info *eabuf,
> unsigned int buf_len,
>  	return rc;
>  }
>
> -static noinline int smb2_set_stream_name_xattr(struct path *path,
> +static noinline int smb2_set_stream_name_xattr(const struct path *path,
>  					       struct ksmbd_file *fp,
>  					       char *stream_name, int s_type)
>  {
> @@ -2309,7 +2309,7 @@ static noinline int smb2_set_stream_name_xattr(struct
> path *path,
>  	return 0;
>  }
>
> -static int smb2_remove_smb_xattrs(struct path *path)
> +static int smb2_remove_smb_xattrs(const struct path *path)
>  {
>  	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
>  	char *name, *xattr_list = NULL;
> @@ -2343,7 +2343,7 @@ static int smb2_remove_smb_xattrs(struct path *path)
>  	return err;
>  }
>
> -static int smb2_create_truncate(struct path *path)
> +static int smb2_create_truncate(const struct path *path)
>  {
>  	int rc = vfs_truncate(path, 0);
>
> @@ -2362,7 +2362,7 @@ static int smb2_create_truncate(struct path *path)
>  	return rc;
>  }
>
> -static void smb2_new_xattrs(struct ksmbd_tree_connect *tcon, struct path
> *path,
> +static void smb2_new_xattrs(struct ksmbd_tree_connect *tcon, const struct
> path *path,
>  			    struct ksmbd_file *fp)
>  {
>  	struct xattr_dos_attrib da = {0};
> @@ -2385,7 +2385,7 @@ static void smb2_new_xattrs(struct ksmbd_tree_connect
> *tcon, struct path *path,
>  }
>
>  static void smb2_update_xattrs(struct ksmbd_tree_connect *tcon,
> -			       struct path *path, struct ksmbd_file *fp)
> +			       const struct path *path, struct ksmbd_file *fp)
>  {
>  	struct xattr_dos_attrib da;
>  	int rc;
> @@ -2445,7 +2445,7 @@ static int smb2_creat(struct ksmbd_work *work, struct
> path *path, char *name,
>
>  static int smb2_create_sd_buffer(struct ksmbd_work *work,
>  				 struct smb2_create_req *req,
> -				 struct path *path)
> +				 const struct path *path)
>  {
>  	struct create_context *context;
>  	struct create_sd_buf_req *sd_buf;
> @@ -4160,7 +4160,7 @@ static int smb2_get_ea(struct ksmbd_work *work, struct
> ksmbd_file *fp,
>  	int rc, name_len, value_len, xattr_list_len, idx;
>  	ssize_t buf_free_len, alignment_bytes, next_offset, rsp_data_cnt = 0;
>  	struct smb2_ea_info_req *ea_req = NULL;
> -	struct path *path;
> +	const struct path *path;
>  	struct user_namespace *user_ns = file_mnt_user_ns(fp->filp);
>
>  	if (!(fp->daccess & FILE_READ_EA_LE)) {
> @@ -4497,7 +4497,7 @@ static void get_file_stream_info(struct ksmbd_work
> *work,
>  	struct smb2_file_stream_info *file_info;
>  	char *stream_name, *xattr_list = NULL, *stream_buf;
>  	struct kstat stat;
> -	struct path *path = &fp->filp->f_path;
> +	const struct path *path = &fp->filp->f_path;
>  	ssize_t xattr_list_len;
>  	int nbytes = 0, streamlen, stream_name_len, next, idx = 0;
>  	int buf_free_len;
> diff --git a/fs/ksmbd/smbacl.c b/fs/ksmbd/smbacl.c
> index 3781bca2c8fc..85c4de640ed3 100644
> --- a/fs/ksmbd/smbacl.c
> +++ b/fs/ksmbd/smbacl.c
> @@ -991,7 +991,7 @@ static void smb_set_ace(struct smb_ace *ace, const
> struct smb_sid *sid, u8 type,
>  }
>
>  int smb_inherit_dacl(struct ksmbd_conn *conn,
> -		     struct path *path,
> +		     const struct path *path,
>  		     unsigned int uid, unsigned int gid)
>  {
>  	const struct smb_sid *psid, *creator = NULL;
> @@ -1185,7 +1185,7 @@ bool smb_inherit_flags(int flags, bool is_dir)
>  	return false;
>  }
>
> -int smb_check_perm_dacl(struct ksmbd_conn *conn, struct path *path,
> +int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
>  			__le32 *pdaccess, int uid)
>  {
>  	struct user_namespace *user_ns = mnt_user_ns(path->mnt);
> @@ -1352,7 +1352,7 @@ int smb_check_perm_dacl(struct ksmbd_conn *conn,
> struct path *path,
>  }
>
>  int set_info_sec(struct ksmbd_conn *conn, struct ksmbd_tree_connect *tcon,
> -		 struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
> +		 const struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
>  		 bool type_check)
>  {
>  	int rc;
> diff --git a/fs/ksmbd/smbacl.h b/fs/ksmbd/smbacl.h
> index fcb2c83f2992..f06abf247445 100644
> --- a/fs/ksmbd/smbacl.h
> +++ b/fs/ksmbd/smbacl.h
> @@ -201,12 +201,12 @@ void posix_state_to_acl(struct posix_acl_state
> *state,
>  			struct posix_acl_entry *pace);
>  int compare_sids(const struct smb_sid *ctsid, const struct smb_sid
> *cwsid);
>  bool smb_inherit_flags(int flags, bool is_dir);
> -int smb_inherit_dacl(struct ksmbd_conn *conn, struct path *path,
> +int smb_inherit_dacl(struct ksmbd_conn *conn, const struct path *path,
>  		     unsigned int uid, unsigned int gid);
> -int smb_check_perm_dacl(struct ksmbd_conn *conn, struct path *path,
> +int smb_check_perm_dacl(struct ksmbd_conn *conn, const struct path *path,
>  			__le32 *pdaccess, int uid);
>  int set_info_sec(struct ksmbd_conn *conn, struct ksmbd_tree_connect *tcon,
> -		 struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
> +		 const struct path *path, struct smb_ntsd *pntsd, int ntsd_len,
>  		 bool type_check);
>  void id_to_sid(unsigned int cid, uint sidtype, struct smb_sid *ssid);
>  void ksmbd_init_domain(u32 *sub_auth);
> diff --git a/fs/ksmbd/vfs.c b/fs/ksmbd/vfs.c
> index 0c04a59cbe60..4fcf96a01c16 100644
> --- a/fs/ksmbd/vfs.c
> +++ b/fs/ksmbd/vfs.c
> @@ -541,7 +541,7 @@ int ksmbd_vfs_write(struct ksmbd_work *work, struct
> ksmbd_file *fp,
>   *
>   * Return:	0 on success, otherwise error
>   */
> -int ksmbd_vfs_getattr(struct path *path, struct kstat *stat)
> +int ksmbd_vfs_getattr(const struct path *path, struct kstat *stat)
>  {
>  	int err;
>
> @@ -1166,7 +1166,7 @@ static int __caseless_lookup(struct dir_context *ctx,
> const char *name,
>   *
>   * Return:	0 on success, otherwise error
>   */
> -static int ksmbd_vfs_lookup_in_dir(struct path *dir, char *name, size_t
> namelen)
> +static int ksmbd_vfs_lookup_in_dir(const struct path *dir, char *name,
> size_t namelen)
>  {
>  	int ret;
>  	struct file *dfilp;
> diff --git a/fs/ksmbd/vfs.h b/fs/ksmbd/vfs.h
> index 70da4c0ba7ad..d7542a2dab52 100644
> --- a/fs/ksmbd/vfs.h
> +++ b/fs/ksmbd/vfs.h
> @@ -85,7 +85,7 @@ int ksmbd_vfs_fsync(struct ksmbd_work *work, u64 fid, u64
> p_id);
>  int ksmbd_vfs_remove_file(struct ksmbd_work *work, char *name);
>  int ksmbd_vfs_link(struct ksmbd_work *work,
>  		   const char *oldname, const char *newname);
> -int ksmbd_vfs_getattr(struct path *path, struct kstat *stat);
> +int ksmbd_vfs_getattr(const struct path *path, struct kstat *stat);
>  int ksmbd_vfs_fp_rename(struct ksmbd_work *work, struct ksmbd_file *fp,
>  			char *newname);
>  int ksmbd_vfs_truncate(struct ksmbd_work *work,
>

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-20  5:44           ` Namjae Jeon
@ 2022-08-20 15:33             ` Al Viro
  2022-08-21  2:06               ` Steve French
  0 siblings, 1 reply; 15+ messages in thread
From: Al Viro @ 2022-08-20 15:33 UTC (permalink / raw)
  To: Namjae Jeon; +Cc: linux-fsdevel, Linux Kernel Mailing List, CIFS

On Sat, Aug 20, 2022 at 02:44:29PM +0900, Namjae Jeon wrote:
> > OK...  FWIW, I've another ksmbd patch hanging around and it might be
> > less PITA if I put it + those two patches into never-rebased branch
> > (for-ksmbd) for ksmbd folks to pull from.  Fewer pointless conflicts
> > that way...
> Okay, Thanks for this. I'm trying to resend "ksmbd: fix racy issue
> from using ->d_parent and ->d_name" patch to you, but It conflict with
> these patches:)
> We will pull them from that branch if you create it.

OK, pull request follows:

The following changes since commit 568035b01cfb107af8d2e4bd2fb9aea22cf5b868:

  Linux 6.0-rc1 (2022-08-14 15:50:18 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-ksmbd

for you to fetch changes up to f2ea6d96500dd8947467f774d70700c1ba3ed8ef:

  ksmbd: constify struct path (2022-08-20 10:54:48 -0400)

----------------------------------------------------------------
assorted ksmbd cleanups

Al Viro <viro@zeniv.linux.org.uk>

----------------------------------------------------------------
Al Viro (3):
      ksmbd: don't open-code file_path()
      ksmbd: don't open-code %pD
      ksmbd: constify struct path

 fs/ksmbd/misc.c    |  2 +-
 fs/ksmbd/misc.h    |  2 +-
 fs/ksmbd/smb2pdu.c | 33 ++++++++++++++++-----------------
 fs/ksmbd/smbacl.c  |  6 +++---
 fs/ksmbd/smbacl.h  |  6 +++---
 fs/ksmbd/vfs.c     | 18 ++++++++----------
 fs/ksmbd/vfs.h     |  2 +-
 7 files changed, 33 insertions(+), 36 deletions(-)

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 4/5] ksmbd: don't open-code %pf
  2022-08-20 15:33             ` Al Viro
@ 2022-08-21  2:06               ` Steve French
  0 siblings, 0 replies; 15+ messages in thread
From: Steve French @ 2022-08-21  2:06 UTC (permalink / raw)
  To: Al Viro; +Cc: Namjae Jeon, linux-fsdevel, Linux Kernel Mailing List, CIFS

merged into ksmbd-for-next

On Sat, Aug 20, 2022 at 10:34 AM Al Viro <viro@zeniv.linux.org.uk> wrote:
>
> On Sat, Aug 20, 2022 at 02:44:29PM +0900, Namjae Jeon wrote:
> > > OK...  FWIW, I've another ksmbd patch hanging around and it might be
> > > less PITA if I put it + those two patches into never-rebased branch
> > > (for-ksmbd) for ksmbd folks to pull from.  Fewer pointless conflicts
> > > that way...
> > Okay, Thanks for this. I'm trying to resend "ksmbd: fix racy issue
> > from using ->d_parent and ->d_name" patch to you, but It conflict with
> > these patches:)
> > We will pull them from that branch if you create it.
>
> OK, pull request follows:
>
> The following changes since commit 568035b01cfb107af8d2e4bd2fb9aea22cf5b868:
>
>   Linux 6.0-rc1 (2022-08-14 15:50:18 -0700)
>
> are available in the Git repository at:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git tags/pull-ksmbd
>
> for you to fetch changes up to f2ea6d96500dd8947467f774d70700c1ba3ed8ef:
>
>   ksmbd: constify struct path (2022-08-20 10:54:48 -0400)
>
> ----------------------------------------------------------------
> assorted ksmbd cleanups
>
> Al Viro <viro@zeniv.linux.org.uk>
>
> ----------------------------------------------------------------
> Al Viro (3):
>       ksmbd: don't open-code file_path()
>       ksmbd: don't open-code %pD
>       ksmbd: constify struct path
>
>  fs/ksmbd/misc.c    |  2 +-
>  fs/ksmbd/misc.h    |  2 +-
>  fs/ksmbd/smb2pdu.c | 33 ++++++++++++++++-----------------
>  fs/ksmbd/smbacl.c  |  6 +++---
>  fs/ksmbd/smbacl.h  |  6 +++---
>  fs/ksmbd/vfs.c     | 18 ++++++++----------
>  fs/ksmbd/vfs.h     |  2 +-
>  7 files changed, 33 insertions(+), 36 deletions(-)



-- 
Thanks,

Steve

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM...
  2022-08-18  2:58 ` [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM Al Viro
  2022-08-18 18:34   ` Schaufler, Casey
@ 2022-08-26  7:45   ` Christian Brauner
  1 sibling, 0 replies; 15+ messages in thread
From: Christian Brauner @ 2022-08-26  7:45 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-fsdevel, linux-kernel

On Thu, Aug 18, 2022 at 03:58:51AM +0100, Al Viro wrote:
> cast of ->d_name.name to char * is completely wrong - nothing is
> allowed to modify its contents.
> 
> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
> ---

Reviewed-by: Christian Brauner (Microsoft) <brauner@kernel.org>

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2022-08-26  7:46 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-18  2:57 [PATCH 1/5] dynamic_dname(): drop unused dentry argument Al Viro
2022-08-18  2:58 ` [PATCH 2/5] ksmbd: don't open-code file_path() Al Viro
2022-08-18  6:19   ` Namjae Jeon
2022-08-18  2:58 ` [PATCH 3/5] ->getprocattr(): attribute name is const char *, TYVM Al Viro
2022-08-18 18:34   ` Schaufler, Casey
2022-08-26  7:45   ` Christian Brauner
2022-08-18  2:59 ` [PATCH 4/5] ksmbd: don't open-code %pf Al Viro
2022-08-18  6:08   ` Namjae Jeon
2022-08-18 20:35     ` Al Viro
2022-08-18 23:26       ` Namjae Jeon
2022-08-20  3:47         ` Al Viro
2022-08-20  5:44           ` Namjae Jeon
2022-08-20 15:33             ` Al Viro
2022-08-21  2:06               ` Steve French
2022-08-18  2:59 ` [PATCH 5/5] d_path.c: typo fix Al Viro

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.