Message ID | b109b7dc-3972-4b2e-ae4c-89bf8eecf8f2@web.de (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | hugetlbfs: Adjustments for two function implementations | expand |
On Fri, Dec 29, 2023 at 12:40:12PM +0100, Markus Elfring wrote: > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index 24401a5046dd..5687ec574dc4 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -1483,7 +1483,7 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) > ctx->max_hpages, > ctx->min_hpages); > if (!sbinfo->spool) > - goto out_free; > + goto free_sbinfo; > } > sb->s_maxbytes = MAX_LFS_FILESIZE; > sb->s_blocksize = huge_page_size(ctx->hstate); > @@ -1499,10 +1499,12 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) > sb->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH; > sb->s_root = d_make_root(hugetlbfs_get_root(sb, ctx)); > if (!sb->s_root) > - goto out_free; > + goto free_spool; > return 0; > -out_free: > + > +free_spool: > kfree(sbinfo->spool); > +free_sbinfo: > kfree(sbinfo); > return -ENOMEM; > } This is more complex. NACK.
>> +++ b/fs/hugetlbfs/inode.c >> @@ -1483,7 +1483,7 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) >> ctx->max_hpages, >> ctx->min_hpages); >> if (!sbinfo->spool) >> - goto out_free; >> + goto free_sbinfo; >> } >> sb->s_maxbytes = MAX_LFS_FILESIZE; >> sb->s_blocksize = huge_page_size(ctx->hstate); >> @@ -1499,10 +1499,12 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) >> sb->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH; >> sb->s_root = d_make_root(hugetlbfs_get_root(sb, ctx)); >> if (!sb->s_root) >> - goto out_free; >> + goto free_spool; >> return 0; >> -out_free: >> + >> +free_spool: >> kfree(sbinfo->spool); >> +free_sbinfo: >> kfree(sbinfo); >> return -ENOMEM; >> } > > This is more complex. NACK. I am curious how coding style preferences will evolve further. See also: https://wiki.sei.cmu.edu/confluence/display/c/MEM12-C.+Consider+using+a+goto+chain+when+leaving+a+function+on+error+when+using+and+releasing+resources Regards, Markus
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 24401a5046dd..5687ec574dc4 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -1483,7 +1483,7 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) ctx->max_hpages, ctx->min_hpages); if (!sbinfo->spool) - goto out_free; + goto free_sbinfo; } sb->s_maxbytes = MAX_LFS_FILESIZE; sb->s_blocksize = huge_page_size(ctx->hstate); @@ -1499,10 +1499,12 @@ hugetlbfs_fill_super(struct super_block *sb, struct fs_context *fc) sb->s_stack_depth = FILESYSTEM_MAX_STACK_DEPTH; sb->s_root = d_make_root(hugetlbfs_get_root(sb, ctx)); if (!sb->s_root) - goto out_free; + goto free_spool; return 0; -out_free: + +free_spool: kfree(sbinfo->spool); +free_sbinfo: kfree(sbinfo); return -ENOMEM; }