On Mon, Aug 13, 2018 at 12:23:13AM -0700, Christoph Hellwig wrote: > > struct delayed_call *done) > > { > > + char *ptr; > > + > > ASSERT(XFS_I(inode)->i_df.if_flags & XFS_IFINLINE); > > - return XFS_I(inode)->i_df.if_u1.if_data; > > + > > + /* > > + * The VFS crashes on a NULL pointer, so return -EFSCORRUPTED if > > + * if_data is junk. > > + */ > > + ptr = XFS_I(inode)->i_df.if_u1.if_data; > > + return ptr ? ptr : ERR_PTR(-EFSCORRUPTED); > > } > > > > STATIC int > > Please simplify this to: > > > struct delayed_call *done) > > { > char *link = XFS_I(inode)->i_df.if_u1.if_data; > > ASSERT(XFS_I(inode)->i_df.if_flags & XFS_IFINLINE); > > + ptr = XFS_I(inode)->i_df.if_u1.if_data; > > if (!link) > return ERR_PTR(-EFSCORRUPTED); > return link; > > But be honest I'd much rather fix this in the caller than every fs. > Can you send a patch to Al to do that instead? Ok, I'll do that. --D