copy_file_range test fails with linux 5.3+ on bionic

Bug #1853193 reported by Thadeu Lima de Souza Cascardo
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
GLibC
Fix Released
Medium
glibc (Ubuntu)
Fix Released
Medium
Unassigned
Bionic
Fix Released
Medium
Thadeu Lima de Souza Cascardo

Bug Description

[Impact]
When tested against newer versions of linux, glibc tests will fail as it makes some assumptions about supportead features on the kernel.

[Fix]
Do not run the test that checks that copy_file_range will fail with EXDEV when done across devices.

[Test case]
Build glibc and run its tests on linux 5.3.

[Regression potential]
The same test is being ignored right now, we risk ignoring a failure on an older version of linux, like 4.15. However, that could happen because the feature is backported to said kernel. And we are currently ignoring the failure anyway.

===================================

copy_file_range on linux 5.3 now works across devices, so EXDEV is not returned anymore on those cases. glibc, however, tests that is the case and its autopkgtest fails, then, when running on linux 5.3.

glibc 2.30 does not fail in that case anymore, so eoan glibc works fine on linux 5.3. However, the change on glibc 2.30 was to remove its userspace emulation entirely, and require users to fallback on their own.

https://sourceware.org/bugzilla/show_bug.cgi?id=24744

Linux commit 5dae222a5ff0c269730393018a5539cc970a4726.

CVE References

Revision history for this message
In , Florian Weimer (fweimer) wrote :

The kernel is evolving this interface rapidly, and our emulation is no longer faithful: Among other things, we do not detect overlapping copies (which is quite hard outside the kernel). The kernel also plans to support cross-device copies.

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The master branch has been updated by Florian Weimer <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5a659ccc0ec217ab02a4c273a1f6d346a359560a

commit 5a659ccc0ec217ab02a4c273a1f6d346a359560a
Author: Florian Weimer <email address hidden>
Date: Fri Jun 28 09:39:21 2019 +0200

    io: Remove copy_file_range emulation [BZ #24744]

    The kernel is evolving this interface (e.g., removal of the
    restriction on cross-device copies), and keeping up with that
    is difficult. Applications which need the function should
    run kernels which support the system call instead of relying on
    the imperfect glibc emulation.

    Reviewed-by: Adhemerval Zanella <email address hidden>

Revision history for this message
In , Florian Weimer (fweimer) wrote :

Fixed in glibc 2.30.

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The release/2.29/master branch has been updated by Florian Weimer <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=da347f4aa3a67e018f19e51a7ece6add87dba5cf

commit da347f4aa3a67e018f19e51a7ece6add87dba5cf
Author: Florian Weimer <email address hidden>
Date: Fri Jun 28 09:39:21 2019 +0200

    io: Remove copy_file_range emulation [BZ #24744]

    The kernel is evolving this interface (e.g., removal of the
    restriction on cross-device copies), and keeping up with that
    is difficult. Applications which need the function should
    run kernels which support the system call instead of relying on
    the imperfect glibc emulation.

    Reviewed-by: Adhemerval Zanella <email address hidden>
    (cherry picked from commit 5a659ccc0ec217ab02a4c273a1f6d346a359560a)

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The release/2.27/master branch has been updated by Florian Weimer <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=949da7f2fd0bc0f8dca91892e5c926504a7d11c2

commit 949da7f2fd0bc0f8dca91892e5c926504a7d11c2
Author: Florian Weimer <email address hidden>
Date: Fri Jun 28 09:39:21 2019 +0200

    io: Remove copy_file_range emulation [BZ #24744]

    The kernel is evolving this interface (e.g., removal of the
    restriction on cross-device copies), and keeping up with that
    is difficult. Applications which need the function should
    run kernels which support the system call instead of relying on
    the imperfect glibc emulation.

    Reviewed-by: Adhemerval Zanella <email address hidden>
    (cherry picked from commit 5a659ccc0ec217ab02a4c273a1f6d346a359560a)

Revision history for this message
In , Cvs-commit (cvs-commit) wrote :

The release/2.28/master branch has been updated by Florian Weimer <email address hidden>:

https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=5f7fa9ac30048bcc1d883cf52a544ea182882ee9

commit 5f7fa9ac30048bcc1d883cf52a544ea182882ee9
Author: Florian Weimer <email address hidden>
Date: Fri Jun 28 09:39:21 2019 +0200

    io: Remove copy_file_range emulation [BZ #24744]

    The kernel is evolving this interface (e.g., removal of the
    restriction on cross-device copies), and keeping up with that
    is difficult. Applications which need the function should
    run kernels which support the system call instead of relying on
    the imperfect glibc emulation.

    Reviewed-by: Adhemerval Zanella <email address hidden>
    (cherry picked from commit 5a659ccc0ec217ab02a4c273a1f6d346a359560a)

Changed in glibc (Ubuntu):
status: New → Invalid
Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :

I am sending a proposed patch. I am building a package that includes that patch on my ppa:cascardo/ppa. I will trigger tests against that and verify this really fixes the issue.

Changed in glibc (Ubuntu Bionic):
status: New → In Progress
assignee: nobody → Thadeu Lima de Souza Cascardo (cascardo)
Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :
description: updated
Mathew Hodson (mhodson)
tags: added: testcase
Changed in glibc (Ubuntu):
importance: Undecided → Medium
Changed in glibc (Ubuntu Bionic):
importance: Undecided → Medium
Revision history for this message
Mathew Hodson (mhodson) wrote :

This test was removed by upstream in recent versions.

Changed in glibc (Ubuntu):
status: Invalid → Fix Released
Changed in glibc:
importance: Unknown → Medium
status: Unknown → Fix Released
Revision history for this message
Steve Langasek (vorlon) wrote : Please test proposed package

Hello Thadeu, or anyone else affected,

Accepted glibc into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/glibc/2.27-3ubuntu1.3 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in glibc (Ubuntu Bionic):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-bionic
Revision history for this message
Thadeu Lima de Souza Cascardo (cascardo) wrote :
tags: added: verification-done-bionic
removed: verification-needed-bionic
Revision history for this message
Ubuntu SRU Bot (ubuntu-sru-bot) wrote : Autopkgtest regression report (glibc/2.27-3ubuntu1.3)
Download full text (6.9 KiB)

All autopkgtests for the newly accepted glibc (2.27-3ubuntu1.3) for bionic have finished running.
The following regressions have been reported in tests triggered by the package:

mysql-5.7/5.7.31-0ubuntu0.18.04.1 (armhf)
libsys-utmp-perl/1.8-1 (armhf)
libscope-upper-perl/0.30-1 (armhf)
octave-miscellaneous/1.2.1-4 (armhf, arm64, s390x, amd64, i386, ppc64el)
libsocket-multicast6-perl/unknown (armhf)
octave-strings/1.2.0-3 (armhf, arm64, s390x, amd64, i386, ppc64el)
libgnatcoll/unknown (armhf)
octave-econometrics/1:1.1.1-5 (armhf, arm64, s390x, amd64, i386, ppc64el)
octave-secs2d/0.0.8-9 (armhf, arm64, s390x, amd64, i386, ppc64el)
libb-hooks-parser-perl/unknown (armhf)
octave-general/2.0.0-3 (armhf, arm64, s390x, amd64, i386, ppc64el)
libcompress-raw-bzip2-perl/2.074-1build2 (armhf)
libunicode-casefold-perl/unknown (armhf)
mod-wsgi/4.5.17-1ubuntu1 (ppc64el)
libdata-alias-perl/unknown (armhf)
libdata-clone-perl/unknown (armhf)
libsort-key-perl/unknown (armhf)
linux-raspi-5.4/5.4.0-1018.20~18.04.1 (armhf)
ann/unknown (armhf)
icecast2/unknown (i386)
python-maxminddb/1.3.0-1 (armhf)
lua-torch-sundown/unknown (armhf)
libkf5mailcommon/4:17.12.3-0ubuntu1 (arm64, i386)
apport/2.20.9-0ubuntu7.17 (amd64)
linux-hwe-5.0/5.0.0-61.65 (armhf)
ffmpeg/7:3.4.8-0ubuntu0.2 (armhf, arm64, s390x, amd64, i386, ppc64el)
glibc/2.27-3ubuntu1.3 (armhf)
nut/2.7.4-5.1ubuntu2 (amd64)
mbuffer/unknown (armhf)
linux-aws-edge/5.0.0-1019.21~18.04.1 (amd64, arm64)
octave-ocs/0.1.5-6 (armhf, arm64, s390x, amd64, i386, ppc64el)
libx11-xcb-perl/unknown (armhf)
pgbouncer/1.8.1-1build1 (amd64)
indicator-session/17.3.20+17.10.20171006-0ubuntu1 (armhf)
gcc-6/6.5.0-2ubuntu1~18.04 (armhf)
vmtouch/unknown (armhf)
libhtml-gumbo-perl/0.17-1build1 (ppc64el)
octave-sparsersb/1.0.5-3 (armhf, arm64, s390x, amd64, i386, ppc64el)
octave-mpi/1.2.0-4 (armhf, arm64, s390x, amd64, i386, ppc64el)
libalgorithm-svm-perl/0.13-2build2 (s390x)
libconvert-binary-c-perl/0.78-1build2 (amd64)
kauth/5.44.0-0ubuntu1 (i386)
libkdegames-kde4/unknown (amd64)
openssh/1:7.6p1-4ubuntu0.3 (armhf, arm64, s390x, amd64, i386, ppc64el)
keditbookmarks/17.12.3-0ubuntu1 (ppc64el)
jovie/unknown (armhf)
kdepim-runtime/4:17.12.3-0ubuntu2 (armhf)
libscalar-util-numeric-perl/0.40-1build3 (s390x)
pgpdump/unknown (armhf)
libdevice-cdio-perl/0.4.0-3 (armhf)
octave-sockets/1.2.0-3 (armhf, arm64, s390x, amd64, i386, ppc64el)
octave-gsl/2.1.0-3 (armhf, arm64, s390x, amd64, i386, ppc64el)
libdbd-odbc-perl/1.56-1build1 (armhf)
libnet-dbus-perl/1.1.0-4build2 (armhf)
linux-aws-5.3/unknown (arm64)
libalgorithm-permute-perl/0.16-1 (s390x)
xdg-desktop-portal/1.0.3-0ubuntu0.2 (i386, ppc64el)
octave-ltfat/2.2.0+dfsg-7 (s390x, amd64, i386, ppc64el)
octave-geometry/3.0.0-6 (armhf, arm64, s390x, amd64, i386, ppc64el)
octave-linear-algebra/2.2.2-4 (armhf, arm64, s390x, amd64, i386, ppc64el)
octave-nurbs/1.3.13-4 (armhf, arm64, s390x, amd64, i386, ppc64el)
devscripts/2.17.12ubuntu1.1 (armhf, arm64, s390x, amd64, i386, ppc64el)
meliae/0.4.0+bzr199-3build1 (ppc64el)
libocas/unknown (armhf)
k3d/unknown (armhf)
firefox/80.0.1+build1-0ubuntu0.18.04.1 (armhf)
libb-hooks-op-check-perl/unknown (armhf)
octave-quaternion/2.4.0-4 (armhf, arm64, s390x, amd64, i38...

Read more...

Revision history for this message
Łukasz Zemczak (sil2100) wrote : Update Released

The verification of the Stable Release Update for glibc has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package glibc - 2.27-3ubuntu1.3

---------------
glibc (2.27-3ubuntu1.3) bionic; urgency=medium

  [ Balint Reczey ]
  * debian/gbp.conf: Add initial configuration
  * debian/control.in/main: Add Vcs-* pointing to Ubuntu packaging repository
  * arm64: Enable searching shared libraries in atomics/ on LSE HW
  * Ship arm64 variant with LSE support in libc6-lse (LP: #1885012)
  * Run tests of libc6-lse on HW supporting LSE
  * debian/patches/git-updates.diff: update from upstream stable branch
    - pthread_cond_broadcast: Fix waiters-after-spinning case
    - Fix SSe2-based memmove corrupting memory (CVE-2017-18269)
    - Fix strstr() performance regression on Haswell processors
    - Support Japanese new era "令和 (Reiwa)"
    - io: Remove copy_file_range emulation
    (LP: #1851263, #1858203, #1838327, #1797335, #1756209, #1853193)
  * XFAIL stdlib/tst-getrandom (LP: #1891403)
  * debian/testsuite-xfail-debian.mk: XFAIL new tst-support_descriptors

  [ Thadeu Lima de Souza Cascardo ]
  * tests: Make preadwritev2 invalid flags tests unsupported (LP: #1770480)

  [ Andreas Hasenack ]
  * branch-pthread_rwlock_trywrlock-hang-23844.patch:
    nptl: Fix pthread_rwlock_try*lock stalls (Bug 23844) (LP: #1864864)

 -- Balint Reczey <email address hidden> Wed, 02 Sep 2020 11:18:37 +0200

Changed in glibc (Ubuntu Bionic):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.