From 9615fb53182c986b0436918be2e7301ef776bdc1 Mon Sep 17 00:00:00 2001 From: 18721213663 Date: Mon, 18 Dec 2023 16:14:31 +0800 Subject: [PATCH 1/2] bugfix sharefs lookup Signed-off-by: 18721213663 --- fs/sharefs/lookup.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/sharefs/lookup.c b/fs/sharefs/lookup.c index a8a595d7a651..0b0c30ef46f1 100644 --- a/fs/sharefs/lookup.c +++ b/fs/sharefs/lookup.c @@ -294,15 +294,17 @@ struct dentry *sharefs_lookup(struct inode *dir, struct dentry *dentry, #ifdef CONFIG_SHAREFS_SUPPORT_OVERRIDE const struct cred *saved_cred = NULL; __u16 permission; +#endif + parent = dget_parent(dentry); + sharefs_get_lower_path(parent, &lower_parent_path); +#ifdef CONFIG_SHAREFS_SUPPORT_OVERRIDE saved_cred = sharefs_override_file_fsids(dir, &permission); if (!saved_cred) { ret = ERR_PTR(-ENOMEM); goto out_err; } #endif - parent = dget_parent(dentry); - sharefs_get_lower_path(parent, &lower_parent_path); /* allocate dentry private data. We free it in ->d_release */ err = new_dentry_private_data(dentry); @@ -315,7 +317,7 @@ struct dentry *sharefs_lookup(struct inode *dir, struct dentry *dentry, sharefs_err("sharefs_lookup error!"); goto out; } - + if (ret) dentry = ret; if (d_inode(dentry)) @@ -328,9 +330,9 @@ struct dentry *sharefs_lookup(struct inode *dir, struct dentry *dentry, out: #ifdef CONFIG_SHAREFS_SUPPORT_OVERRIDE sharefs_revert_fsids(saved_cred); - sharefs_put_lower_path(parent, &lower_parent_path); - dput(parent); out_err: #endif + sharefs_put_lower_path(parent, &lower_parent_path); + dput(parent); return ret; } -- Gitee From 348ab0944c1bb39c1742651c883eff2c365a518e Mon Sep 17 00:00:00 2001 From: runrunya Date: Sun, 24 Dec 2023 11:14:44 +0000 Subject: [PATCH 2/2] add judge null Signed-off-by: runrunya --- fs/hmdfs/inode.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/fs/hmdfs/inode.c b/fs/hmdfs/inode.c index b42ae2c730e7..0b3ec919c3e7 100644 --- a/fs/hmdfs/inode.c +++ b/fs/hmdfs/inode.c @@ -177,6 +177,10 @@ struct inode *hmdfs_iget5_locked_merge(struct super_block *sb, hmdfs_err("Received a invalid lower inode"); return NULL; } + if (unlikely(!hmdfs_d(fst_lo_d))) { + hmdfs_err("Received a invalid fsdata"); + return NULL; + } ia.ino.ino_raw = d_inode(fst_lo_d)->i_ino; ia.ino.dev_id = hmdfs_d(fst_lo_d)->device_id; @@ -199,6 +203,10 @@ struct inode *hmdfs_iget5_locked_cloud_merge(struct super_block *sb, hmdfs_err("Received a invalid lower inode"); return NULL; } + if (unlikely(!hmdfs_d(fst_lo_d))) { + hmdfs_err("Received a invalid fsdata"); + return NULL; + } ia.ino.ino_raw = d_inode(fst_lo_d)->i_ino; ia.ino.dev_id = hmdfs_d(fst_lo_d)->device_id; -- Gitee