On Mon, Sep 02, 2024 at 03:11:45PM GMT, Gao Xiang wrote: > > > On 2024/9/2 15:00, Yiyang Wu via Linux-erofs wrote: > > Remove open coding in erofs_fill_symlink. > > > > Suggested-by: Al Viro <[email protected]> > > Link: https://lore.kernel.org/all/20240425222847.GN2118490@ZenIV > > Signed-off-by: Yiyang Wu <[email protected]> > > --- > > fs/erofs/inode.c | 12 +++++------- > > 1 file changed, 5 insertions(+), 7 deletions(-) > > > > diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c > > index 419432be3223..d051afe39670 100644 > > --- a/fs/erofs/inode.c > > +++ b/fs/erofs/inode.c > > @@ -188,22 +188,20 @@ static int erofs_fill_symlink(struct inode *inode, > > void *kaddr, > > return 0; > > } > > - lnk = kmalloc(inode->i_size + 1, GFP_KERNEL); > > - if (!lnk) > > - return -ENOMEM; > > - > > m_pofs += vi->xattr_isize; > > /* inline symlink data shouldn't cross block boundary */ > > if (m_pofs + inode->i_size > bsz) { > > - kfree(lnk); > > erofs_err(inode->i_sb, > > "inline data cross block boundary @ nid %llu", > > vi->nid); > > DBG_BUGON(1); > > return -EFSCORRUPTED; > > } > > - memcpy(lnk, kaddr + m_pofs, inode->i_size); > > - lnk[inode->i_size] = '\0'; > > + > > + lnk = kmemdup_nul(kaddr + m_pofs, inode->i_size, GFP_KERNEL); > > + > > Unnecessary new line. > > Also I wonder if it's possible to just > inode->i_link = kmemdup_nul(kaddr + m_pofs, inode->i_size, GFP_KERNEL); > if (!inode->i_link) > return -ENOMEM; > > here, and get rid of variable lnk. > > Otherwise it looks good to me. > > Thanks, > Gao Xiang > Yeah, it looks good to me. Fixed. > > + if (!lnk) > > + return -ENOMEM; > > inode->i_link = lnk; > > inode->i_op = &erofs_fast_symlink_iops; >
Best Regards, Yiyang Wu
