path is assigned first, so it does not need to initialize the
assignment.
Signed-off-by: Li zeming <[email protected]>
---
fs/ext4/extents.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index 7669d154c05e0..4ab96f01a6f31 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -600,7 +600,7 @@ __read_extent_tree_block(const char *function, unsigned int line,
int ext4_ext_precache(struct inode *inode)
{
struct ext4_inode_info *ei = EXT4_I(inode);
- struct ext4_ext_path *path = NULL;
+ struct ext4_ext_path *path;
struct buffer_head *bh;
int i = 0, depth, ret = 0;
--
2.18.2
On Tue, Apr 02, 2024 at 10:41:40AM +0800, Li zeming wrote:
> path is assigned first, so it does not need to initialize the
> assignment.
That's technically true, but the compiler is perfectly capable of
optimizing it out. So it's harmless, and removing it does make the
code a bit more fragile, since it needs to be set so that the cleanup
code doesn't accidentally dereference an uninitialized pointer:
out:
up_read(&ei->i_data_sem);
ext4_free_ext_path(path);
return ret;
So if later on, we add code which does a "goto out" on an error,
before path gets initialized, that would be bad. So removing the
"unnecessary" set has no upside, and it has a potential disadvantage.
- Ted