]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: constify struct path
authorAl Viro <viro@zeniv.linux.org.uk>
Mon, 18 Dec 2023 15:33:10 +0000 (00:33 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Dec 2023 09:41:52 +0000 (10:41 +0100)
[ Upstream commit c22180a5e2a9e1426fab01d9e54011ec531b1b52 ]

... in particular, there should never be a non-const pointers to
any file->f_path.

Acked-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ksmbd/misc.c
fs/ksmbd/misc.h
fs/ksmbd/smb2pdu.c
fs/ksmbd/smbacl.c
fs/ksmbd/smbacl.h
fs/ksmbd/vfs.c
fs/ksmbd/vfs.h

index df991107ad2c79f853bf21726512f29751838618..364a0a463dfce55545ce22f7364f0cac866abd92 100644 (file)
@@ -159,7 +159,7 @@ out:
  */
 
 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;
index aae2a252945f871d80b1db861d711871fd05c860..5a0ae2f8e5e703e83ad22a88f7c013255a4a18e4 100644 (file)
@@ -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);
index 83513f8006afe7f5dbc3d3a892eb8c88cb30a5a0..162b54214c90635bce6e0dbf9a585f0389fc1f66 100644 (file)
@@ -2226,7 +2226,7 @@ out:
  * 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;
@@ -2320,7 +2320,7 @@ next:
        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)
 {
@@ -2359,7 +2359,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;
@@ -2393,7 +2393,7 @@ out:
        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);
 
@@ -2412,7 +2412,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};
@@ -2435,7 +2435,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;
@@ -2495,7 +2495,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;
@@ -4201,7 +4201,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)) {
@@ -4523,7 +4523,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;
index 83f805248a814c5775493bbf8767f17c7528cbb1..253e8133520a8c0ce37fda89acb518dceac2993f 100644 (file)
@@ -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;
@@ -1208,7 +1208,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);
@@ -1375,7 +1375,7 @@ err_out:
 }
 
 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;
index fcb2c83f29928e9c55bf5f74d6de68dce1925ad9..f06abf247445f5d9634e8bf7271be2914bdfbe20 100644 (file)
@@ -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);
index 8c542581f62a4972ba3b8d77be60c241bef14d1e..284aa87f3e5cd600521691fe5ee54f41549028cf 100644 (file)
@@ -540,7 +540,7 @@ out:
  *
  * 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;
 
@@ -1165,7 +1165,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;
index 432c947731779f46a55d97c1af542244985ebe30..7dd054f868506dd527a228fff7cd7c0648045b5e 100644 (file)
@@ -124,7 +124,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,