Add latest errata notices:
Fix a problem where dhclient(8) utility tries to initilaize an fxp(4) forever because the driver resets the controller chip twice upon initialization. [EN-13:01] Fix a problem where frames sent to additional MAC addresses are not forwarded to the vtnet(4) interface. [EN-13:02]
This commit is contained in:
parent
7e4aba68aa
commit
bf74ae0e2e
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=42076
7 changed files with 405 additions and 0 deletions
117
share/security/advisories/FreeBSD-EN-13:01.fxp.asc
Normal file
117
share/security/advisories/FreeBSD-EN-13:01.fxp.asc
Normal file
|
@ -0,0 +1,117 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-13:01.fxp Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: dhclient(8) utility issue on fxp(4) network interface
|
||||
|
||||
Category: core
|
||||
Modules: sys_dev
|
||||
Announced: 2013-06-28
|
||||
Credits: Michael L. Squires and YongHyeon PYUN
|
||||
Affects: FreeBSD 8.4
|
||||
Corrected: 2013-06-10 07:31:50 UTC (head, 10.0-CURRENT)
|
||||
2013-06-17 04:40:27 UTC (stable/9, 9.1-STABLE)
|
||||
2013-06-17 04:42:02 UTC (stable/8, 8.4-STABLE)
|
||||
2013-06-28 05:21:59 UTC (releng/8.4, 8.4-RELEASE-p1)
|
||||
|
||||
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:http://security.freebsd.org/>.
|
||||
|
||||
I. Background
|
||||
|
||||
The dhclient(8) utility is a Dynamic Host Configuration Protocol (DHCP)
|
||||
client, which is used for configuring network interfaces.
|
||||
|
||||
The fxp(4) network interface driver supports Intel EtherExpress
|
||||
PRO/100 Ethernet adapters based on the Intel i82557, i82558, i82559,
|
||||
i82550, i82551, and i82562 chips.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
When the dhclient(8) utility is used on an fxp(4) network interface,
|
||||
configuration of the interface could fail with the following warning
|
||||
messages displayed:
|
||||
|
||||
fxp0: link state changed to UP
|
||||
fxp0: link state changed to DOWN
|
||||
|
||||
The cause is that the fxp(4) network interface driver resets the controller
|
||||
chip twice upon initialization, and the dhclient(8) utility falsely
|
||||
recognizes the second reset as a link down and attempts reinitialize
|
||||
the interface. As a result, the dhclient(8) utility keeps trying to
|
||||
initialize the interface forever.
|
||||
|
||||
III. Impact
|
||||
|
||||
A machine which has an fxp(4) network interface does not work with
|
||||
the dhclient(8) utility.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
There is no workaround. Note that this issue occurs only when the
|
||||
dhclient(8) utility is used with an fxp(4) interface. A static
|
||||
configuration by using the ifconfig(8) utility works.
|
||||
|
||||
V. Solution
|
||||
|
||||
Perform one of the following:
|
||||
|
||||
1) Upgrade your system to 8-STABLE, or 9-STABLE, or to the releng/8.4
|
||||
security branch dated after the correction date.
|
||||
|
||||
2) To patch your present system:
|
||||
|
||||
The following patches have been verified to apply to FreeBSD 8.4 systems.
|
||||
|
||||
a) Download the relevant patch from the location below, and verify the
|
||||
detached PGP signature using your PGP utility.
|
||||
|
||||
# fetch http://security.FreeBSD.org/patches/EN-13:01/fxp_init.patch
|
||||
# fetch http://security.FreeBSD.org/patches/EN-13:01/fxp_init.patch.asc
|
||||
|
||||
b) Apply the patch.
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:http://www.freebsd.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
3) To update your vulnerable system via a binary patch:
|
||||
|
||||
Systems running 8.4-RELEASE on the i386 or amd64 platforms can be updated
|
||||
via the freebsd-update(8) utility:
|
||||
|
||||
# freebsd-update fetch
|
||||
# freebsd-update install
|
||||
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the revision numbers of each file that was
|
||||
corrected in FreeBSD.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
head r251600
|
||||
stable/9/ r251829
|
||||
stable/8/ r251830
|
||||
releng/8.4/ r252334
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
VII. References
|
||||
|
||||
The latest revision of this Errata Notice is available at
|
||||
http://security.FreeBSD.org/advisories/FreeBSD-EN-13:01.fxp.asc
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iEYEARECAAYFAlHNI3sACgkQFdaIBMps37IlNwCghqzRtILy5k7Bc4u0NsUhWLfb
|
||||
Qz8An2kbVTqnveuS+apxaAf5Wg4wp3ey
|
||||
=mArf
|
||||
-----END PGP SIGNATURE-----
|
149
share/security/advisories/FreeBSD-EN-13:02.vtnet.asc
Normal file
149
share/security/advisories/FreeBSD-EN-13:02.vtnet.asc
Normal file
|
@ -0,0 +1,149 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA1
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-13:02.vtnet Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: vtnet(4) network interface issue on QEMU 1.4.0 and later
|
||||
|
||||
Category: core
|
||||
Modules: sys_dev
|
||||
Announced: 2013-06-28
|
||||
Credits: Julian Stecklina and Bryan Venteicher
|
||||
Affects: FreeBSD 8.4
|
||||
Corrected: 2013-06-15 03:55:04 UTC (head, 10.0-CURRENT)
|
||||
2013-06-25 04:42:16 UTC (stable/9, 9.1-STABLE)
|
||||
2013-06-25 04:42:43 UTC (stable/8, 8.4-STABLE)
|
||||
2013-06-28 05:21:59 UTC (releng/8.4, 8.4-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:http://security.freebsd.org/>.
|
||||
|
||||
I. Background
|
||||
|
||||
VirtIO is a specification for para-virtualized I/O in a virtual
|
||||
machine. The vtnet(4) network interface driver supports VirtIO
|
||||
emulated Ethernet device.
|
||||
|
||||
QEMU is a generic and open source machine emulator and virtualizer.
|
||||
It is included as a third-party package in FreeBSD Ports Collection
|
||||
(emulators/qemu).
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The vtnet(4) network interface driver displays the following message
|
||||
upon configuration when using QEMU 1.4.0 or later:
|
||||
|
||||
vtnet0: error setting host MAC filter table
|
||||
|
||||
The interface works normally when the interface has one MAC address.
|
||||
However, if it has two or more MAC addresses configured, frames to
|
||||
those additional MAC addresses are not forwarded to the vtnet(4)
|
||||
interface. Thus, only the first MAC address works.
|
||||
|
||||
III. Impact
|
||||
|
||||
A vtnet(4) network interface with two or more MAC addresses configured
|
||||
on it cannot receive frames to the addresses except for the first one
|
||||
when the FreeBSD kernel is running on QEMU 1.4.0 or later. For the
|
||||
first MAC address, the vtnet(4) interface works without problem even
|
||||
though the error message is displayed.
|
||||
|
||||
The vtnet(4) driver is included in GENERIC kernel in FreeBSD
|
||||
8.4-RELEASE.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
The additional MAC addresses can work by setting the vtnet(4) network
|
||||
interface in promiscuous mode. The following command sets vtnet0 in
|
||||
promiscuous mode:
|
||||
|
||||
# ifconfig vtnet0 promisc
|
||||
|
||||
Note that this may lead to performance degradation.
|
||||
|
||||
Or, the fixed version of the vtnet(4) driver can be installed as
|
||||
kernel module by using the Ports Collection (emulators/virtio-kmod).
|
||||
To use it on 8.4-RELEASE, the GENERIC kernel has to be recompiled by
|
||||
removing all of the virtio(4) drivers before installing
|
||||
emulators/virtio-kmod. The following lines in kernel configuration
|
||||
file disable the drivers:
|
||||
|
||||
nodevice virtio
|
||||
nodevice virtio_pci
|
||||
nodevice vtnet
|
||||
nodevice virtio_blk
|
||||
nodevice virtio_scsi
|
||||
nodevice virtio_balloon
|
||||
|
||||
After recompilation and installing the new kernel and
|
||||
emulators/virtio-kmod, add the following lines to /boot/loader.conf.
|
||||
This enables the drivers by loading kernel modules which are installed
|
||||
by emulators/virtio-kmod at boot time.
|
||||
|
||||
virtio_load="YES"
|
||||
virtio_pci_load="YES"
|
||||
virtio_blk_load="YES"
|
||||
if_vtnet_load="YES"
|
||||
virtio_balloon_load="YES"
|
||||
|
||||
V. Solution
|
||||
|
||||
Perform one of the following:
|
||||
|
||||
1) Upgrade your system to 8-STABLE, or 9-STABLE, or to the releng/8.4
|
||||
security branch dated after the correction date.
|
||||
|
||||
2) To patch your present system:
|
||||
|
||||
The following patches have been verified to apply to FreeBSD 8.4 systems.
|
||||
|
||||
a) Download the relevant patch from the location below, and verify the
|
||||
detached PGP signature using your PGP utility.
|
||||
|
||||
# fetch http://security.FreeBSD.org/patches/EN-13:02/vtnet.patch
|
||||
# fetch http://security.FreeBSD.org/patches/EN-13:02/vtnet.patch.asc
|
||||
|
||||
b) Apply the patch.
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:http://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
3) To update your vulnerable system via a binary patch:
|
||||
|
||||
Systems running 8.4-RELEASE on the i386 or amd64 platforms can be updated
|
||||
via the freebsd-update(8) utility:
|
||||
|
||||
# freebsd-update fetch
|
||||
# freebsd-update install
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the revision numbers of each file that was
|
||||
corrected in FreeBSD.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
head r251769
|
||||
stable/9/ r252193
|
||||
stable/8/ r252194
|
||||
releng/8.4/ r252334
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
VII. References
|
||||
|
||||
The latest revision of this Errata Notice is available at
|
||||
http://security.FreeBSD.org/advisories/FreeBSD-EN-13:02.vtnet.asc
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iEYEARECAAYFAlHNI4MACgkQFdaIBMps37L8DACfVzTAigMRbtT38pltWZ23IFUw
|
||||
O3kAn0R36RIBdh45I+g/BPzjTimKMPza
|
||||
=8wlc
|
||||
-----END PGP SIGNATURE-----
|
90
share/security/patches/EN-13:01/fxp_init.patch
Normal file
90
share/security/patches/EN-13:01/fxp_init.patch
Normal file
|
@ -0,0 +1,90 @@
|
|||
Index: sys/dev/fxp/if_fxp.c
|
||||
===================================================================
|
||||
--- sys/dev/fxp/if_fxp.c (revision 251829)
|
||||
+++ sys/dev/fxp/if_fxp.c (revision 251830)
|
||||
@@ -1074,7 +1074,8 @@ fxp_suspend(device_t dev)
|
||||
pmstat |= PCIM_PSTAT_PME | PCIM_PSTAT_PMEENABLE;
|
||||
sc->flags |= FXP_FLAG_WOL;
|
||||
/* Reconfigure hardware to accept magic frames. */
|
||||
- fxp_init_body(sc, 1);
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
+ fxp_init_body(sc, 0);
|
||||
}
|
||||
pci_write_config(sc->dev, pmc + PCIR_POWER_STATUS, pmstat, 2);
|
||||
}
|
||||
@@ -2140,8 +2141,10 @@ fxp_tick(void *xsc)
|
||||
*/
|
||||
if (sc->rx_idle_secs > FXP_MAX_RX_IDLE) {
|
||||
sc->rx_idle_secs = 0;
|
||||
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
|
||||
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 1);
|
||||
+ }
|
||||
return;
|
||||
}
|
||||
/*
|
||||
@@ -2239,6 +2242,7 @@ fxp_watchdog(struct fxp_softc *sc)
|
||||
device_printf(sc->dev, "device timeout\n");
|
||||
sc->ifp->if_oerrors++;
|
||||
|
||||
+ sc->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 1);
|
||||
}
|
||||
|
||||
@@ -2273,6 +2277,10 @@ fxp_init_body(struct fxp_softc *sc, int setmedia)
|
||||
int i, prm;
|
||||
|
||||
FXP_LOCK_ASSERT(sc, MA_OWNED);
|
||||
+
|
||||
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
|
||||
+ return;
|
||||
+
|
||||
/*
|
||||
* Cancel any pending I/O
|
||||
*/
|
||||
@@ -2812,6 +2820,7 @@ fxp_miibus_statchg(device_t dev)
|
||||
*/
|
||||
if (sc->revision == FXP_REV_82557)
|
||||
return;
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 0);
|
||||
}
|
||||
|
||||
@@ -2835,9 +2844,10 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr
|
||||
if (ifp->if_flags & IFF_UP) {
|
||||
if (((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) &&
|
||||
((ifp->if_flags ^ sc->if_flags) &
|
||||
- (IFF_PROMISC | IFF_ALLMULTI | IFF_LINK0)) != 0)
|
||||
+ (IFF_PROMISC | IFF_ALLMULTI | IFF_LINK0)) != 0) {
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 0);
|
||||
- else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
|
||||
+ } else if ((ifp->if_drv_flags & IFF_DRV_RUNNING) == 0)
|
||||
fxp_init_body(sc, 1);
|
||||
} else {
|
||||
if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
|
||||
@@ -2850,8 +2860,10 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr
|
||||
case SIOCADDMULTI:
|
||||
case SIOCDELMULTI:
|
||||
FXP_LOCK(sc);
|
||||
- if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
|
||||
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 0);
|
||||
+ }
|
||||
FXP_UNLOCK(sc);
|
||||
break;
|
||||
|
||||
@@ -2941,8 +2953,10 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr
|
||||
~(IFCAP_VLAN_HWTSO | IFCAP_VLAN_HWCSUM);
|
||||
reinit++;
|
||||
}
|
||||
- if (reinit > 0 && ifp->if_flags & IFF_UP)
|
||||
+ if (reinit > 0 && (ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) {
|
||||
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
|
||||
fxp_init_body(sc, 0);
|
||||
+ }
|
||||
FXP_UNLOCK(sc);
|
||||
VLAN_CAPABILITIES(ifp);
|
||||
break;
|
6
share/security/patches/EN-13:01/fxp_init.patch.asc
Normal file
6
share/security/patches/EN-13:01/fxp_init.patch.asc
Normal file
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iEYEABECAAYFAlHNIK0ACgkQFdaIBMps37LWlACgjE24YlxIPHVad66ryPEoKN9/
|
||||
t+gAn1B2wYnsKkU7BCgs4gDtOLSNSyFz
|
||||
=S5aD
|
||||
-----END PGP SIGNATURE-----
|
16
share/security/patches/EN-13:02/vtnet.patch
Normal file
16
share/security/patches/EN-13:02/vtnet.patch
Normal file
|
@ -0,0 +1,16 @@
|
|||
Index: sys/dev/virtio/network/if_vtnet.c
|
||||
===================================================================
|
||||
--- sys/dev/virtio/network/if_vtnet.c (revision 252193)
|
||||
+++ sys/dev/virtio/network/if_vtnet.c (revision 252194)
|
||||
@@ -2470,9 +2470,9 @@ vtnet_rx_filter_mac(struct vtnet_softc *sc)
|
||||
sglist_init(&sg, 4, segs);
|
||||
error |= sglist_append(&sg, &hdr, sizeof(struct virtio_net_ctrl_hdr));
|
||||
error |= sglist_append(&sg, &filter->vmf_unicast,
|
||||
- sizeof(struct vtnet_mac_table));
|
||||
+ sizeof(uint32_t) + filter->vmf_unicast.nentries * ETHER_ADDR_LEN);
|
||||
error |= sglist_append(&sg, &filter->vmf_multicast,
|
||||
- sizeof(struct vtnet_mac_table));
|
||||
+ sizeof(uint32_t) + filter->vmf_multicast.nentries * ETHER_ADDR_LEN);
|
||||
error |= sglist_append(&sg, &ack, sizeof(uint8_t));
|
||||
KASSERT(error == 0 && sg.sg_nseg == 4,
|
||||
("error adding MAC filtering message to sglist"));
|
6
share/security/patches/EN-13:02/vtnet.patch.asc
Normal file
6
share/security/patches/EN-13:02/vtnet.patch.asc
Normal file
|
@ -0,0 +1,6 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iEYEABECAAYFAlHNIKQACgkQFdaIBMps37LavgCglodGaYxXqVR5F6vBDK1IUkk2
|
||||
nQAAn3QKtIuK+/t7ggokGWRE8e/nLhaE
|
||||
=pp9d
|
||||
-----END PGP SIGNATURE-----
|
|
@ -4,6 +4,27 @@
|
|||
$FreeBSD$
|
||||
</cvs:keyword>
|
||||
|
||||
<year>
|
||||
<name>2013</name>
|
||||
|
||||
<month>
|
||||
<name>6</name>
|
||||
|
||||
<day>
|
||||
<name>28</name>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-13:01.fxp</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-13:02.vtnet</name>
|
||||
</notice>
|
||||
</day>
|
||||
</month>
|
||||
|
||||
</year>
|
||||
|
||||
<year>
|
||||
<name>2012</name>
|
||||
|
||||
|
|
Loading…
Reference in a new issue