From: Al Viro Date: Mon, 31 Jan 2022 02:15:36 +0000 (-0500) Subject: tomoyo: struct path it might get from LSM callers won't have NULL dentry or mnt X-Git-Tag: v6.6.17~6478^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=467cf8ef88d3124c189e2ff4726fe5247a88fe46;p=platform%2Fkernel%2Flinux-rpi.git tomoyo: struct path it might get from LSM callers won't have NULL dentry or mnt Acked-by: Tetsuo Handa Signed-off-by: Al Viro --- diff --git a/security/tomoyo/file.c b/security/tomoyo/file.c index 1e60775..8f3b90b6 100644 --- a/security/tomoyo/file.c +++ b/security/tomoyo/file.c @@ -717,7 +717,7 @@ int tomoyo_path_number_perm(const u8 type, const struct path *path, int idx; if (tomoyo_init_request_info(&r, NULL, tomoyo_pn2mac[type]) - == TOMOYO_CONFIG_DISABLED || !path->dentry) + == TOMOYO_CONFIG_DISABLED) return 0; idx = tomoyo_read_lock(); if (!tomoyo_get_realpath(&buf, path)) diff --git a/security/tomoyo/realpath.c b/security/tomoyo/realpath.c index df47989..1c483ee 100644 --- a/security/tomoyo/realpath.c +++ b/security/tomoyo/realpath.c @@ -240,11 +240,8 @@ char *tomoyo_realpath_from_path(const struct path *path) char *name = NULL; unsigned int buf_len = PAGE_SIZE / 2; struct dentry *dentry = path->dentry; - struct super_block *sb; + struct super_block *sb = dentry->d_sb; - if (!dentry) - return NULL; - sb = dentry->d_sb; while (1) { char *pos; struct inode *inode; @@ -264,10 +261,8 @@ char *tomoyo_realpath_from_path(const struct path *path) inode = d_backing_inode(sb->s_root); /* * Get local name for filesystems without rename() operation - * or dentry without vfsmount. */ - if (!path->mnt || - (!inode->i_op->rename && + if ((!inode->i_op->rename && !(sb->s_type->fs_flags & FS_REQUIRES_DEV))) pos = tomoyo_get_local_path(path->dentry, buf, buf_len - 1);