Hi,
Ralf Friedl wrote,

> Eugene Rudoy wrote:
> >just wanted to point out that besides making the code more portable
> >the change suggested by James has another positive side effect. It
> >eliminates the need for the uClibc related and as of now unreliable
> >workaround added in the second hunk of e184a88 [1].
> >
> >Why unreliable? "statfs s"-variable is allocated on stack and is not
> >initialized (=zeroed) at all, neither on the caller nor on the callee
> >side. So the workaround works only in those cases where the stack (by
> >chance) contain zeros (bytes corresponding to f_frsize would be
> >enough).
> >
> >For the sake of completeness... The problem the code tries to
> >workaround could (as of now) be observed only on mips. See mips
> >specific libc/sysdeps/linux/mips/bits/statfs.h [2]. It contains
> >f_frsize in all its statfs* structs but doesn't signal it by defining
> >_STATFS_F_FRSIZE like e.g. libc/sysdeps/linux/common/bits/statfs.h [3]
> >does. This in turn results in libc/misc/statfs/statfs64.c [4] ignores
> >the field and doesn't copy it (like the comment to the workaround
> >states).
> >
> >statvfs doesn't have this problem, it always sets f_frsize (s. [5]).
> I just want to point out that while uClibc statvfs does always set f_frsize,
> currently on MIPS at least it doesn't use the value returned by the kernel,
> instead it copies the value from f_bsize, thus negating commit 
> https://git.busybox.net/busybox/commit/coreutils/df.c?id=8f4faa1e3db91fc7b50d633e6f9b2f04bf978bb2
> Additionally, the uClibc implementation always calls stat() on the supplied
> argument and for older kernel at least reads /proc/mounts, calls stat() on
> the entries and tries to determine the mount flags that statvfs returns but
> df doesn't use.
> 
> What about using statfs and adding a define to platform.h to determine
> whether the value returned by statfs contains f_frsize?
> To support the buggy implementation in uClic, f_frsize must be set to zero
> before the call and tested later, because it is left unmodified.

May be somebody can suggest a patch to fix the bug in uClibc?
I am always open for bugfixes.

best regards
 Waldemar
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to