vfs: fix up r351193 ("stop always overwriting ->mnt_stat in VFS_STATFS")
fs-specific part of vfs_statfs routines only fill in small portion of the structure. Previous code was always copying everything at a higher layer to acoomodate it and this patch does the same. 'df' (no arguments) worked fine because the caller uses mnt_stat itself as the target buffer, making all the copying a no-op for its own case. 'df /' and similar use a different consumer which passes its own buffer and this is where you can run into trouble. Reported by: cy Fixes: r351193 Sponsored by: The FreeBSD Foundation
This commit is contained in:
parent
700a658772
commit
2147ca90db
@ -1832,6 +1832,12 @@ int
|
||||
__vfs_statfs(struct mount *mp, struct statfs *sbp)
|
||||
{
|
||||
|
||||
/*
|
||||
* Filesystems only fill in part of the structure for updates, we
|
||||
* have to read the entirety first to get all content.
|
||||
*/
|
||||
memcpy(sbp, &mp->mnt_stat, sizeof(*sbp));
|
||||
|
||||
/*
|
||||
* Set these in case the underlying filesystem fails to do so.
|
||||
*/
|
||||
|
Loading…
x
Reference in New Issue
Block a user