* dentry names.
  */
 static int build_path_from_dentry(struct v9fs_session_info *v9ses,
-                                 struct dentry *dentry, char ***names)
+                                 struct dentry *dentry, const unsigned char ***names)
 {
        int n = 0, i;
-       char **wnames;
+       const unsigned char **wnames;
        struct dentry *ds;
 
        for (ds = dentry; !IS_ROOT(ds); ds = ds->d_parent)
                goto err_out;
 
        for (ds = dentry, i = (n-1); i >= 0; i--, ds = ds->d_parent)
-               wnames[i] = (char  *)ds->d_name.name;
+               wnames[i] = ds->d_name.name;
 
        *names = wnames;
        return n;
                                               kuid_t uid, int any)
 {
        struct dentry *ds;
-       char **wnames, *uname;
+       const unsigned char **wnames, *uname;
        int i, n, l, clone, access;
        struct v9fs_session_info *v9ses;
        struct p9_fid *fid, *old_fid = NULL;
        fid = v9fs_fid_find(ds, uid, any);
        if (fid) {
                /* Found the parent fid do a lookup with that */
-               fid = p9_client_walk(fid, 1, (char **)&dentry->d_name.name, 1);
+               fid = p9_client_walk(fid, 1, &dentry->d_name.name, 1);
                goto fid_out;
        }
        up_read(&v9ses->rename_sem);
 
                struct dentry *dentry, char *extension, u32 perm, u8 mode)
 {
        int err;
-       char *name;
+       const unsigned char *name;
        struct p9_fid *dfid, *ofid, *fid;
        struct inode *inode;
 
        err = 0;
        ofid = NULL;
        fid = NULL;
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
        dfid = v9fs_parent_fid(dentry);
        if (IS_ERR(dfid)) {
                err = PTR_ERR(dfid);
        struct v9fs_session_info *v9ses;
        struct p9_fid *dfid, *fid;
        struct inode *inode;
-       char *name;
+       const unsigned char *name;
 
        p9_debug(P9_DEBUG_VFS, "dir: %p dentry: (%pd) %p flags: %x\n",
                 dir, dentry, dentry, flags);
        if (IS_ERR(dfid))
                return ERR_CAST(dfid);
 
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
        fid = p9_client_walk(dfid, 1, &name, 1);
        if (IS_ERR(fid)) {
                if (fid == ERR_PTR(-ENOENT)) {
        }
        v9fs_blank_wstat(&wstat);
        wstat.muid = v9ses->uname;
-       wstat.name = (char *) new_dentry->d_name.name;
+       wstat.name = new_dentry->d_name.name;
        retval = p9_client_wstat(oldfid, &wstat);
 
 clunk_newdir:
 
        int err = 0;
        kgid_t gid;
        umode_t mode;
-       char *name = NULL;
+       const unsigned char *name = NULL;
        struct p9_qid qid;
        struct inode *inode;
        struct p9_fid *fid = NULL;
 
        v9ses = v9fs_inode2v9ses(dir);
 
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
        p9_debug(P9_DEBUG_VFS, "name:%s flags:0x%x mode:0x%hx\n",
                 name, flags, omode);
 
        struct v9fs_session_info *v9ses;
        struct p9_fid *fid = NULL, *dfid = NULL;
        kgid_t gid;
-       char *name;
+       const unsigned char *name;
        umode_t mode;
        struct inode *inode;
        struct p9_qid qid;
                         err);
                goto error;
        }
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
        err = p9_client_mkdir_dotl(dfid, name, mode, gid, &qid);
        if (err < 0)
                goto error;
 {
        int err;
        kgid_t gid;
-       char *name;
+       const unsigned char *name;
        struct p9_qid qid;
        struct inode *inode;
        struct p9_fid *dfid;
        struct p9_fid *fid = NULL;
        struct v9fs_session_info *v9ses;
 
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
        p9_debug(P9_DEBUG_VFS, "%lu,%s,%s\n", dir->i_ino, name, symname);
        v9ses = v9fs_inode2v9ses(dir);
 
        gid = v9fs_get_fsgid_for_create(dir);
 
        /* Server doesn't alter fid on TSYMLINK. Hence no need to clone it. */
-       err = p9_client_symlink(dfid, name, (char *)symname, gid, &qid);
+       err = p9_client_symlink(dfid, name, symname, gid, &qid);
 
        if (err < 0) {
                p9_debug(P9_DEBUG_VFS, "p9_client_symlink failed %d\n", err);
        if (IS_ERR(oldfid))
                return PTR_ERR(oldfid);
 
-       err = p9_client_link(dfid, oldfid, (char *)dentry->d_name.name);
+       err = p9_client_link(dfid, oldfid, dentry->d_name.name);
 
        if (err < 0) {
                p9_debug(P9_DEBUG_VFS, "p9_client_link failed %d\n", err);
 {
        int err;
        kgid_t gid;
-       char *name;
+       const unsigned char *name;
        umode_t mode;
        struct v9fs_session_info *v9ses;
        struct p9_fid *fid = NULL, *dfid = NULL;
                         err);
                goto error;
        }
-       name = (char *) dentry->d_name.name;
+       name = dentry->d_name.name;
 
        err = p9_client_mknod_dotl(dfid, name, mode, rdev, gid, &qid);
        if (err < 0)
 
        u32 atime;
        u32 mtime;
        u64 length;
-       char *name;
-       char *uid;
-       char *gid;
-       char *muid;
+       const char *name;
+       const char *uid;
+       const char *gid;
+       const char *muid;
        char *extension;        /* 9p2000.u extensions */
        kuid_t n_uid;           /* 9p2000.u extensions */
        kgid_t n_gid;           /* 9p2000.u extensions */
 
 void p9_client_disconnect(struct p9_client *clnt);
 void p9_client_begin_disconnect(struct p9_client *clnt);
 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid,
-                               char *uname, kuid_t n_uname, char *aname);
+                               const char *uname, kuid_t n_uname, const char *aname);
 struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname,
-               char **wnames, int clone);
+               const unsigned char * const *wnames, int clone);
 int p9_client_open(struct p9_fid *fid, int mode);
-int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode,
+int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode,
                                                        char *extension);
-int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, char *newname);
-int p9_client_symlink(struct p9_fid *fid, char *name, char *symname, kgid_t gid,
-                                                       struct p9_qid *qid);
-int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode,
+int p9_client_link(struct p9_fid *fid, struct p9_fid *oldfid, const char *newname);
+int p9_client_symlink(struct p9_fid *fid, const char *name, const char *symname,
+               kgid_t gid, struct p9_qid *qid);
+int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags, u32 mode,
                kgid_t gid, struct p9_qid *qid);
 int p9_client_clunk(struct p9_fid *fid);
 int p9_client_fsync(struct p9_fid *fid, int datasync);
 struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid,
                                                        u64 request_mask);
 
-int p9_client_mknod_dotl(struct p9_fid *oldfid, char *name, int mode,
+int p9_client_mknod_dotl(struct p9_fid *oldfid, const char *name, int mode,
                        dev_t rdev, kgid_t gid, struct p9_qid *);
-int p9_client_mkdir_dotl(struct p9_fid *fid, char *name, int mode,
+int p9_client_mkdir_dotl(struct p9_fid *fid, const char *name, int mode,
                                kgid_t gid, struct p9_qid *);
 int p9_client_lock_dotl(struct p9_fid *fid, struct p9_flock *flock, u8 *status);
 int p9_client_getlock_dotl(struct p9_fid *fid, struct p9_getlock *fl);
 
 EXPORT_SYMBOL(p9_client_begin_disconnect);
 
 struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid,
-       char *uname, kuid_t n_uname, char *aname)
+       const char *uname, kuid_t n_uname, const char *aname)
 {
        int err = 0;
        struct p9_req_t *req;
 EXPORT_SYMBOL(p9_client_attach);
 
 struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname,
-               char **wnames, int clone)
+               const unsigned char * const *wnames, int clone)
 {
        int err;
        struct p9_client *clnt;
 }
 EXPORT_SYMBOL(p9_client_open);
 
-int p9_client_create_dotl(struct p9_fid *ofid, char *name, u32 flags, u32 mode,
+int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags, u32 mode,
                kgid_t gid, struct p9_qid *qid)
 {
        int err = 0;
 }
 EXPORT_SYMBOL(p9_client_create_dotl);
 
-int p9_client_fcreate(struct p9_fid *fid, char *name, u32 perm, int mode,
+int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode,
                     char *extension)
 {
        int err;
 }
 EXPORT_SYMBOL(p9_client_fcreate);
 
-int p9_client_symlink(struct p9_fid *dfid, char *name, char *symtgt, kgid_t gid,
-               struct p9_qid *qid)
+int p9_client_symlink(struct p9_fid *dfid, const char *name,
+               const char *symtgt, kgid_t gid, struct p9_qid *qid)
 {
        int err = 0;
        struct p9_client *clnt;
 }
 EXPORT_SYMBOL(p9_client_symlink);
 
-int p9_client_link(struct p9_fid *dfid, struct p9_fid *oldfid, char *newname)
+int p9_client_link(struct p9_fid *dfid, struct p9_fid *oldfid, const char *newname)
 {
        struct p9_client *clnt;
        struct p9_req_t *req;
 }
 EXPORT_SYMBOL(p9_client_readdir);
 
-int p9_client_mknod_dotl(struct p9_fid *fid, char *name, int mode,
+int p9_client_mknod_dotl(struct p9_fid *fid, const char *name, int mode,
                        dev_t rdev, kgid_t gid, struct p9_qid *qid)
 {
        int err;
 }
 EXPORT_SYMBOL(p9_client_mknod_dotl);
 
-int p9_client_mkdir_dotl(struct p9_fid *fid, char *name, int mode,
+int p9_client_mkdir_dotl(struct p9_fid *fid, const char *name, int mode,
                                kgid_t gid, struct p9_qid *qid)
 {
        int err;