xfs: cow unwritten conversion uses uninitialized dfops
PATCH 1/1 xfs: cow unwritten conversion uses uninitialized dfops
A couple COW fork unwritten extent conversion helpers pass an uninitialized dfops pointer to xfs_bmapi_write(). This does not cause problems because conversion does not use a transaction or the dfops structure for the COW fork. Drop the uninitialized usage of dfops in these codepaths and pass NULL along to xfs_bmapi_write() instead.
--- fs/xfs/xfs_reflink.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)
fs/xfs/xfs_reflink.c +4 -7
@@ -312,8 +312,7 @@ xfs_reflink_convert_cow_extent(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, xfs_fileoff_t offset_fsb, - xfs_filblks_t count_fsb, - struct xfs_defer_ops *dfops) + xfs_filblks_t count_fsb) { xfs_fsblock_t first_block = NULLFSBLOCK;int nimaps =1 ;
@@ -327,7 +326,7 @@ xfs_reflink_convert_cow_extent(return 0 ;return xfs_bmapi_write (NULL , ip, imap->br_startoff, imap->br_blockcount,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT , &first_block, -0 , imap, &nimaps, dfops); +0 , imap, &nimaps,NULL ); }/* Convert all of the unwritten CoW extents in a file's range to real ones. */
@@ -342,7 +341,6 @@ xfs_reflink_convert_cow(xfs_fileoff_t end_fsb =XFS_B_TO_FSB (mp, offset + count);xfs_filblks_t count_fsb = end_fsb - offset_fsb;struct xfs_bmbt_irec imap; -struct xfs_defer_ops dfops;xfs_fsblock_t first_block =NULLFSBLOCK ;int nimaps =1 , error =0 ;
@@ -352,7 +350,7 @@ xfs_reflink_convert_cow( error =xfs_bmapi_write (NULL , ip, offset_fsb, count_fsb,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT |XFS_BMAPI_CONVERT_ONLY , &first_block,0 , &imap, &nimaps, - &dfops); +NULL );xfs_iunlock (ip,XFS_ILOCK_EXCL );return error; }
@@ -458,8 +456,7 @@ xfs_reflink_allocate_cow(if (nimaps ==0 )return -ENOSPC ; convert: -return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb, - &dfops); +return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb); out_bmap_cancel:xfs_defer_cancel (&dfops); xfs_trans_unreserve_quota_nblks(tp, ip, (long)resblks, 0,
Signature · 1 line
2.17.1
Quoted 8 lines · Brian Foster
A couple COW fork unwritten extent conversion helpers pass an uninitialized dfops pointer to
xfs_bmapi_write(). This does not cause problems because conversion does not use a transaction or the dfops structure for the COW fork. Drop the uninitialized usage of dfops in these codepaths and pass NULL along toxfs_bmapi_write()instead.Signed-off-by Brian Foster <[email protected]>
Looks reasonable, will test...
--D
Quoted 61 lines
--- fs/xfs/xfs_reflink.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)fs/xfs/xfs_reflink.c +4
-7@@ -312,8 +312,7 @@ xfs_reflink_convert_cow_extent(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, xfs_fileoff_t offset_fsb, - xfs_filblks_t count_fsb, - struct xfs_defer_ops *dfops) + xfs_filblks_t count_fsb) { xfs_fsblock_t first_block = NULLFSBLOCK;int nimaps =1 ;@@ -327,7 +326,7 @@ xfs_reflink_convert_cow_extent(return 0 ;return xfs_bmapi_write (NULL , ip, imap->br_startoff, imap->br_blockcount,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT , &first_block, -0 , imap, &nimaps, dfops); +0 , imap, &nimaps,NULL ); }/* Convert all of the unwritten CoW extents in a file's range to real ones. */ @@ -342,7 +341,6 @@ xfs_reflink_convert_cow(xfs_fileoff_t end_fsb =XFS_B_TO_FSB (mp, offset + count);xfs_filblks_t count_fsb = end_fsb - offset_fsb;struct xfs_bmbt_irec imap; -struct xfs_defer_ops dfops;xfs_fsblock_t first_block =NULLFSBLOCK ;int nimaps =1 , error =0 ;@@ -352,7 +350,7 @@ xfs_reflink_convert_cow( error =xfs_bmapi_write (NULL , ip, offset_fsb, count_fsb,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT |XFS_BMAPI_CONVERT_ONLY , &first_block,0 , &imap, &nimaps, - &dfops); +NULL );xfs_iunlock (ip,XFS_ILOCK_EXCL );return error; }@@ -458,8 +456,7 @@ xfs_reflink_allocate_cow(if (nimaps ==0 )return -ENOSPC ; convert: -return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb, - &dfops); +return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb); out_bmap_cancel:xfs_defer_cancel (&dfops); xfs_trans_unreserve_quota_nblks(tp, ip, (long)resblks, 0,Signature · 6 lines
2.17.1 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 7 lines · Brian Foster
A couple COW fork unwritten extent conversion helpers pass an uninitialized dfops pointer to
xfs_bmapi_write(). This does not cause problems because conversion does not use a transaction or the dfops structure for the COW fork. Drop the uninitialized usage of dfops in these codepaths and pass NULL along toxfs_bmapi_write()instead.
This looks ok for me, you can add:
Quoted 62 lines
Signed-off-by Brian Foster <[email protected]>--- fs/xfs/xfs_reflink.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-)fs/xfs/xfs_reflink.c +4
-7@@ -312,8 +312,7 @@ xfs_reflink_convert_cow_extent(struct xfs_inode *ip, struct xfs_bmbt_irec *imap, xfs_fileoff_t offset_fsb, - xfs_filblks_t count_fsb, - struct xfs_defer_ops *dfops) + xfs_filblks_t count_fsb) { xfs_fsblock_t first_block = NULLFSBLOCK;int nimaps =1 ;@@ -327,7 +326,7 @@ xfs_reflink_convert_cow_extent(return 0 ;return xfs_bmapi_write (NULL , ip, imap->br_startoff, imap->br_blockcount,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT , &first_block, -0 , imap, &nimaps, dfops); +0 , imap, &nimaps,NULL ); }/* Convert all of the unwritten CoW extents in a file's range to real ones. */ @@ -342,7 +341,6 @@ xfs_reflink_convert_cow(xfs_fileoff_t end_fsb =XFS_B_TO_FSB (mp, offset + count);xfs_filblks_t count_fsb = end_fsb - offset_fsb;struct xfs_bmbt_irec imap; -struct xfs_defer_ops dfops;xfs_fsblock_t first_block =NULLFSBLOCK ;int nimaps =1 , error =0 ;@@ -352,7 +350,7 @@ xfs_reflink_convert_cow( error =xfs_bmapi_write (NULL , ip, offset_fsb, count_fsb,XFS_BMAPI_COWFORK |XFS_BMAPI_CONVERT |XFS_BMAPI_CONVERT_ONLY , &first_block,0 , &imap, &nimaps, - &dfops); +NULL );xfs_iunlock (ip,XFS_ILOCK_EXCL );return error; }@@ -458,8 +456,7 @@ xfs_reflink_allocate_cow(if (nimaps ==0 )return -ENOSPC ; convert: -return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb, - &dfops); +return xfs_reflink_convert_cow_extent (ip, imap, offset_fsb, count_fsb); out_bmap_cancel:xfs_defer_cancel (&dfops); xfs_trans_unreserve_quota_nblks(tp, ip, (long)resblks, 0,Signature · 6 lines
2.17.1 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 1 line
Carlos