Re: [PATCH] libxfs: init ->b_maps on contig buffers for uncached compatibility

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jul 20, 2017 at 11:06:12AM -0400, Brian Foster wrote:
> There is a bit of an inconsistency in how ->b_maps is used for
> contiguous buffers between kernel libxfs and xfsprogs due to the
> independent buffer implementations. In the kernel, ->b_maps[0] is
> always intialized to a valid range and in xfsprogs, ->b_maps is only
> allocated for discontiguous buffers.
> 
> This can lead to confusion when dealing with uncached kernel buffers
> in common libxfs code because xfsprogs has no concept of uncached
> buffers. Kernel uncached buffers have ->b_bn == XFS_BUF_DADDR_NULL
> and ->b_maps[0] points to the physical block address. Block address
> checks in common code for kernel uncached buffers, such as in
> xfs_sb_verify(), therefore would need to check both places for an
> address or risk broken logic or userspace segfaults.
> 
> This problem currently manifests as an xfs_repair segfault due to a
> NULL ->b_maps access in xfs_sb_verify(). Note that this problem is
> only reproducible on builds with (-O2) optimization disabled, as the
> affected parameter is currently unused and thus optimization
> eliminates the problematic access.
> 
> To fix this problem and eliminate the incompatibility, update the
> userspace xfs_buf with an internal ->__b_map field and point
> ->b_maps to it for contiguous buffers, similar to the kernel buffer
> implementation. Set valid values in ->b_maps0] for contiguous

->b_maps[0]

> buffers so common code will continue to work regardless of whether a
> buffer is uncached in the kernel.
> 
> Signed-off-by: Brian Foster <bfoster@xxxxxxxxxx>

Looks right but I haven't compiled/tested it so:

Acked-by: Dave Chinner <dchinner@xxxxxxxxxx>

-Dave.
-- 
Dave Chinner
david@xxxxxxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux