FreeBSD 7.2-RELEASE Release Notes

The FreeBSD Project

$FreeBSD: releng/7.2/release/doc/en_US.ISO8859-1/relnotes/article.sgml 191705 2009-04-30 21:20:09Z hrs $

FreeBSD is a registered trademark of the FreeBSD Foundation.

IBM, AIX, EtherJet, Netfinity, OS/2, PowerPC, PS/2, S/390, and ThinkPad are trademarks of International Business Machines Corporation in the United States, other countries, or both.

IEEE, POSIX, and 802 are registered trademarks of Institute of Electrical and Electronics Engineers, Inc. in the United States.

Intel, Celeron, EtherExpress, i386, i486, Itanium, Pentium, and Xeon are trademarks or registered trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

Microsoft, IntelliMouse, MS-DOS, Outlook, Windows, Windows Media and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

Sparc, Sparc64, SPARCEngine, and UltraSPARC are trademarks of SPARC International, Inc in the United States and other countries. Products bearing SPARC trademarks are based upon architecture developed by Sun Microsystems, Inc.

Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this document, and the FreeBSD Project was aware of the trademark claim, the designations have been followed by the “™” or the “®” symbol.

The release notes for FreeBSD 7.2-RELEASE contain a summary of the changes made to the FreeBSD base system on the 7.2-STABLE development line. This document lists applicable security advisories that were issued since the last release, as well as significant changes to the FreeBSD kernel and userland. Some brief remarks on upgrading are also presented.


Table of Contents
1 Introduction
2 What's New
2.1 Security Advisories
2.2 Kernel Changes
2.2.1 Boot Loader Changes
2.2.2 Hardware Support
2.2.3 Network Protocols
2.2.4 Disks and Storage
2.2.5 File Systems
2.3 Userland Changes
2.4 Contributed Software
2.5 Ports/Packages Collection Infrastructure
2.6 Release Engineering and Integration
3 Upgrading from previous releases of FreeBSD

1 Introduction

This document contains the release notes for FreeBSD 7.2-RELEASE. It describes recently added, changed, or deleted features of FreeBSD. It also provides some notes on upgrading from previous versions of FreeBSD.

This distribution of FreeBSD 7.2-RELEASE is a release distribution. It can be found at ftp://ftp.FreeBSD.org/ or any of its mirrors. More information on obtaining this (or other) release distributions of FreeBSD can be found in the “Obtaining FreeBSD” appendix to the FreeBSD Handbook.

All users are encouraged to consult the release errata before installing FreeBSD. The errata document is updated with “late-breaking” information discovered late in the release cycle or after the release. Typically, it contains information on known bugs, security advisories, and corrections to documentation. An up-to-date copy of the errata for FreeBSD 7.2-RELEASE can be found on the FreeBSD Web site.


2 What's New

This section describes the most user-visible new or changed features in FreeBSD since 7.1-RELEASE.

Typical release note items document recent security advisories issued after 7.1-RELEASE, new drivers or hardware support, new commands or options, major bug fixes, or contributed software upgrades. They may also list changes to major ports/packages or release engineering practices. Clearly the release notes cannot list every single change made to FreeBSD between releases; this document focuses primarily on security advisories, user-visible changes, and major architectural improvements.


2.1 Security Advisories

Problems described in the following security advisories have been fixed. For more information, consult the individual advisories available from http://security.FreeBSD.org/.

Advisory Date Topic
SA-09:01.lukemftpd 07 January 2009

Cross-site request forgery in lukemftpd(8)

SA-09:02.openssl 07 January 2009

OpenSSL incorrectly checks for malformed signatures

SA-09:03.ntpd 13 January 2009

ntpd cryptographic signature bypass

SA-09:04.bind 13 January 2009

BIND DNSSEC incorrect checks for malformed signatures

SA-09:05.telnetd 16 February 2009

telnetd code execution vulnerability

SA-09:06.ktimer 23 March 2009

Local privilege escalation

SA-09:07.libc 04 April 2009

Information leak in db(3)

SA-09:08.openssl 22 April 2009

Remotely exploitable crash in OpenSSL


2.2 Kernel Changes

The ddb(8) kernel debugger now supports a show mount subcommand.

The FreeBSD DTrace subsystem now supports a probe for process execution.

[amd64] The FreeBSD kernel virtual address space has been increased to 6GB. This allows subsystems to use larger virtual memory space than before. For example, zfs(8) adaptive replacement cache (ARC) requires large kernel memory space to cache file system data, so it benefits from the increased address space. Note that the ceiling on the kernel map size is now 60% of the size rather than an absolute quantity.

The jail(8) subsystem has been updated. Changes include:

  • Multiple addresses of both IPv4 and IPv6 per jail has been supported. It is even possible to have jails without an IP address at all, which basically gives one a chrooted environment with restricted process view and no networking.

  • SCTP (sctp(4)) with IPv6 in jails has been implemented.

  • Specific CPU binding by using cpuset(1) has been implemented. Note that the current implementation allows the superuser inside of the jail to change the CPU bindings specified. This behavior will be fixed in the next release.

  • A jail(8) can start with a specific route FIB now.

  • A show jails subcommand in ddb(8) has been added.

  • Compatibility support which permits 32-bit jail binaries to be used on 64-bit systems to manage jails has been added.

  • Note that both version numbers of jail and prison in the jail(8) have been updated for the new features.

The kld(4) now supports installing 32-bit system calls to the FreeBSD system call translation layer from kernel modules.

The ktr(4) now supports a new KTR tracepoint in the KTR_CALLOUT class to note when a callout routine finishes executing.

Types of variables used to track the amount of allocated System V shared memory have been changed from int to size_t. This makes it possible to use more than 2 GB of memory for shared memory segments on 64-bit architectures. Please note the new BUGS section in shmctl(2) and /usr/src/UPDATING for limitations of this temporary solution.

The sysctl(3) leaf nodes have a flag to tag themselves as MPSAFE now.

The FreeBSD 32-bit system call translation layer now supports installing 32-bit system calls for VFS_AIO.

[amd64, i386] The FreeBSD virtual memory subsystem now supports fully transparent use of superpages for application memory; application memory pages are dynamically promoted to or demoted from superpages without any modification to application code. This change offers the benefit of large page sizes such as improved virtual memory efficiency and reduced TLB (translation lookaside buffer) misses without downsides like application changes and virtual memory inflexibility. This is disabled by default and can be enabled by setting a loader tunable vm.pmap.pg_ps_enabled to 1.


2.2.1 Boot Loader Changes

The boot(8) now supports 4-byte volume ID that certain versions of Windows® put into the MBR and invoking PXE by pressing F6 key on some supported BIOSes.

[i386] The boot(8) BTX loader has been improved. This fixes several boot issues on recent machines reported for 7.1-RELEASE and before.

The loader(8) is now able to obtain DHCP options from network boot via kenv(2) variables.

A bug in the loader(8) has been fixed. Now the following line works as expected:

loader_conf_files="foo bar ${variable}"

2.2.2 Hardware Support

[sparc64] The FreeBSD now supports Ultra SPARC III (Cheetah) processor family.

The acpi(4) subsystem now supports a sysctl(8) variable debug.batt.batt_sleep_ms. On some laptops with smart batteries, enabling battery monitoring software causes keystrokes from atkbd(4) to be lost. This sysctl variable adds a delay in millisecond to the status checking code as a workaround.

The acpi_asus(4) driver now supports Asus A8Sr notebooks.

[powerpc] Support for the AltiVec, a floating point and integer SIMD instruction set has been added.

The cpuctl(4) driver, which provides a special device /dev/cpuctl as an interface to the system CPU has been added. The cpuctl(4) functionality includes the ability to retrieve CPUID information, read/write machine specific registers (MSR), and perform CPU firmware updates.

The cpufreq(4) driver now supports an hw.est.msr_info loader tunable. When this is set to 1, it attempts to build a simple list containing just the high and low frequencies if it cannot obtain a frequency list from either ACPI or the static tables. This is disabled by default.

[amd64, i386] CPU frequency change notifiers are now disabled when the TSC is P-state invariant. Also, a new loader tunable kern.timecounter.invariant_tsc has been added to force this behavior by setting it to non-zero.

The atkbd(4) driver now disables the interrupt handler which is called from the keyboard callback function when polled mode is enabled. This fixes the problem of duplicated/missing characters at the mountroot prompt on multi CPU systems while kbdmux(4) is enabled.

In the pci(4) subsystem INTx is now disabled when MSI/MSIX is enabled. This change fixes interrupt storm related issues.

[sparc64] The schizo(4) driver for Schizo Fireplane/Safari to PCI 2.1 and Tomatillo JBus to PCI 2.2 bridges has been added.

The u3g(4) driver for USB based 3G cards and dongles including Vodafone Mobile Connect Card 3G, Qualcomm CDMA MSM, Huawei E220, Novatel U740, Sierra MC875U, and so on has been added. This provides support for the multiple USB-to-serial interfaces exposed by many 3G USB/PC Card modems, and the device is accessed through the ucom(4) driver which makes it behave like a tty(4).

The sched_ule(4) scheduler now supports a loader tunable machdep.hyperthreading_enabled as the sched_4bsd(4) does. Note that it cannot be modified at run-time.


2.2.2.1 Multimedia Support

The agp(4) driver now supports Intel G4X series graphics chipsets.

The DRM, a kernel module named Direct Rendering Manager that gives direct hardware access to DRI clients, has been updated. Support for AMD/ATI r500, r600, r700, and IGP based chips, XGI V3XE/V5/V8, and Intel i915 chipsets has been improved.

A new loader tunable hw.drm.msi has been added to control if DRM uses MSI or not. This is set to 1 (enabled) by default.

The snd_au88x0(4) driver for Aureal Vortex 1/2/Advantage PCI has been removed because this was broken for a long time.

The snd_hda(4) driver has been updated. This changes include support for multiple codec per HDA bus, multiple functional groups per codec, multiple audio devices per functional group, digital (SPDIF/HDMI) audio input/output, suspend/resume, and part of multichannel audio.

Note that due to added HDMI audio and logical audio devices support, the updated driver often provides several PCM devices. This means that in some cases the system default audio device no longer corresponds to the users's habitual audio connectors. In such cases the default device can be specified in audio applications' setup or defined globally via hw.snd.default_unit sysctl, as described in the sound(4) manual page.


2.2.2.2 Network Interface Support

The ae(4) driver now supports WoL (Wake on LAN).

[amd64, i386] The ale(4) driver is now included in the GENERIC kernel.

The ath_hal(4), Atheros Hardware Access Layer, has been updated to the open source version.

The axe(4) driver has been improved in performance by eliminating extra context switches and now supports Apple USB Ethernet adapter.

The bce(4) driver's firmware has been updated to the latest version (4.6.X).

The ciphy(4) driver now supports Vitesse VSC8211 PHY.

The cxgb(4) driver has been updated to firmware revision 4.7 and now supports hardware MAC statistics.

The fxp(4) driver has been improved. Changes include:

  • The checksum offload feature can be controlled by ifconfig(8) now.

  • Rx checksum offload support for 82559 or later controllers has been added.

  • TSO (TCP Segmentation Offload) support for 82550 and 82551 controllers has been added.

  • WoL (Wake on LAN) support for 82550, 82551, 82558, and 82559-based controllers has been added. Note that ICH based controllers are treated as 82559, and 82557, earlier revisions of 82558, and 82559ER have no WoL capability.

  • VLAN hardware tag insertion/stripping support and Tx/Rx checksum offload for VLAN frames support have been added. Note that the VLAN hardware assistance is available only on 82550 or 82551-based controllers.

A bug in the igb(4) driver, which prevents the loader tunable hw.igb.ave_latency from working, has been fixed.

The ixgbe(4) driver has been updated to version 1.7.4.

The jme(4) driver now supports newer JMicron JMC250/JMC260 revisions.

The msk(4) driver has been improved. An issue which makes it hang up in a certain condition has been fixed. Hardware MAC statistics support has been added and users can get the information via sysctl variables named dev.msk.N.stats.

The mxge(4) driver now supports some newer revisions and 10GBASE-LRM and 10GBASE-Twinax media types.

The nfe(4) driver now supports hardware MAC statistics.

The re(4) driver has been improved. It now detects the link status. A new loader tunable hw.re.prefer_iomap has been added, to disable memory register mapping. This tunable is 0 for all controllers except RTL8169SC family.

The rl(4) driver has been improved. It now detects the link status and a bug which prevents it from working on systems with more than 4GB memory has been fixed.

A bug in sis(4) on VLAN tagged frame handling has been fixed.

The txp(4) driver now works on all supported architectures. Support has been added for altq(4), WoL, checksum offload when VLAN enabled, and link state change handling has been improved, and new sysctl variables dev.txp.N.stats for MAC statistics have been added. New sysctl variables dev.txp.N.process_limit has been added, to control how many received frames should be served in Rx handler (set to 64 by default and valid ranges are 16 to 128 in unit of frames). The firmware has been updated to the latest version.


2.2.3 Network Protocols

IPv4 source address selection for unbound sockets has been implemented as follows:

  1. If we found a route, use the address corresponding to the outgoing interface.

  2. Otherwise we assume the foreign address is reachable on a directly connected network and try to find a corresponding interface to take the source address from.

  3. As a last resort use the default jail address.

This also changes the semantics of selecting the IP for processes within a jail(8) as it now uses the same logic as outside the jail(8).

The TCP MD5 Signature Option (RFC 2385) for IPv6 has been implemented in the same way it has been implemented for IPv4.

The ng_netflow(4) Netgraph node now includes support for generating egress netflow instead or in addition to ingress. An NGM_NETFLOW_SETCONFIG control message has been added to control the new functionality.

The tap(4) Ethernet tunnel software network interface now supports a new TAPGIFNAME character device ioctl. This is a convenient shortcut to obtain the network interface name using a file descriptor to a character device.

The tap(4) now supports SIOCSIFMTU ioctl to set a higher MTU than 1500 (ETHERMTU). This allows tap(4) devices to be added to the same bridge (which requires all interface members to have the same MTU) with an interface configured for jumbo frames.

The domains list for handling the list of supported domains in the unix(4) (UNIX domain protocol family) subsystem is now MPSAFE.


2.2.4 Disks and Storage

The ata(4) driver now supports Marvell PATA M88SX6121.

The ata(4) driver now recognizes nForce MCP67 and MCP73 SATA controllers as AHCI.

The ataraid(4) driver now includes preliminary support for DDF metadata found on Adaptec HostRAID controllers. Note that spares and rebuilds are not supported yet.

The cam(4) SCSI subsystem now supports a new sysctl variable kern.cam.cd.retry_count. This controls the number of retries for the CD media. When trying to read scratched or damaged CDs and DVDs, the default mechanism is sub-optimal, and programs like ddrescue do much better if you turn off the retries entirely since their algorithms do it by themselves. This value is set to 4 (for a total of 5 attempts) by default. Setting it to 0 turns off all retry attempts.

A bug in the ciss(4) driver which caused low “max device openings” count and led to poor performance has been fixed.

The glabel(8) GEOM class now supports a new UFS-based label called ufsid that can be used to reference UFS-carrying devices by the unique file system ID. This file system ID is automatically generated and detected when the glabel(8) GEOM class is enabled. An example of this new label is: /dev/ufsid/48e69c8b5c8e1b43. The benefit of using GEOM labels in general is to avoid problems of device renaming when shifting drives or controllers.

The gjournal(8) GEOM class now supports the root file system. Previously, an unclean shutdown would make it impossible to mount the root file system at boot.

The gpart(8) utility has been updated. The APM scheme now supports Tivo Series 1 partitions (read only), a new EBR scheme to support Extended Boot Records has been added, the BSD scheme now support bootcode, and bugs in the PC98 and VTOC8 schemes have been fixed.

An issue in gvinum(8) with access permissions to underlying disks used by a gvinum plex has been fixed. If the plex is a raid5 plex and is being written to, parity data might have to be read from the underlying disks, requiring them to be opened for reading as well as writing.

The hptmv(4) driver has been updated to version 1.16 from the vendor.

The mmc(4) and mmcsd(4) drivers now support MMC and SDHC cards, high speed timing, wide bus, and multiblock transfers.

[sparc64] The mpt(4) driver is now in the GENERIC kernel.

The sdhci(4) driver has been added. This supports PCI devices with class 8 and subclass 5 according to the SD Host Controller Specification.

The sdhci(4) driver now supports kernel dumping and a sysctl variable hw.sdhci.debug for debug level.

The twa(4) driver now supports 64-bit DMA.

The mmc(4) mmcsd(4), and sdhci(4) driver are now included as kernel modules.


2.2.5 File Systems

The semantics of acl(3) extended access control lists has been changed as follows:

  • The inode modification time (mtime) is not updated when extended attributes are added, modified, or removed.

  • The inode access time (atime) is not updated when extended attributes are queried.

The FreeBSD NFS file system now supports a sysctl variable vfs.nfs.prime_access_cache to determine whether or not nfs_getattr() will use an ACCESS RPC to prime the access cache instead of a simple GETATTR RPC. This is because on many NFS servers an ACCESS RPC is much more expensive to service than a GETATTR RPC for files in an NFSv3 mount. The sysctl variable is enabled by default to maintain the previous behavior.

The FreeBSD UDF file system now supports a fifo.

The shared vnode locking for pathname lookups in the VFS(9) subsystem has been improved. This is disabled by default. Setting a sysctl variable vfs.lookup_shared to 1 enables it for better performance. Note that the LOOKUP_SHARED kernel option equivalent to the sysctl variable has been removed.


2.3 Userland Changes

A bug in the atacontrol(8) utility, which prevents it from working when /usr is not mounted or invoked from /rescue, has been fixed.

The btpand(8) daemon from NetBSD has been added. This daemon provides support for Bluetooth Network Access Point (NAP), Group Ad-hoc Network (GN) and Personal Area Network User (PANU) profiles.

The ncal(1) utility now supports multibyte characters.

The config(8) utility now supports multiple makeoption lines.

The csup(1) utility now supports CVSMode to fetch a complete CVS repository. Note that the rsync transfer mode is currently disabled.

The dirname(1) utility now accepts multiple arguments in the same way that basename(1) does.

The du(1) utility now supports an -l flag. When specified, the du(1) utility counts a file with multiple hard links as multiple different files.

The du(1) utility now supports an -A flag to display the apparent size instead of the disk usage. This can be helpful when operating on compressed volumes or sparse files.

The du(1) utility now supports a -B blocksize option to calculate block counts in blocks of blocksize bytes. This is different from the -k or -m options or setting BLOCKSIZE and gives an estimate of how much space the examined file hierarchy would require on a file system with the given blocksize. Unless in -A mode, blocksize is rounded up to the next multiple of 512.

The dumpfs(8) utility now supports an -f flag, which causes it to list all free fragments in the file system by fragment (block) number. This new mode does the necessary arithmetic to generate absolute fragment numbers rather than the cg-relative numbers printed in the default mode.

If -f is passed once, contiguous fragment ranges are collapsed into an X-Y format as free block lists are currently printed in regular dumpfs output. If specified twice, all block numbers are printed individually, allowing both compact and more script-friendly representation.

The fetch(1) utility now supports an -i flag which supports the If-Modified-Since HTTP 1.1 request. If specified it will cause the file to be downloaded only if it is more recent than the mtime of the local file. Also, libfetch now accepts the mtime in the url structure and a flag to indicate when this behavior is desired.

The fsck(8) utility now supports a -C flag for check clean mode. This checks if the file system was dismounted cleanly first and then skip file system checks if true. Otherwise it does full checks.

The fsck(8) utility now supports a -D flag for damaged recovery mode, which will enable certain aggressive operations that can make fsck(8) to survive with file systems that has very serious data damage. This is a useful last resort when on disk data damage is very serious and causes fsck(8) to crash.

The getaddrinfo(3) function now supports SCTP.

A bug was fixed in the ipfw(8) utility which displays extra messages for a NAT rule even when a -q flag is specified.

The ln(1) utility now supports a -w flag to check if the source file actually exists. When the flag is specified and the file does not exist, ln(1) will issue a warning message.

The make(1) utility now supports a -p flag to print the input graph only, without executing any commands. The output is the same as -d g1. When combined with -f /dev/null, only the built-in rules of make are displayed.

The make(1) utility now supports a -Q flag to cause file banners not to be generated in addition to the same effect of a -q flag when a -j option is specified.

The make(1) utility now supports the .MAKE.JOB.PREFIX variable. If -j and -v are specified, its output for each target is prefixed with a token --- target --- the first part of which can be controlled via the variable.

The make(1) utility now supports .MAKE.PID and .MAKE.PPID variable. These are set to process ID of the make(1) process and its parent process respectively.

The makefs(8) utility to create a file system image from a directory tree has been added.

The mergemaster(8) utility now supports an -F option to automatically install files that differ only in their version control ID strings.

The mount(8) utility now supports an -o mountprog=/somewhere/mount_xxx option to force it to use the specified program to mount the file system instead of calling nmount(2) directly. This is useful when you want to use third party programs such as FUSE, for example.

The netstat(1) utility now reports unix(4) sockets' listen queue statistics when an -L flag is specified.

A bug in the netstat(1) utility has been fixed. It crashed with the following options in the previous versions:

% netstat -m -N foo

A bug in the netstat(1) utility has been fixed. The -ss option now works in the icmp6 section as expected.

The pciconf(8) utility now supports a -b flag, which lists any base address registers (BAR) that are assigned resources for each device.

The powerd(8) program has been improved. Changes include reasonable CPU load estimation on SMP systems and a new mode named as hiadaptive for AC-powered systems. The hiadaptive mode raises the CPU frequency twice as fast as adaptive, it drops the CPU frequency 4 times slower, prefers twice lower CPU load and has an additional delay before leaving the highest frequency after the period of maximum load.

The stat(1) utility now displays an octal representation of suid, sgid and sticky bits when the -x flag is specified.

The strndup(3) function has been added.

The wc(1) utility now supports an -L flag to output the number of characters in the longest input line.

A bug in the rpc.yppasswdd(8) program, which causes it to leave a zombie process when a password or default shell is changed, has been fixed.


2.4 Contributed Software

ISC BIND has been updated to version 9.4.3-P2.

The timezone database has been updated from the tzdata2008h release to the tzdata2009f release.


2.5 Ports/Packages Collection Infrastructure

A bug in the pkg_create(1) utility, which prevents the -n flag from working has been fixed.

The FreeBSD Ports Collection now supports multiple make(1) jobs in some supported ports. This is automatically enabled when a port is marked as MAKE_JOBS_SAFE and improves CPU utilization at the build stage by passing an option -jX to the top level Makefile from the vendor. The number X is set to the number of CPUs by default, and can be set by users via a make(1) variable MAKE_JOBS_NUMBER. For more details, see ports/Mk/bsd.port.mk.


2.6 Release Engineering and Integration

The supported version of the GNOME desktop environment (x11/gnome2) has been updated from 2.22 to 2.26.

The supported version of the KDE desktop environment has been updated from 3.5.10 (x11/kde3) to 4.2.2 (x11/kde4).


3 Upgrading from previous releases of FreeBSD

[amd64, i386] Beginning with FreeBSD 6.2-RELEASE, binary upgrades between RELEASE versions (and snapshots of the various security branches) are supported using the freebsd-update(8) utility. The binary upgrade procedure will update unmodified userland utilities, as well as unmodified GENERIC or SMP kernels distributed as a part of an official FreeBSD release. The freebsd-update(8) utility requires that the host being upgraded has Internet connectivity.

An older form of binary upgrade is supported through the Upgrade option from the main sysinstall(8) menu on CDROM distribution media. This type of binary upgrade may be useful on non-i386, non-amd64 machines or on systems with no Internet connectivity.

Source-based upgrades (those based on recompiling the FreeBSD base system from source code) from previous versions are supported, according to the instructions in /usr/src/UPDATING.

Important: Upgrading FreeBSD should, of course, only be attempted after backing up all data and configuration files.


This file, and other release-related documents, can be downloaded from ftp://ftp.FreeBSD.org/.

For questions about FreeBSD, read the documentation before contacting <[email protected]>.

For questions about this documentation, e-mail <[email protected]>.