128 lines
4.7 KiB
Text
128 lines
4.7 KiB
Text
-----BEGIN PGP SIGNED MESSAGE-----
|
|
Hash: SHA512
|
|
|
|
=============================================================================
|
|
FreeBSD-EN-16:06.libc Errata Notice
|
|
The FreeBSD Project
|
|
|
|
Topic: Performance regression in libc hash(3)
|
|
|
|
Category: core
|
|
Module: libc / hash(3)
|
|
Announced: 2016-05-04
|
|
Credits: Bryan Drewery, Baptiste Daroussin
|
|
Affects: FreeBSD 10.3-RELEASE
|
|
Corrected: 2016-04-13 01:54:36 UTC (stable/10, 10.3-STABLE)
|
|
2016-05-04 15:25:47 UTC (releng/10.3, 10.3-RELEASE-p2)
|
|
|
|
For general information regarding FreeBSD Errata Notices and Security
|
|
Advisories, including descriptions of the fields above, security branches,
|
|
and the following sections, please visit
|
|
<URL:https://security.freebsd.org/>.
|
|
|
|
I. Background
|
|
|
|
The dbopen(3) with DB_HASH allows reading and writing to database files
|
|
in the hash(3) format. Examples of such files are the system master
|
|
passwd and services databases in /etc. In FreeBSD 10.3 operations
|
|
using dbopen(3) were fixed to always call fsync(2) on their files when
|
|
writing to ensure they were consistent after a power loss. This was
|
|
mostly noticeable for the user and group database files after using
|
|
pw, vipw, chpass, etc.
|
|
|
|
II. Problem Description
|
|
|
|
The changes in FreeBSD 10.3 to use fsync(2) were improperly extended to
|
|
operations that were read-only.
|
|
|
|
III. Impact
|
|
|
|
This could manifest as extreme slowdowns in operations that read from one
|
|
of these files, such as the user database. It was especially noticeable
|
|
during the use of "pkg install" since it reads from the user database. It
|
|
could also incur excessive I/O writes to these files if the file system
|
|
was not mounted with noatime which could lessen the lifetime of SSD.
|
|
|
|
IV. Workaround
|
|
|
|
No workaround is available.
|
|
|
|
V. Solution
|
|
|
|
Perform one of the following:
|
|
|
|
1) Upgrade your system to a supported FreeBSD stable or release / security
|
|
branch (releng) dated after the correction date.
|
|
|
|
2) To update your present system via a binary patch:
|
|
|
|
Systems running a RELEASE version of FreeBSD on the i386 or amd64
|
|
platforms can be updated via the freebsd-update(8) utility:
|
|
|
|
# freebsd-update fetch
|
|
# freebsd-update install
|
|
|
|
3) To update your present system via a source code patch:
|
|
|
|
The following patches have been verified to apply to the applicable
|
|
FreeBSD release branches.
|
|
|
|
a) Download the relevant patch from the location below, and verify the
|
|
detached PGP signature using your PGP utility.
|
|
|
|
[FreeBSD 10.3]
|
|
# fetch https://security.FreeBSD.org/patches/EN-16:06/libc.patch
|
|
# fetch https://security.FreeBSD.org/patches/EN-16:06/libc.patch.asc
|
|
# gpg --verify libc.patch.asc
|
|
|
|
b) Apply the patch. Execute the following commands as root:
|
|
|
|
# cd /usr/src
|
|
# patch < /path/to/patch
|
|
|
|
c) Recompile the operating system using buildworld and installworld as
|
|
described in <URL:https://www.FreeBSD.org/handbook/makeworld.html>.
|
|
|
|
Restart all daemons that use the library, or reboot the system.
|
|
|
|
VI. Correction details
|
|
|
|
The following list contains the correction revision numbers for each
|
|
affected branch.
|
|
|
|
Branch/path Revision
|
|
- -------------------------------------------------------------------------
|
|
stable/10/ r297904
|
|
releng/10.3/ r299066
|
|
- -------------------------------------------------------------------------
|
|
|
|
To see which files were modified by a particular revision, run the
|
|
following command, replacing NNNNNN with the revision number, on a
|
|
machine with Subversion installed:
|
|
|
|
# svn diff -cNNNNNN --summarize svn://svn.freebsd.org/base
|
|
|
|
Or visit the following URL, replacing NNNNNN with the revision number:
|
|
|
|
<URL:https://svnweb.freebsd.org/base?view=revision&revision=NNNNNN>
|
|
|
|
VII. References
|
|
|
|
The latest revision of this Errata Notice is available at
|
|
https://security.FreeBSD.org/advisories/FreeBSD-EN-16:06.libc.asc
|
|
-----BEGIN PGP SIGNATURE-----
|
|
|
|
iQIcBAEBCgAGBQJXKj2JAAoJEO1n7NZdz2rnAqUQAKQmHsqyFPwl+yva/Is8U0Z+
|
|
iuMnGAa9zp422ESLF8wczAYIQxv2wNuPAupuZGdDD5vnt8AJNEhs84xq9RW63AxM
|
|
V1YQAsNzMTeP4xhGJbrLXPgS5tgB59Rwj0OmIjrbyi4rmDMVGl0Ok0XRr+L+c9KV
|
|
dZhUSTmtlR005887aEoUe7Ujnqn4TljijaK/mD2YhGoE5Xkx5yOzJoO3ajCkyY61
|
|
qSFVDqKP+pGgazt9gXpf7vtj4tw+TUqCMH3lj+LF4I7QfbAATYqwXo6pPVxSdZAY
|
|
D8qFR7h31Rpb7ImnSLiULGkZvV5cJrbHJQR63ty1WF6y5qur1La4EfTDDhqqkz3I
|
|
hvC8PCgAu11E55TsDeFUAFibjWZZvcqoYG3taWAKc9JlOHd5+cKoXVAzGTX4a/B7
|
|
V0r5WH9AmmcodE7oRo90yFhUuv28G9T/z7a7bihaD6Cu2+3C7ez9f8cyD2x/FYJV
|
|
Y7wF3Ey4faybuaXBmxrbq3aJQYPe4knfvigmLoJNbCgIutvCiDVue/BxXaZ97Zc3
|
|
RxPx7+SQo18R83u/iGgYIgs5MAsLLDphwETQhAi8ZUsSO/YVb4Od0ScCHaHC/byp
|
|
CdSC7DW56wiqYYyFjAe5/MQIIv8cvNLtekiaiUhAf36DrstglbSwOTw7x2kMcguk
|
|
KLNONz99Am4A/sIHhizX
|
|
=p2R6
|
|
-----END PGP SIGNATURE-----
|