Message ID | 20200826153912.GN6096@magnolia (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [v2] xfs: initialize the shortform attr header padding entry | expand |
On 8/26/20 10:39 AM, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > Don't leak kernel memory contents into the shortform attr fork. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> > --- > v2: memset instead of setting padding by hand yeah I think that's good. Reviewed-by: Eric Sandeen <sandeen@redhat.com> > --- > fs/xfs/libxfs/xfs_attr_leaf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c > index 8623c815164a..e730586bff85 100644 > --- a/fs/xfs/libxfs/xfs_attr_leaf.c > +++ b/fs/xfs/libxfs/xfs_attr_leaf.c > @@ -653,8 +653,8 @@ xfs_attr_shortform_create( > ASSERT(ifp->if_flags & XFS_IFINLINE); > } > xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK); > - hdr = (xfs_attr_sf_hdr_t *)ifp->if_u1.if_data; > - hdr->count = 0; > + hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; > + memset(hdr, 0, sizeof(*hdr)); > hdr->totsize = cpu_to_be16(sizeof(*hdr)); > xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); > } >
On Wed, Aug 26, 2020 at 08:39:22AM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@oracle.com> > > Don't leak kernel memory contents into the shortform attr fork. > > Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> > --- > v2: memset instead of setting padding by hand > --- > fs/xfs/libxfs/xfs_attr_leaf.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c > index 8623c815164a..e730586bff85 100644 > --- a/fs/xfs/libxfs/xfs_attr_leaf.c > +++ b/fs/xfs/libxfs/xfs_attr_leaf.c > @@ -653,8 +653,8 @@ xfs_attr_shortform_create( > ASSERT(ifp->if_flags & XFS_IFINLINE); > } > xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK); > - hdr = (xfs_attr_sf_hdr_t *)ifp->if_u1.if_data; > - hdr->count = 0; > + hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; > + memset(hdr, 0, sizeof(*hdr)); > hdr->totsize = cpu_to_be16(sizeof(*hdr)); > xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); > } Looks good. Reviewed-by: Dave Chinner <dchinner@redhat.com>
diff --git a/fs/xfs/libxfs/xfs_attr_leaf.c b/fs/xfs/libxfs/xfs_attr_leaf.c index 8623c815164a..e730586bff85 100644 --- a/fs/xfs/libxfs/xfs_attr_leaf.c +++ b/fs/xfs/libxfs/xfs_attr_leaf.c @@ -653,8 +653,8 @@ xfs_attr_shortform_create( ASSERT(ifp->if_flags & XFS_IFINLINE); } xfs_idata_realloc(dp, sizeof(*hdr), XFS_ATTR_FORK); - hdr = (xfs_attr_sf_hdr_t *)ifp->if_u1.if_data; - hdr->count = 0; + hdr = (struct xfs_attr_sf_hdr *)ifp->if_u1.if_data; + memset(hdr, 0, sizeof(*hdr)); hdr->totsize = cpu_to_be16(sizeof(*hdr)); xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); }