On Tue, 16 Dec 2025 08:31:27 +0100 Natanael Copa <[email protected]> wrote:
> Use a bigger buffer on stack for getmntent_r so we can handle entries > with lines longer that 504 chars. > > This solves issue when running `mount -o remount,rw ...` in a docker > container on Fedora 43. > > ref: https://github.com/k0sproject/k0s/issues/6774 > ref: https://lists.busybox.net/pipermail/busybox/2025-December/091859.html > > function old new delta > mount_main 1402 1401 -1 > ------------------------------------------------------------------------------ > (add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-1) Total: -1 bytes > text data bss dec hex filename > 824613 14092 1864 840569 cd379 busybox_old > 824612 14092 1864 840568 cd378 busybox_unstripped > > Signed-off-by: Natanael Copa <[email protected]> > --- > util-linux/mount.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/util-linux/mount.c b/util-linux/mount.c > index d0f0ae1ad..c0db67ce4 100644 > --- a/util-linux/mount.c > +++ b/util-linux/mount.c > @@ -2283,6 +2283,7 @@ int mount_main(int argc UNUSED_PARAM, char **argv) > unsigned long cmdopt_flags; > unsigned opt; > struct mntent mtpair[2], *mtcur = mtpair; > + char buf[GETMNTENT_BUFSIZE * 2]; > IF_NOT_DESKTOP(const int nonroot = 0;) > > IF_DESKTOP(int nonroot = ) sanitize_env_if_suid(); > @@ -2395,9 +2396,9 @@ int mount_main(int argc UNUSED_PARAM, char **argv) > struct mntent *mtother = (mtcur==mtpair ? mtpair+1 : mtpair); > > // Get next fstab entry > - if (!getmntent_r(fstab, mtcur, getmntent_buf > - + (mtcur==mtpair ? GETMNTENT_BUFSIZE/2 > : 0), > - GETMNTENT_BUFSIZE/2) > + if (!getmntent_r(fstab, mtcur, buf > + + (mtcur==mtpair ? GETMNTENT_BUFSIZE : > 0), > + GETMNTENT_BUFSIZE) That doesn't look quite enough to me. I suspect there is a bit more code that looks at the 'second half' of the buffer. Depending on that code it might be better to do: char pair_buf[GETMNTENT_BUFSIZE]; ... if (!getmntent_r(fstab, mtcur, mtcur == mtpair ? pair_buf : getmntent_buf, GETMNT_ENT_BUFSIZE) David > ) { // End of fstab/mtab is reached > mtcur = mtother; // the thing we found last time > break; _______________________________________________ busybox mailing list [email protected] https://lists.busybox.net/mailman/listinfo/busybox
