> 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?