Release 6 errata notices for 10.3-RELEASE, all related to Microsoft Hyper-V.
Submitted by: Dexuan Cui <decui microsoft.com>, gjb
This commit is contained in:
parent
b2f25ca6e2
commit
a79a8e4d97
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=49252
22 changed files with 1933 additions and 0 deletions
131
share/security/advisories/FreeBSD-EN-16:10.dhclient.asc
Normal file
131
share/security/advisories/FreeBSD-EN-16:10.dhclient.asc
Normal file
|
@ -0,0 +1,131 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:10.dhclient Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Better handle unknown options received from a DHCP server
|
||||
|
||||
Category: core
|
||||
Module: dhclient
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-05-06 05:44:12 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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 dhclient(8) utility is used to request an IP address from a DHCP server.
|
||||
Some implemenations of DHCP servers can use "options" to pass extra
|
||||
information to dhclient.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
In Azure, the DHCP server adds a private option (id 0xf5), which contains
|
||||
binary form of an IPv4 address. Once this option is converted to string
|
||||
form, it could contain '$', for example:
|
||||
|
||||
IPv4 address: 100.72.36.54
|
||||
binary form: 0x64 0x48 0x24 0x36
|
||||
string form: "dH$6"
|
||||
|
||||
In this case, dhclient(8) exits upon "illegal" options as shown above, thus
|
||||
the an Azure virtual machine will fail to obtain an IP address, and fail to
|
||||
start.
|
||||
|
||||
III. Impact
|
||||
|
||||
The virtual machine in Azure may not set IP address properly and becomes
|
||||
inaccessible.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however it is presumed this issue only affects
|
||||
FreeBSD running in Azure.
|
||||
|
||||
V. Solution
|
||||
|
||||
1) Upgrade your system to a supported FreeBSD stable or release / security
|
||||
branch (releng) dated after the correction date.
|
||||
Afterward, reboot the system or restart dhclient(8).
|
||||
|
||||
2) To update your 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
|
||||
|
||||
Afterward, reboot the system or restart dhclient(8).
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:10/dhclient.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:10/dhclient.patch.asc
|
||||
# gpg --verify dhclient.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 the applicable daemons, or reboot the system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r299156
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:10.dhclient.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUsbAAoJEO1n7NZdz2rnXk4P/jrIiXpu7f2ueB9qZNGE8I31
|
||||
OYFLJcv7xnSy9FRm1t7FxJJ+rJLG8dSCVtvMuyOExgQ+ZuWKg8kgumRG5/MW081O
|
||||
r0IXmvyFZgYnmRu34m13ZcH7b0qE+i8HhYqd22yoSnceOEodRMJG1X1urbcFRywO
|
||||
UfJz64pqndFYGT0I7lG0Bvt5FwAN3oo8WefaD+eq7kIwnZGLujJHx5cIaG91xLBo
|
||||
chfjPkjVgbF2/IC+rcJd2asKsXRxsBLloTh4NvTMLPSvmgItsUImU5H3YWlL5yDm
|
||||
GbCA2GLY0C50OEMDnMS2GjKUVzMK76TWgtN3fWBAGRRQYyiZh2be9BOR9ypbG6W3
|
||||
dHGSCiVILKgIoFRUMqT3KkR4oE7cxcSj6yD8xo8Nws4cV3nuC4ityBm6Gn5awzkG
|
||||
PriRg7SYF3mr7cSGa+L7LG7bvL34E/cKL8gkY/LbTa4ZKLFuprMyx3cOs+8Q6ezp
|
||||
u3d51NNPmmprxsFFWKqVIw0yNA6PN6c07v9pFGjUpsPk91+CD6Pgc+UumKI/tsIu
|
||||
BxEhEw3Iucf8YB/qfEJReDdDM7NgjXXeYASq6PI7Ag4uBx+6lNqYomZsmwcGO+6w
|
||||
JtQAxid2fg3srMjA2ZdryJ0DskQn2B+ff1Z7Zf4h58zGmL16CUfA7qhLweAy//GV
|
||||
GBduTyY36OwgkBs5i7wh
|
||||
=y0LS
|
||||
-----END PGP SIGNATURE-----
|
120
share/security/advisories/FreeBSD-EN-16:11.vmbus.asc
Normal file
120
share/security/advisories/FreeBSD-EN-16:11.vmbus.asc
Normal file
|
@ -0,0 +1,120 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:11.vmbus Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Avoid using spin locks for channel message locks
|
||||
|
||||
Category: core
|
||||
Module: vmbus
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-06-15 09:52:01 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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 vmbus driver has a global lock hv_vmbus_g_connection.channel_msg_lock,
|
||||
whose type is MTX_SPIN. The lock is used to protect concurrent access to the
|
||||
global pending message list hv_vmbus_g_connection.channel_msg_anchor.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
In some cases, sema_post() is invoked when the spin mutex is held.
|
||||
|
||||
III. Impact
|
||||
|
||||
Using sema_post() with a held spin mutex may trigger a system panic.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however FreeBSD virtual machines not running in
|
||||
Hyper-V or Azure are unaffected.
|
||||
|
||||
V. Solution
|
||||
|
||||
1) Upgrade your system to a supported FreeBSD stable or release / security
|
||||
branch (releng) dated after the correction date. After which, reboot the
|
||||
system.
|
||||
|
||||
2) To update your 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
|
||||
After which, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:11/vmbus.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:11/vmbus.patch.asc
|
||||
# gpg --verify vmbus.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
<for a kernel bug:>
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r301925
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:11.vmbux.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUsfAAoJEO1n7NZdz2rnyAgP/3ZQ6JLhVWjdHHQz13XyT32r
|
||||
NjhZ5VWdL8ZOd4psbLTmqMh79KT4u/bMZ4RackAcpX2agnpPx8sDQL5kaRNypQuj
|
||||
OC+rTyRy4J/TZTeX6OPA+TSwOS/yczdGFhgexk0AuxoqWN3j8yZ/P+DyTC7y5CmD
|
||||
8Fc9lcTAyFP/OEwybprWesRsC6wS1hKKhzz32e+i2EONzU5Xk8V3rondLZ2cSC9h
|
||||
UaeUqJHCbdIogWt7h0zD3WKbcYEwdTmE6MNFJenjWLaIJQkFxqYUfncK9nePm+v7
|
||||
W/QfVhEMuClKJRQRI6hHC+XJU2BxoXVB7uuJxk4rfLYO+TynvJ8w2iAMpf6liQLM
|
||||
ChvBsczIDHtha7z1uqMRHouywHgSc/YWXodMrRRbOjDfFFHzsTIE/ZVdAncGqxwQ
|
||||
/b7VmBS4kZRG5KP0ip/SHRUR+Ououp79gOkIphsT8ikpQKyHQVfG9FL8desSpE8f
|
||||
nTyAWwlbBuIid7PqLcFwlIZuqbx52eMWG3//bZNKnxrx2b9RILNRDbOOrwbD2VHq
|
||||
n9mO2EKdEPQg+Fz4omwCcmK2kMhknvotQ9oWUOGFK6i/BqZ6q5PffH4lxTyTS+Jr
|
||||
oDxHZ3jmSVFb7bcjCqYwqpvxloOXY3ChgfYvnq3OI8Ry5Y7rnI8sGmKFwgqWcSqE
|
||||
KS1LNBSGT1A7/mpgzld7
|
||||
=GPUS
|
||||
-----END PGP SIGNATURE-----
|
125
share/security/advisories/FreeBSD-EN-16:12.hv_storvsc.asc
Normal file
125
share/security/advisories/FreeBSD-EN-16:12.hv_storvsc.asc
Normal file
|
@ -0,0 +1,125 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:12.hv_storvsc Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Enable INQUIRY result check only on Windows 10 host systems
|
||||
|
||||
Category: core
|
||||
Module: hv_storvsc
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-05-25 06:15:26 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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
|
||||
|
||||
A FreeBSD virtual machine running on Hyper-V uses hv_storvsc(4) to discover,
|
||||
access, and control block devices. The SCSI INQUIRY command is used to scan
|
||||
the disks attached to the virtual machine, and hv_storvsc(4) checks if the
|
||||
response from the host is valid.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
On Windows 8 and earlier systems, the response to the INQUIRY command may
|
||||
return invalid results.
|
||||
|
||||
III. Impact
|
||||
|
||||
When a SCSI disk hotplug occurs, some disks may not be visible to the guest
|
||||
virtual machine despite being present.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available however guest machines not running on Hyper-V on
|
||||
Windows 8 and earlier are unaffected.
|
||||
|
||||
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. After which, reboot the
|
||||
system.
|
||||
|
||||
2) To update your 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
|
||||
After which, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:12/hv_storvsc.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:12/hv_storvsc.patch.asc
|
||||
# gpg --verify hv_storvsc.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r300656
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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
|
||||
|
||||
<URL:https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=209443>
|
||||
|
||||
The latest revision of this advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:12.hv_storsvc.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUsgAAoJEO1n7NZdz2rns+wP/icFVWd1JaWRxcyRsv/fXIKM
|
||||
+W2juTwxptg7HaXCUf885pe4ku7KHaAHViaE/Ma7QBK3DYbYMFhFRB+Vz3n45DWg
|
||||
Cc9lQfLm1sGOHA1YZml4O9dOnjxkybPhUShiBq06rREOTawdEIb1F5+xUkMo8fx4
|
||||
L3pwFBwSgBTJogcld4Ukj8w6iFLoN5SAPaGpOwmXguheja8OhP/K0UHk7SkTWaxj
|
||||
AXKyVD9z8GusqST33JOhY+PQEQU4LKZue5Xrxlrblb0eFZn6LiykYAQX0zrufFPi
|
||||
W4sg2rCogo2RIUZxmZAX0V1zcVoClKfFu1/o4dPLY4mWSIGvMde2SXanS3E6T1Mz
|
||||
PBa3+ugTgwE9+kGuY5T5jeslHcac9i6kOKU8UDMlAYxzdd2r7h9UVznms6laCIx2
|
||||
o4Z1morcFhzInuXepGl7ZeV5KEDzlgmtdLzzgZ+sc4D9IYDwig4tjw8O9uRFBDeG
|
||||
wU1pInC4M2cfs2h322IyYIg5wo9thoMrRitidLACZfB/xo6x3dEaCtj8NtxQXoYK
|
||||
/TwVdT8ltL1RlZun8I/8sdijGG5+eJAU31JOlortHnEDMzyWuSbQcaDqo8dK9fGb
|
||||
WmV0Qk+ATMA1NdxKTMHfxQUfZ6EvplTRHBNdghYWJWTvLXDyb6sKjHzo/Eexn0SD
|
||||
nh2mSHOlq8xjlCyop+I1
|
||||
=FUf1
|
||||
-----END PGP SIGNATURE-----
|
122
share/security/advisories/FreeBSD-EN-16:13.vmbus.asc
Normal file
122
share/security/advisories/FreeBSD-EN-16:13.vmbus.asc
Normal file
|
@ -0,0 +1,122 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:13.vmbus Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Register time counter early enough for TSC freq calibration
|
||||
|
||||
Category: core
|
||||
Module: vmbus
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-06-16 01:57:16 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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
|
||||
|
||||
FreeBSD uses i8254 PIT (Programmable Interval Timer) to calibrate the
|
||||
frequency of the CPU TSC (Time Stamp Counter).
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The Hyper-V i8254 emulation does not correctly calibrate the TSC frequency,
|
||||
and is not available for Generation 2 Hyper-V virtual machines.
|
||||
|
||||
III. Impact
|
||||
|
||||
FreeBSD virtual machines running on Hyper-V will see warnings logged to
|
||||
syslog(8) and the system console resembling:
|
||||
calcru: runtime went backwards from 18 usec to 9 usec for pid 0 (kernel)
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however FreeBSD virtual machines not running in
|
||||
Hyper-V or Azure are unaffected.
|
||||
|
||||
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. After which, reboot the
|
||||
system.
|
||||
|
||||
2) To update your 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
|
||||
After which, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:13/vmbus.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:13/vmbus.patch.asc
|
||||
# gpg --verify vmbus.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r301942
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:13.vmbus.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUshAAoJEO1n7NZdz2rnZncQALG1iAvkhT+SZZ+MP7bEqlJP
|
||||
HP2NsmalVF35PnoGRj+MwG61rbrtZzAB/OHXVx4iotzAW6NCOACJuCnuJqgqFK6N
|
||||
pggtIzgE6xXsHlKIL7V9ucIURIUbdAcDoaTnJ4aE373DwmtPn/hKVaWtbspcpZ3F
|
||||
QxiFIhbR4kqDjk1fVmM4xAn8E4Q6+eUFb88LUnWh/Cd86uCSQ5cKY8qFQyhoEyeI
|
||||
L6iChVTdE7zn3bjavzlJdQn2Rh6N7lmnhBcpm+e1eyDdxDYUPCXAeGqmNrQBShq9
|
||||
SwIJKOs6ll0tzDGTI0tmKV5OoEw6InyZ6xRDR7k6j7yOo/IHVNrFAYQ+CRI+IDCv
|
||||
q+MXYOUDTIo1KxjYHzRan+f3m7DXUuSXUDye+0sAglK37FJGvUZ206dkNZVFzp2F
|
||||
wKpvzT2Pbfzl5AMGJav04YpC7MiXCxD/wsUs+jz9P+9G5UuMcjwYhuLXFecrX7BP
|
||||
zhqEtRTShuFviNIsCJxG+pmF/srESTADMckYWLez7Y2qHbO2ZxMRpKOB9XPNQEoK
|
||||
PQIWdsmdiUKCjCgKp7Siy/bb42zUVcCXjSFXGP7Eb0+i49SAFZWAO53jbe3qvtQT
|
||||
NGf47PReOLpxmLVi84lemS5jl+/GhREWZNQ+b3jdHs8ghKjfkvDPWzihVAMzcfQN
|
||||
LNnMDZJlpCUhiGp6yoHG
|
||||
=s9XX
|
||||
-----END PGP SIGNATURE-----
|
125
share/security/advisories/FreeBSD-EN-16:14.hv_storvsc.asc
Normal file
125
share/security/advisories/FreeBSD-EN-16:14.hv_storvsc.asc
Normal file
|
@ -0,0 +1,125 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:14.hv_storvsc Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Disable incorrect callout in hv_storvsc(4)
|
||||
|
||||
Category: core
|
||||
Module: hv_storvsc
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-05-06 05:16:42 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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 Hyper-V storage driver, hv_storvsc(4), always sets up a timeout(9) timer
|
||||
when sending an I/O request to the host. When the I/O is completed by the
|
||||
host and the host notifies the virtual machine, callout_drain() is used in
|
||||
another thread.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The hv_storvsc(4) driver does not correctly set up the timer, and
|
||||
callout_drain() does not remove the callout as expected. When the callout is
|
||||
later used again, it is unexpectedly reinitialized, which can cause
|
||||
undetermined behavior in the kernel callout(9) system.
|
||||
|
||||
III. Impact
|
||||
|
||||
Unexpected behavior in the kernel callout(9) system can occur, such as
|
||||
inability to halt the system with 'shutdown -h now'.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however FreeBSD virtual machines not running in
|
||||
Hyper-V or Azure are unaffected.
|
||||
|
||||
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. After which, reboot the
|
||||
system.
|
||||
|
||||
2) To update your 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
|
||||
After which, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:14/hv_storvsc.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:14/hv_storvsc.patch.asc
|
||||
# gpg --verify hv_storvsc.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r299153
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:14.hv_storvsc.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUsiAAoJEO1n7NZdz2rn5qAP/0OmatunIP/2a1U7SPNav55G
|
||||
wa0/q9MOYb/+vRfGGynlGLt79E6gxYopwMXnVtm/Z1Hhqt7NEfT6h4Fjb6rjdIiz
|
||||
Anwm6kNuesDjZGBSJ1POMP8DCXm16uqxZXQvGvzaVrdj/30gyFFrmUGPetJWnjZk
|
||||
CawfOfDS+EynvXoXDuBUu9EeisUGFbcnb3zRTqXYq3adsxW9AwlstvCPnzKzvwom
|
||||
KZKQz7AVB4XgD3B65UMpGrK7vi8u8PwXfn5sffhnt3KMchbpMA4HJXubrm9QmxxJ
|
||||
KFQm4VOMxiqjSYMtTSW6q8uIArPG2y/Cs4agHUiSehRksMSUs6TCGdmSKN/OMn0D
|
||||
Sby2MlcZCBuQDVmRdrotuTGkFvLAs/JagOojIAaz0wNcSWQv3F7DxuKx76C6jjlO
|
||||
7mgEPrctDmQJMLIIAIqvzvG94DeleMEwLIV+5omr5hhy0FANfUksgUqPH5z2n6wZ
|
||||
c4VJf8d1Jv6kpp8/uq1tcMrhmTtRwP1v7LYUBaHgy++C8azbrrS7BEMyqIB8Upal
|
||||
CWlI9ZHZYoMWkpqATtlBs3rFmWNLxtCmf8a7Xa+Ox/hep6wrFD+TFmq2wzukTypq
|
||||
BNGPIeHTxe7KdVcMbI87//SGWNEx/+W9iEcF4eGhE8JgGz+E0TvMR/JlK2479KXG
|
||||
hsjMFVQWevI7sgvSKkBS
|
||||
=XI3q
|
||||
-----END PGP SIGNATURE-----
|
131
share/security/advisories/FreeBSD-EN-16:15.vmbus.asc
Normal file
131
share/security/advisories/FreeBSD-EN-16:15.vmbus.asc
Normal file
|
@ -0,0 +1,131 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:15.vmbus Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Better handle the GPADL setup failure in Hyper-V
|
||||
|
||||
Category: core
|
||||
Module: vmbus
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-06-15 09:39:41 UTC (stable/10, 10.3-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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
|
||||
|
||||
FreeBSD guests on Hyper-V call hv_vmbus_post_message(), which uses hypercalls
|
||||
to post various types of VMBus messages to the Hyper-V host. One kind of the
|
||||
messages is to setup GPADL (Guest Physical Addrss Description List), which
|
||||
describes shared memory buffers between the host and the guest.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
Most often, hv_vmbus_post_message() does not fail. However, it could fail
|
||||
intermittently when GPADLs of large shared memory is to be established with
|
||||
the host, such as on the hn(4) attach path, a GPADL of 15MB sendbuf is
|
||||
created, for which lots of messages will be flooded to the host.
|
||||
|
||||
The host side tries to throttle the message rate by returning
|
||||
HV_STATUS_INSUFFICIENT_BUFFERS.
|
||||
|
||||
Before this errata notice, several retries for failed messages would be
|
||||
attempted, but the delay between each retry is too low, causing sporadic
|
||||
message posting failure. A larger delay (>=1ms) is now used between each
|
||||
retry to fix the message posting failure.
|
||||
|
||||
III. Impact
|
||||
|
||||
Failures when Hyper-V network device driver are loaded and the device cannot
|
||||
work would occur.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however FreeBSD virtual machines not running in
|
||||
Hyper-V or Azure are unaffected.
|
||||
|
||||
V. Solution
|
||||
|
||||
1) Upgrade your system to a supported FreeBSD stable or release / security
|
||||
branch (releng) dated after the correction date, and reboot the system.
|
||||
|
||||
2) To update your 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
|
||||
|
||||
Afterward, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:15/vmbus.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:15/vmbus.patch.asc
|
||||
# gpg --verify vmbus.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r301924
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:15.vmbus.asc>
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUskAAoJEO1n7NZdz2rnpSYQAOcdxWeTfHk3Pksvy8tZl1sE
|
||||
1HzD7d4LUEd8TJZq6JA8JEmAA3MN6p0FoGDj0NlMviiy1slCo4BuEyriixhkKUqh
|
||||
be1+2pVY3d6gMixHFNPVKA0JB5amDvfxF8jY/lMZ1CsfD1tE0bTSRwPYhFFxJI8g
|
||||
QK2dbjbGPQF32fAh4953wLV/HO1n6JiQS8dtyJBc4BdGRNCcuZpl69lDeJJWH5Li
|
||||
IYtbQQlMIQZA5le7CjGXP+6eFus+U7CoqxuCq50CJwsgt0Rw+klApX85dodImlCR
|
||||
qn6FCB0OdM2W3KgrnOLEXjvmajUO1fWAkiwlS6ZlkqST5KSRUHC3pzzZcYrvLBtA
|
||||
qOslsoOp7v7uOvjKIt6As8KmX7OjFgNsiH4oxCL8H8HXNlN3uQRayMG8kglWqKWo
|
||||
QFjF5cPL1YnDn5cBSThGQY0QBnDFEPiyviJZZ8XInKAESNysOW5rpx4bLKRqz33L
|
||||
tZ0ebi+3PpA3M6wK9ag3zARJvqfTgHZ6KoVBF3HKmIB+LnyFQybHBaG5eG1sveWC
|
||||
11KobiLoA1Te9v9KunJRBvmPMsV2zjrGJ5MYFw7UH/gYhjO2CGnRlJUCAHDFr7u+
|
||||
f/AJYb9qSS6exSFGhl7tBAxEAQAizy2eCSde/rXqbNH8QPz4SM/J436GPdxcaTRD
|
||||
Lj+bkbcEPY6QqPPodDHn
|
||||
=JVB9
|
||||
-----END PGP SIGNATURE-----
|
131
share/security/advisories/FreeBSD-EN-16:16.hv_storvsc.asc
Normal file
131
share/security/advisories/FreeBSD-EN-16:16.hv_storvsc.asc
Normal file
|
@ -0,0 +1,131 @@
|
|||
-----BEGIN PGP SIGNED MESSAGE-----
|
||||
Hash: SHA512
|
||||
|
||||
=============================================================================
|
||||
FreeBSD-EN-16:16.hv_storvsc Errata Notice
|
||||
The FreeBSD Project
|
||||
|
||||
Topic: Fix SCSI INQUIRY checks and error handling
|
||||
|
||||
Category: core
|
||||
Module: hv_storvsc
|
||||
Announced: 2016-08-12
|
||||
Credits: Microsoft OSTC
|
||||
Affects: FreeBSD 10.3
|
||||
Corrected: 2016-07-15 02:29:10 UTC (stable/10, 10.2-STABLE)
|
||||
2016-08-12 04:01:16 UTC (releng/10.3, 10.3-RELEASE-p7)
|
||||
|
||||
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 Hyper-V storage driver, hv_storsvc(4), uses the SCSI INQUIRY command to
|
||||
detect the presence of SCSI LUNs.
|
||||
|
||||
II. Problem Description
|
||||
|
||||
The hv_storsvc(4) driver assumes 36-byte responses to the INQUIRY command,
|
||||
which is not always the case. When a shorter response is received, it can
|
||||
lead to unexpected behavior.
|
||||
|
||||
If the host changes the virtual disk capacity, responses from the host to the
|
||||
virtual machine guest next command (such as READ CAPACITY or INQUIRY) return
|
||||
an error with sense data supplied. The hv_storsvc(4) driver does not check
|
||||
the error status properly, so the upper SCSI layer treats the command as being
|
||||
successfully executed, resulting in unexpected behavior.
|
||||
|
||||
III. Impact
|
||||
|
||||
There are several manifestations of the impact, such as disk hotplug not
|
||||
working reliably, SMART checks on the disk with 'smartctl -i /dev/da0' can
|
||||
cause the disk to detach and crash the machine, and online resizing not
|
||||
working reliably.
|
||||
|
||||
IV. Workaround
|
||||
|
||||
No workaround is available, however FreeBSD virtual machines not running in
|
||||
Hyper-V or Azure are unaffected.
|
||||
|
||||
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. After which, reboot the
|
||||
system.
|
||||
|
||||
2) To update your 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
|
||||
After which, reboot the system.
|
||||
|
||||
3) To update your 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.
|
||||
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:16/hv_storvsc.patch
|
||||
# fetch https://security.FreeBSD.org/patches/EN-16:16/hv_storvsc.patch.asc
|
||||
# gpg --verify hv_storvsc.patch.asc
|
||||
|
||||
b) Apply the patch. Execute the following commands as root:
|
||||
|
||||
# cd /usr/src
|
||||
# patch < /path/to/patch
|
||||
|
||||
c) Recompile your kernel as described in
|
||||
<URL:https://www.FreeBSD.org/handbook/kernelconfig.html> and reboot the
|
||||
system.
|
||||
|
||||
VI. Correction details
|
||||
|
||||
The following list contains the correction revision numbers for each
|
||||
affected branch.
|
||||
|
||||
Branch/path Revision
|
||||
- -------------------------------------------------------------------------
|
||||
stable/10/ r302863
|
||||
releng/10.3/ r303984
|
||||
- -------------------------------------------------------------------------
|
||||
|
||||
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 advisory is available at
|
||||
<URL:https://security.FreeBSD.org/advisories/FreeBSD-EN-16:16.hv_storvsc.asc>
|
||||
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAEBCgAGBQJXrUslAAoJEO1n7NZdz2rnoeUP/0dlvrBv/wocTjPu+6K5OjIA
|
||||
+GAvrrI+pESdnBQwYcIBfxq/YJIsgzVBAlqnrR1/s2fVOtkvhdcvzJAQSEVlvaYa
|
||||
sJI2wn3lcT8KcH/JfNTxm/TgdDS25kPFl9SG1EdxE6ZSQHC4A0mjoEO9z4S7cq9i
|
||||
FYS3VjY7AqZDJx6lCvQjW0Th4S/tvW1YZ62Tlnq3IT0JVpvVlxxPP9Qau7Z4DX8I
|
||||
Pr+EqmBGdKINfzDXlrJ3TtLJ094mZw2CrhF1exmpdPAiuCUcKlt7xa6jGtm939iX
|
||||
Pur9bIxl8pB/+uPB+vRq5wjzmg7s3ld8BWBV/NJjeLXSFb0hRxWcdbuvqcpiolQu
|
||||
nIFsyaZ5h3QSxZG4NydB2Cr/A5lPG0aVGs76V9OnRbMy53NUrkyWZtGq0Qoyu9Zj
|
||||
XaMDGeiFZcuR7VynrClGtJ9L+oeewQvScPsB5D2cwS+xsey7bTlOrpfT55Zouew2
|
||||
4gsuW8kmoxq8zE3pqLn41td+ERrH0mFp1/0Zk4NdB5ylJA/o2DFeMIiJpHZ0OtWE
|
||||
T0KJ05Hz2UkjaPx1UUUC1D3GTunETXMHu62XhgsJi9tJltKiHZskWZYS9u2zDP57
|
||||
67nDjaORLbPIXUvMcQoOw/o7wFB4JWcnu/NUJdCHHHcSlec49fT+tfDzZvcfycrk
|
||||
lTEHTA0GabtHC2G7vc+v
|
||||
=3gBz
|
||||
-----END PGP SIGNATURE-----
|
39
share/security/patches/EN-16:10/dhclient.patch
Normal file
39
share/security/patches/EN-16:10/dhclient.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Index: sbin/dhclient/dhclient.c
|
||||
===================================================================
|
||||
--- sbin/dhclient/dhclient.c (revision 302284)
|
||||
+++ sbin/dhclient/dhclient.c (working copy)
|
||||
@@ -2277,6 +2277,17 @@ script_set_env(struct client_state *clie
|
||||
{
|
||||
int i, j, namelen;
|
||||
|
||||
+ /* No `` or $() command substitution allowed in environment values! */
|
||||
+ for (j=0; j < strlen(value); j++)
|
||||
+ switch (value[j]) {
|
||||
+ case '`':
|
||||
+ case '$':
|
||||
+ warning("illegal character (%c) in value '%s'",
|
||||
+ value[j], value);
|
||||
+ /* Ignore this option */
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
namelen = strlen(name);
|
||||
|
||||
for (i = 0; client->scriptEnv[i]; i++)
|
||||
@@ -2313,16 +2324,6 @@ script_set_env(struct client_state *clie
|
||||
strlen(value) + 1);
|
||||
if (client->scriptEnv[i] == NULL)
|
||||
error("script_set_env: no memory for variable assignment");
|
||||
-
|
||||
- /* No `` or $() command substitution allowed in environment values! */
|
||||
- for (j=0; j < strlen(value); j++)
|
||||
- switch (value[j]) {
|
||||
- case '`':
|
||||
- case '$':
|
||||
- error("illegal character (%c) in value '%s'", value[j],
|
||||
- value);
|
||||
- /* not reached */
|
||||
- }
|
||||
snprintf(client->scriptEnv[i], strlen(prefix) + strlen(name) +
|
||||
1 + strlen(value) + 1, "%s%s=%s", prefix, name, value);
|
||||
}
|
16
share/security/patches/EN-16:10/dhclient.patch.asc
Normal file
16
share/security/patches/EN-16:10/dhclient.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUseAAoJEO1n7NZdz2rnwP0QAI7YUXZJx2RdqNjDyTems1IR
|
||||
/tR3utSSm6MUqIA5JkSKXBj6g8o04S9VA+HRBW6TlN/KhKHYhLaCW5O4etMlp7xu
|
||||
5OYahVFAj5uMteBpvr0H0WK5NInt5Pw6YAlv7E9G7qjgKWSSsDV5h5C4xUHSSDhP
|
||||
PDn3/GXCInEY2bLIhdPcGJelPEzdCKREQWEwz1A2IjOM5rGTMAiCMvW5jW0sZd0K
|
||||
+b65Dd25X1h37bFbexZy8hNIR0HyROAzsHSOV8yjf0625sib7dippVxv6ARjBX3p
|
||||
Lm88B7SI4MwW31CtsOAzjRw0Ibu+ASAx/5jRU8NppS3HZSICAk0Xjqq50m/vtCcs
|
||||
ognAqhwKHHtxfrs+UePwA9Xi6hsNcwC66HIeX1MZw7hs7FSTfheo4iy2PohbeCoW
|
||||
46RUc66RKehanG67CLe5GtYX5OzlQbzM0/KlqXZ11FvT3yXeTbCqx55ViDMOj31B
|
||||
P/Gf43Ct59DB5dIcmjqNCIIIvvAYnlqWuSDZWMj+SmYlrTbPFbKFXZaqGleXIi2j
|
||||
VVS7waoD9Bxuz+Qfaw97khFsS+QvpQWQnwGQARrb+74YeK9MbQFQ9jT2CCuWWcjF
|
||||
JXwfl8Z1wiMgQxWu7AxzAGGmdlSe9w5xuaPz0ep84t1fXgBvzkG/7W56XJWIXgfZ
|
||||
RLkTFs/7ZFPzR2ej1aXw
|
||||
=z8D3
|
||||
-----END PGP SIGNATURE-----
|
218
share/security/patches/EN-16:11/vmbus.patch
Normal file
218
share/security/patches/EN-16:11/vmbus.patch
Normal file
|
@ -0,0 +1,218 @@
|
|||
--- sys/dev/hyperv/vmbus/hv_channel.c.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_channel.c
|
||||
@@ -180,12 +180,12 @@
|
||||
if (user_data_len)
|
||||
memcpy(open_msg->user_data, user_data, user_data_len);
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_INSERT_TAIL(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
open_info,
|
||||
msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
ret = hv_vmbus_post_message(
|
||||
open_msg, sizeof(hv_vmbus_channel_open_channel));
|
||||
@@ -212,12 +212,12 @@
|
||||
}
|
||||
|
||||
cleanup:
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_REMOVE(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
open_info,
|
||||
msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
sema_destroy(&open_info->wait_sema);
|
||||
free(open_info, M_DEVBUF);
|
||||
|
||||
@@ -401,13 +401,13 @@
|
||||
gpadl_msg->child_rel_id = channel->offer_msg.child_rel_id;
|
||||
gpadl_msg->gpadl = next_gpadl_handle;
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_INSERT_TAIL(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_info,
|
||||
msg_list_entry);
|
||||
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
ret = hv_vmbus_post_message(
|
||||
gpadl_msg,
|
||||
@@ -446,10 +446,10 @@
|
||||
|
||||
cleanup:
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_info, msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
sema_destroy(&msg_info->wait_sema);
|
||||
free(msg_info, M_DEVBUF);
|
||||
@@ -488,10 +488,10 @@
|
||||
msg->child_rel_id = channel->offer_msg.child_rel_id;
|
||||
msg->gpadl = gpadl_handle;
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_INSERT_TAIL(&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
info, msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
ret = hv_vmbus_post_message(msg,
|
||||
sizeof(hv_vmbus_channel_gpadl_teardown));
|
||||
@@ -504,10 +504,10 @@
|
||||
/*
|
||||
* Received a torndown response
|
||||
*/
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_REMOVE(&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
info, msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
sema_destroy(&info->wait_sema);
|
||||
free(info, M_DEVBUF);
|
||||
|
||||
--- sys/dev/hyperv/vmbus/hv_channel_mgmt.c.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_channel_mgmt.c
|
||||
@@ -567,7 +567,7 @@
|
||||
/*
|
||||
* Find the open msg, copy the result and signal/unblock the wait event
|
||||
*/
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_list_entry) {
|
||||
@@ -585,7 +585,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
}
|
||||
|
||||
@@ -609,7 +609,7 @@
|
||||
/* Find the establish msg, copy the result and signal/unblock
|
||||
* the wait event
|
||||
*/
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_list_entry) {
|
||||
request_header = (hv_vmbus_channel_msg_header*) msg_info->msg;
|
||||
@@ -628,7 +628,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -653,7 +653,7 @@
|
||||
* wait event.
|
||||
*/
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_list_entry) {
|
||||
@@ -673,7 +673,7 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -693,7 +693,7 @@
|
||||
|
||||
versionResponse = (hv_vmbus_channel_version_response*)hdr;
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_FOREACH(msg_info, &hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_list_entry) {
|
||||
requestHeader = (hv_vmbus_channel_msg_header*) msg_info->msg;
|
||||
@@ -707,7 +707,7 @@
|
||||
sema_post(&msg_info->wait_sema);
|
||||
}
|
||||
}
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
}
|
||||
|
||||
--- sys/dev/hyperv/vmbus/hv_connection.c.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_connection.c
|
||||
@@ -101,26 +101,26 @@
|
||||
* Add to list before we send the request since we may receive the
|
||||
* response before returning from this routine
|
||||
*/
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
TAILQ_INSERT_TAIL(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_info,
|
||||
msg_list_entry);
|
||||
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
ret = hv_vmbus_post_message(
|
||||
msg,
|
||||
sizeof(hv_vmbus_channel_initiate_contact));
|
||||
|
||||
if (ret != 0) {
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_REMOVE(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_info,
|
||||
msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
@@ -129,12 +129,12 @@
|
||||
*/
|
||||
ret = sema_timedwait(&msg_info->wait_sema, 5 * hz); /* KYS 5 seconds */
|
||||
|
||||
- mtx_lock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_lock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
TAILQ_REMOVE(
|
||||
&hv_vmbus_g_connection.channel_msg_anchor,
|
||||
msg_info,
|
||||
msg_list_entry);
|
||||
- mtx_unlock_spin(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
+ mtx_unlock(&hv_vmbus_g_connection.channel_msg_lock);
|
||||
|
||||
/**
|
||||
* Check if successful
|
||||
@@ -173,7 +173,7 @@
|
||||
|
||||
TAILQ_INIT(&hv_vmbus_g_connection.channel_msg_anchor);
|
||||
mtx_init(&hv_vmbus_g_connection.channel_msg_lock, "vmbus channel msg",
|
||||
- NULL, MTX_SPIN);
|
||||
+ NULL, MTX_DEF);
|
||||
|
||||
TAILQ_INIT(&hv_vmbus_g_connection.channel_anchor);
|
||||
mtx_init(&hv_vmbus_g_connection.channel_lock, "vmbus channel",
|
16
share/security/patches/EN-16:11/vmbus.patch.asc
Normal file
16
share/security/patches/EN-16:11/vmbus.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUsfAAoJEO1n7NZdz2rn6HkP/jxUR6mhiG66F9BIdl+eCXko
|
||||
c4SzLXhxW4LpDuu106dTyK5/jOVWAfSHQ58IGSlV3YOGEh2f8UsdA1OGtsg4MW6G
|
||||
2ljohahowBaKhZvNSEZLvLKKzg5NIvb63NQjg/XJ0GLvHfXp7fA/7LGadGTgiQUs
|
||||
iRzjEm/Mjw6UHi8R720CgFJsHSKtPftD9VWzp+J7Bf5vrP8xdFLsWNSWWNZFrMQ7
|
||||
knKrtgik/vPxzWonR81MYRcaE7OqyZ9hQb0EqBw5e3Tl4EXC01MpxGBkFwjHRjB2
|
||||
DvxQKfpTy//gpM4FrZLS5aXAa9OXkFOCNqXrO+BxaYf4m4DuxhLG6NZI8ocKOr+b
|
||||
viHOXucP79jf3u04XUOFVPCf4DJ2jvzuqWYD6cOEakB06uDmjCgpgkbgWyqY1wkl
|
||||
tcYmuqIl9cv0vZFLtbhk8zKnkCg+uLRN4C+O5Fc6mQev9ytSy56l16Vm496I56Xx
|
||||
zCOy+I7RJRbGtBaE4CXLIXMSlYWVmL+o986m4OGzMN4a7tCRVyxziLPVv3P2Yjnm
|
||||
gj4b/9qZzU5Voa/adojj4kmwLDSTyhhofbJuED0Q2eWwo300gfZheNGF8aKkO7yF
|
||||
4eZvcUE/+NnsNUz1tPVCfYZ5sf2aB6W6fcXjeMuD/ytUmwrxdN4mSp0z+3mA9SXo
|
||||
8Hic0sf3VDsHc4YeEsy9
|
||||
=jPaX
|
||||
-----END PGP SIGNATURE-----
|
205
share/security/patches/EN-16:12/hv_storvsc.patch
Normal file
205
share/security/patches/EN-16:12/hv_storvsc.patch
Normal file
|
@ -0,0 +1,205 @@
|
|||
--- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c.orig
|
||||
+++ sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
|
||||
@@ -81,12 +81,6 @@
|
||||
#define BLKVSC_MAX_IO_REQUESTS STORVSC_MAX_IO_REQUESTS
|
||||
#define STORVSC_MAX_TARGETS (2)
|
||||
|
||||
-#define STORVSC_WIN7_MAJOR 4
|
||||
-#define STORVSC_WIN7_MINOR 2
|
||||
-
|
||||
-#define STORVSC_WIN8_MAJOR 5
|
||||
-#define STORVSC_WIN8_MINOR 1
|
||||
-
|
||||
#define VSTOR_PKT_SIZE (sizeof(struct vstor_packet) - vmscsi_size_delta)
|
||||
|
||||
#define HV_ALIGN(x, a) roundup2(x, a)
|
||||
@@ -208,7 +202,7 @@
|
||||
* Sense buffer size changed in win8; have a run-time
|
||||
* variable to track the size we should use.
|
||||
*/
|
||||
-static int sense_buffer_size;
|
||||
+static int sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
|
||||
|
||||
/*
|
||||
* The size of the vmscsi_request has changed in win8. The
|
||||
@@ -218,9 +212,46 @@
|
||||
* Track the correct size we need to apply.
|
||||
*/
|
||||
static int vmscsi_size_delta;
|
||||
+/*
|
||||
+ * The storage protocol version is determined during the
|
||||
+ * initial exchange with the host. It will indicate which
|
||||
+ * storage functionality is available in the host.
|
||||
+*/
|
||||
+static int vmstor_proto_version;
|
||||
+
|
||||
+struct vmstor_proto {
|
||||
+ int proto_version;
|
||||
+ int sense_buffer_size;
|
||||
+ int vmscsi_size_delta;
|
||||
+};
|
||||
|
||||
-static int storvsc_current_major;
|
||||
-static int storvsc_current_minor;
|
||||
+static const struct vmstor_proto vmstor_proto_list[] = {
|
||||
+ {
|
||||
+ VMSTOR_PROTOCOL_VERSION_WIN10,
|
||||
+ POST_WIN7_STORVSC_SENSE_BUFFER_SIZE,
|
||||
+ 0
|
||||
+ },
|
||||
+ {
|
||||
+ VMSTOR_PROTOCOL_VERSION_WIN8_1,
|
||||
+ POST_WIN7_STORVSC_SENSE_BUFFER_SIZE,
|
||||
+ 0
|
||||
+ },
|
||||
+ {
|
||||
+ VMSTOR_PROTOCOL_VERSION_WIN8,
|
||||
+ POST_WIN7_STORVSC_SENSE_BUFFER_SIZE,
|
||||
+ 0
|
||||
+ },
|
||||
+ {
|
||||
+ VMSTOR_PROTOCOL_VERSION_WIN7,
|
||||
+ PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE,
|
||||
+ sizeof(struct vmscsi_win8_extension),
|
||||
+ },
|
||||
+ {
|
||||
+ VMSTOR_PROTOCOL_VERSION_WIN6,
|
||||
+ PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE,
|
||||
+ sizeof(struct vmscsi_win8_extension),
|
||||
+ }
|
||||
+};
|
||||
|
||||
/* static functions */
|
||||
static int storvsc_probe(device_t dev);
|
||||
@@ -435,7 +466,7 @@
|
||||
static int
|
||||
hv_storvsc_channel_init(struct hv_device *dev)
|
||||
{
|
||||
- int ret = 0;
|
||||
+ int ret = 0, i;
|
||||
struct hv_storvsc_request *request;
|
||||
struct vstor_packet *vstor_packet;
|
||||
struct storvsc_softc *sc;
|
||||
@@ -484,19 +515,20 @@
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
- /* reuse the packet for version range supported */
|
||||
+ for (i = 0; i < nitems(vmstor_proto_list); i++) {
|
||||
+ /* reuse the packet for version range supported */
|
||||
|
||||
- memset(vstor_packet, 0, sizeof(struct vstor_packet));
|
||||
- vstor_packet->operation = VSTOR_OPERATION_QUERYPROTOCOLVERSION;
|
||||
- vstor_packet->flags = REQUEST_COMPLETION_FLAG;
|
||||
+ memset(vstor_packet, 0, sizeof(struct vstor_packet));
|
||||
+ vstor_packet->operation = VSTOR_OPERATION_QUERYPROTOCOLVERSION;
|
||||
+ vstor_packet->flags = REQUEST_COMPLETION_FLAG;
|
||||
|
||||
- vstor_packet->u.version.major_minor =
|
||||
- VMSTOR_PROTOCOL_VERSION(storvsc_current_major, storvsc_current_minor);
|
||||
+ vstor_packet->u.version.major_minor =
|
||||
+ vmstor_proto_list[i].proto_version;
|
||||
|
||||
- /* revision is only significant for Windows guests */
|
||||
- vstor_packet->u.version.revision = 0;
|
||||
+ /* revision is only significant for Windows guests */
|
||||
+ vstor_packet->u.version.revision = 0;
|
||||
|
||||
- ret = hv_vmbus_channel_send_packet(
|
||||
+ ret = hv_vmbus_channel_send_packet(
|
||||
dev->channel,
|
||||
vstor_packet,
|
||||
VSTOR_PKT_SIZE,
|
||||
@@ -504,20 +536,34 @@
|
||||
HV_VMBUS_PACKET_TYPE_DATA_IN_BAND,
|
||||
HV_VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED);
|
||||
|
||||
- if (ret != 0)
|
||||
- goto cleanup;
|
||||
+ if (ret != 0)
|
||||
+ goto cleanup;
|
||||
|
||||
- /* wait 5 seconds */
|
||||
- ret = sema_timedwait(&request->synch_sema, 5 * hz);
|
||||
+ /* wait 5 seconds */
|
||||
+ ret = sema_timedwait(&request->synch_sema, 5 * hz);
|
||||
|
||||
- if (ret)
|
||||
- goto cleanup;
|
||||
+ if (ret)
|
||||
+ goto cleanup;
|
||||
|
||||
- /* TODO: Check returned version */
|
||||
- if (vstor_packet->operation != VSTOR_OPERATION_COMPLETEIO ||
|
||||
- vstor_packet->status != 0)
|
||||
- goto cleanup;
|
||||
+ if (vstor_packet->operation != VSTOR_OPERATION_COMPLETEIO) {
|
||||
+ ret = EINVAL;
|
||||
+ goto cleanup;
|
||||
+ }
|
||||
+ if (vstor_packet->status == 0) {
|
||||
+ vmstor_proto_version =
|
||||
+ vmstor_proto_list[i].proto_version;
|
||||
+ sense_buffer_size =
|
||||
+ vmstor_proto_list[i].sense_buffer_size;
|
||||
+ vmscsi_size_delta =
|
||||
+ vmstor_proto_list[i].vmscsi_size_delta;
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
+ if (vstor_packet->status != 0) {
|
||||
+ ret = EINVAL;
|
||||
+ goto cleanup;
|
||||
+ }
|
||||
/**
|
||||
* Query channel properties
|
||||
*/
|
||||
@@ -916,19 +962,6 @@
|
||||
int ata_disk_enable = 0;
|
||||
int ret = ENXIO;
|
||||
|
||||
- if (hv_vmbus_protocal_version == HV_VMBUS_VERSION_WS2008 ||
|
||||
- hv_vmbus_protocal_version == HV_VMBUS_VERSION_WIN7) {
|
||||
- sense_buffer_size = PRE_WIN8_STORVSC_SENSE_BUFFER_SIZE;
|
||||
- vmscsi_size_delta = sizeof(struct vmscsi_win8_extension);
|
||||
- storvsc_current_major = STORVSC_WIN7_MAJOR;
|
||||
- storvsc_current_minor = STORVSC_WIN7_MINOR;
|
||||
- } else {
|
||||
- sense_buffer_size = POST_WIN7_STORVSC_SENSE_BUFFER_SIZE;
|
||||
- vmscsi_size_delta = 0;
|
||||
- storvsc_current_major = STORVSC_WIN8_MAJOR;
|
||||
- storvsc_current_minor = STORVSC_WIN8_MINOR;
|
||||
- }
|
||||
-
|
||||
switch (storvsc_get_storage_type(dev)) {
|
||||
case DRIVER_BLKVSC:
|
||||
if(bootverbose)
|
||||
@@ -2064,6 +2097,13 @@
|
||||
((ccb->ccb_h.flags & CAM_CDB_POINTER) ?
|
||||
csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes);
|
||||
if (cmd->opcode == INQUIRY &&
|
||||
+ /*
|
||||
+ * XXX: Temporary work around disk hot plugin on win2k12r2,
|
||||
+ * only filtering the invalid disk on win10 or 2016 server.
|
||||
+ * So, the hot plugin on win10 and 2016 server needs
|
||||
+ * to be fixed.
|
||||
+ */
|
||||
+ vmstor_proto_version == VMSTOR_PROTOCOL_VERSION_WIN10 &&
|
||||
is_inquiry_valid(
|
||||
(const struct scsi_inquiry_data *)csio->data_ptr) == 0) {
|
||||
ccb->ccb_h.status |= CAM_DEV_NOT_THERE;
|
||||
--- sys/dev/hyperv/storvsc/hv_vstorage.h.orig
|
||||
+++ sys/dev/hyperv/storvsc/hv_vstorage.h
|
||||
@@ -41,6 +41,11 @@
|
||||
#define VMSTOR_PROTOCOL_VERSION(MAJOR_, MINOR_) ((((MAJOR_) & 0xff) << 8) | \
|
||||
(((MINOR_) & 0xff) ))
|
||||
|
||||
+#define VMSTOR_PROTOCOL_VERSION_WIN6 VMSTOR_PROTOCOL_VERSION(2, 0)
|
||||
+#define VMSTOR_PROTOCOL_VERSION_WIN7 VMSTOR_PROTOCOL_VERSION(4, 2)
|
||||
+#define VMSTOR_PROTOCOL_VERSION_WIN8 VMSTOR_PROTOCOL_VERSION(5, 1)
|
||||
+#define VMSTOR_PROTOCOL_VERSION_WIN8_1 VMSTOR_PROTOCOL_VERSION(6, 0)
|
||||
+#define VMSTOR_PROTOCOL_VERSION_WIN10 VMSTOR_PROTOCOL_VERSION(6, 2)
|
||||
/*
|
||||
* Invalid version.
|
||||
*/
|
16
share/security/patches/EN-16:12/hv_storvsc.patch.asc
Normal file
16
share/security/patches/EN-16:12/hv_storvsc.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUsgAAoJEO1n7NZdz2rna2MP/0vEjB5HY78W/jI/owx0l5WI
|
||||
zFe0R1ZdBDlYmVxnYmUcB9/7FciyvbQDcnpVtr8evqUxnmXj0MEK5iQBoi7t2cao
|
||||
gfykz4Yh+ZU8UVPKVGardFvgVsphwnahlEmQ5HJrlJy5b2Cgf1+c5UsBZu+310+n
|
||||
O7Z7vuP48DW/n/8ihz0du/kGjl5LAxgDGZsZUfkKpw9JBsrWOf4ssmqprGZOy4f7
|
||||
TCXt3OfZo87PdKy+21hVz6ekc7SWuNIrwzEc6Yc8YKgUpTxoOg030L2ixOpOytDb
|
||||
a3oen2nqWm/XgjReg/+lA2PkedY6WoOqXmmEWMeIm4JHBrZARJmAJD+2KQwJy/dk
|
||||
vjlMrK7Um5jR9r6gmQ2mWZs8HaK4q3cHIcR6j/LiFH3DO6nkTYd24uAe3IkQB3kW
|
||||
6z1Yru9cSZA5wuXAA3acGPO6LyVClHm9m3LiDamuSrVHDiLZVt999cBLHPB27rko
|
||||
5o0+INutJrkcfiIu2Rxw8Mc8Bw4wL6qaWda0eh2wufNFN9KEMcuIW36pVx58Ya2k
|
||||
CIWshuKfBCvAj2x25uZGGs7RyvEKGxPll1KxsmedjWy/ZhSK6bzR1hhUSE7gXMA4
|
||||
pYH0pfc0ECBO/AL9213kctmNeo+a9HRUyAPSqWUiiYcSEHTTlFG9efyEPEIcjgwu
|
||||
yy8y9/u+1MnI6+9ekO7/
|
||||
=L9SS
|
||||
-----END PGP SIGNATURE-----
|
155
share/security/patches/EN-16:13/vmbus.patch
Normal file
155
share/security/patches/EN-16:13/vmbus.patch
Normal file
|
@ -0,0 +1,155 @@
|
|||
--- sys/dev/hyperv/vmbus/hv_hv.c.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_hv.c
|
||||
@@ -33,6 +33,7 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <sys/param.h>
|
||||
+#include <sys/kernel.h>
|
||||
#include <sys/malloc.h>
|
||||
#include <sys/pcpu.h>
|
||||
#include <sys/timetc.h>
|
||||
@@ -50,6 +51,9 @@
|
||||
|
||||
static u_int hv_get_timecount(struct timecounter *tc);
|
||||
|
||||
+u_int hyperv_features;
|
||||
+u_int hyperv_recommends;
|
||||
+
|
||||
/**
|
||||
* Globals
|
||||
*/
|
||||
@@ -211,8 +215,6 @@
|
||||
|
||||
hv_vmbus_g_context.hypercall_page = virt_addr;
|
||||
|
||||
- tc_init(&hv_timecounter); /* register virtual timecount */
|
||||
-
|
||||
hv_et_init();
|
||||
|
||||
return (0);
|
||||
@@ -427,3 +429,93 @@
|
||||
wrmsr(HV_X64_MSR_SIEFP, siefp.as_uint64_t);
|
||||
}
|
||||
|
||||
+static bool
|
||||
+hyperv_identify(void)
|
||||
+{
|
||||
+ u_int regs[4];
|
||||
+ unsigned int maxLeaf;
|
||||
+ unsigned int op;
|
||||
+
|
||||
+ if (vm_guest != VM_GUEST_HV)
|
||||
+ return (false);
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_HV_VENDOR_AND_MAX_FUNCTION;
|
||||
+ do_cpuid(op, regs);
|
||||
+ maxLeaf = regs[0];
|
||||
+ if (maxLeaf < HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS)
|
||||
+ return (false);
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_HV_INTERFACE;
|
||||
+ do_cpuid(op, regs);
|
||||
+ if (regs[0] != 0x31237648 /* HV#1 */)
|
||||
+ return (false);
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_MS_HV_FEATURES;
|
||||
+ do_cpuid(op, regs);
|
||||
+ if ((regs[0] & HV_FEATURE_MSR_HYPERCALL) == 0) {
|
||||
+ /*
|
||||
+ * Hyper-V w/o Hypercall is impossible; someone
|
||||
+ * is faking Hyper-V.
|
||||
+ */
|
||||
+ return (false);
|
||||
+ }
|
||||
+ hyperv_features = regs[0];
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_MS_HV_VERSION;
|
||||
+ do_cpuid(op, regs);
|
||||
+ printf("Hyper-V Version: %d.%d.%d [SP%d]\n",
|
||||
+ regs[1] >> 16, regs[1] & 0xffff, regs[0], regs[2]);
|
||||
+
|
||||
+ printf(" Features: 0x%b\n", hyperv_features,
|
||||
+ "\020"
|
||||
+ "\001VPRUNTIME"
|
||||
+ "\002TMREFCNT"
|
||||
+ "\003SYNCIC"
|
||||
+ "\004SYNCTM"
|
||||
+ "\005APIC"
|
||||
+ "\006HYERCALL"
|
||||
+ "\007VPINDEX"
|
||||
+ "\010RESET"
|
||||
+ "\011STATS"
|
||||
+ "\012REFTSC"
|
||||
+ "\013IDLE"
|
||||
+ "\014TMFREQ"
|
||||
+ "\015DEBUG");
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION;
|
||||
+ do_cpuid(op, regs);
|
||||
+ hyperv_recommends = regs[0];
|
||||
+ if (bootverbose)
|
||||
+ printf(" Recommends: %08x %08x\n", regs[0], regs[1]);
|
||||
+
|
||||
+ op = HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS;
|
||||
+ do_cpuid(op, regs);
|
||||
+ if (bootverbose) {
|
||||
+ printf(" Limits: Vcpu:%d Lcpu:%d Int:%d\n",
|
||||
+ regs[0], regs[1], regs[2]);
|
||||
+ }
|
||||
+
|
||||
+ if (maxLeaf >= HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE) {
|
||||
+ op = HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE;
|
||||
+ do_cpuid(op, regs);
|
||||
+ if (bootverbose) {
|
||||
+ printf(" HW Features: %08x AMD: %08x\n",
|
||||
+ regs[0], regs[3]);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return (true);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+hyperv_init(void *dummy __unused)
|
||||
+{
|
||||
+ if (!hyperv_identify())
|
||||
+ return;
|
||||
+
|
||||
+ if (hyperv_features & HV_FEATURE_MSR_TIME_REFCNT) {
|
||||
+ /* Register virtual timecount */
|
||||
+ tc_init(&hv_timecounter);
|
||||
+ }
|
||||
+}
|
||||
+SYSINIT(hyperv_initialize, SI_SUB_HYPERVISOR, SI_ORDER_FIRST, hyperv_init, NULL);
|
||||
--- sys/dev/hyperv/vmbus/hv_vmbus_priv.h.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_vmbus_priv.h
|
||||
@@ -471,10 +471,17 @@
|
||||
HV_CPU_ID_FUNCTION_MS_HV_VERSION = 0x40000002,
|
||||
HV_CPU_ID_FUNCTION_MS_HV_FEATURES = 0x40000003,
|
||||
HV_CPU_ID_FUNCTION_MS_HV_ENLIGHTENMENT_INFORMATION = 0x40000004,
|
||||
- HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005
|
||||
-
|
||||
+ HV_CPU_ID_FUNCTION_MS_HV_IMPLEMENTATION_LIMITS = 0x40000005,
|
||||
+ HV_CPU_ID_FUNCTION_MS_HV_HARDWARE_FEATURE = 0x40000006
|
||||
} hv_vmbus_cpuid_function;
|
||||
|
||||
+#define HV_FEATURE_MSR_TIME_REFCNT (1 << 1)
|
||||
+#define HV_FEATURE_MSR_SYNCIC (1 << 2)
|
||||
+#define HV_FEATURE_MSR_STIMER (1 << 3)
|
||||
+#define HV_FEATURE_MSR_APIC (1 << 4)
|
||||
+#define HV_FEATURE_MSR_HYPERCALL (1 << 5)
|
||||
+#define HV_FEATURE_MSR_GUEST_IDLE (1 << 10)
|
||||
+
|
||||
/*
|
||||
* Define the format of the SIMP register
|
||||
*/
|
||||
@@ -628,6 +635,9 @@
|
||||
extern hv_vmbus_context hv_vmbus_g_context;
|
||||
extern hv_vmbus_connection hv_vmbus_g_connection;
|
||||
|
||||
+extern u_int hyperv_features;
|
||||
+extern u_int hyperv_recommends;
|
||||
+
|
||||
typedef void (*vmbus_msg_handler)(hv_vmbus_channel_msg_header *msg);
|
||||
|
||||
typedef struct hv_vmbus_channel_msg_table_entry {
|
16
share/security/patches/EN-16:13/vmbus.patch.asc
Normal file
16
share/security/patches/EN-16:13/vmbus.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUsiAAoJEO1n7NZdz2rn7oUQAMIlJ7FfdYN3ncISxokj1Y9o
|
||||
TDY+KYS0ucNVrCs1fQZL4oKQptpWjJ65A6559samZgSvf9szrp3NOB3TonyAGBLG
|
||||
l/zR0eR7SpMsZZh7uAW1LgUGyTLcnj3/C9800HK5pkfDB8VQWi4a3WldzgkBkG/W
|
||||
PSrymoXg8xH4HC0WosOH096RmnOx7mt9PtAm3F0e6pJRvUiJixp1dhYYFFdm8T5Q
|
||||
Pgw/bhFBoMlxe3BNAlltLYJ0+YKH3WOjVGdwDcm8X5madmn0KA6KgtvWwu0hKSbH
|
||||
SeiThXJxe/uPrCcjGVALgY0iKflgsN38Do32+PIMMtZO/DFxx53bJJIrCPAmq97V
|
||||
qeUrkso5lhXDIcUEEs7V9RQJK3MouajQUbFtykd5y9SMPLTcNBes4HddrjIvOcBH
|
||||
NOMFAeG/7NwmWpdF703fCoqYO7cx9K2Q+HWi620uI5u2B0BatbU7Sx1uQE3o/XUb
|
||||
rtWSJp5mKNN5oPSxV3jd9nC6i14HrgrA/1ouhDTG1FrYBvh7TlfDpxmeuEGojiO/
|
||||
3S3l3KfPChOa3xEsdX4huLNlOQAAMtgibUsaQY+Yb2WhP/IOJdxU9FI6uBgmEAD/
|
||||
Coz26Dk9qLxvurUfNFUK7Kd4NQPIibjhUdhxjNq+1hJdBmGTVZ862vxTIUXtHeeI
|
||||
JXtRAvLVrygKpqu8kXzo
|
||||
=P6G6
|
||||
-----END PGP SIGNATURE-----
|
50
share/security/patches/EN-16:14/hv_storvsc.patch
Normal file
50
share/security/patches/EN-16:14/hv_storvsc.patch
Normal file
|
@ -0,0 +1,50 @@
|
|||
--- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c.orig
|
||||
+++ sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
|
||||
@@ -1273,6 +1273,7 @@
|
||||
}
|
||||
#endif /* HVS_TIMEOUT_TEST */
|
||||
|
||||
+#ifdef notyet
|
||||
/**
|
||||
* @brief timeout handler for requests
|
||||
*
|
||||
@@ -1320,6 +1321,7 @@
|
||||
storvsc_timeout_test(reqp, MODE_SELECT_10, 1);
|
||||
#endif
|
||||
}
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* @brief StorVSC device poll function
|
||||
@@ -1472,6 +1474,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
+#ifdef notyet
|
||||
if (ccb->ccb_h.timeout != CAM_TIME_INFINITY) {
|
||||
callout_init(&reqp->callout, CALLOUT_MPSAFE);
|
||||
callout_reset_sbt(&reqp->callout,
|
||||
@@ -1491,6 +1494,7 @@
|
||||
}
|
||||
#endif /* HVS_TIMEOUT_TEST */
|
||||
}
|
||||
+#endif
|
||||
|
||||
if ((res = hv_storvsc_io_request(sc->hs_dev, reqp)) != 0) {
|
||||
xpt_print(ccb->ccb_h.path,
|
||||
@@ -2039,6 +2043,7 @@
|
||||
mtx_unlock(&sc->hs_lock);
|
||||
}
|
||||
|
||||
+#ifdef notyet
|
||||
/*
|
||||
* callout_drain() will wait for the timer handler to finish
|
||||
* if it is running. So we don't need any lock to synchronize
|
||||
@@ -2049,6 +2054,7 @@
|
||||
if (ccb->ccb_h.timeout != CAM_TIME_INFINITY) {
|
||||
callout_drain(&reqp->callout);
|
||||
}
|
||||
+#endif
|
||||
|
||||
ccb->ccb_h.status &= ~CAM_SIM_QUEUED;
|
||||
ccb->ccb_h.status &= ~CAM_STATUS_MASK;
|
16
share/security/patches/EN-16:14/hv_storvsc.patch.asc
Normal file
16
share/security/patches/EN-16:14/hv_storvsc.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUsjAAoJEO1n7NZdz2rneWcQALoyKPTxSYmxNSocHI/PYZuS
|
||||
aD1S9T6prQZ4nWJXbM5Dqq2/SYXZ8FKCtdDIqZVZEm5iZf5Pv7vdAHcNYDA3fosg
|
||||
0y1cskwqhsIQMidS7CrTnX0R224PjrSnZOJlPpRx/EGKAb1OhbGYlBb1BvljpBFl
|
||||
oyQ31u63jdIZKR3RIEHWs8Bx6aOC+JDsThmXmOFwuIWk/ssot1kohUd+NQLSEVCh
|
||||
sZ6ArGpo6RRXQZXQqVMW9ZAL3q6KN0obmmAeSPadTcUME1U0W1fHtoLgVTRvskoI
|
||||
jd752MlnTRfEid9Ci6BiH7kUNM8FEpyWfiupl1/iQXvZevtR70lXHpMZ+vRKiZSt
|
||||
tjJa4+hLv8OnhZFCf6K+Ts8lJykswHv34UPYsemyNS+zJyOKbjiEMAXvCxklw8Rh
|
||||
AvGZT+Lq6QQeuz+suwL0I/F3XPLarH0waqRi6mbb9FYhmTilrKvjIk946kcIx22B
|
||||
8bCuB60RDV/WKOQMJnpts2w/JvXxqoigbTQubmkfZm8cv9VL1My4gHNso6U/OfAn
|
||||
C216dljcwYPWa0KTupjMpV8SvOq6YwV0F3AKSTGyu8Pv9A8MOUUt7kjuOIyxzfkH
|
||||
D8VO+i8mv96b6Tc5/iB6zJ+/q+aXCcnMlUiwZbF1PNUAHVjMMThwnPiTmuA4o6Ff
|
||||
djSfFj4gMMLwYPBnJlHJ
|
||||
=KT/g
|
||||
-----END PGP SIGNATURE-----
|
68
share/security/patches/EN-16:15/vmbus.patch
Normal file
68
share/security/patches/EN-16:15/vmbus.patch
Normal file
|
@ -0,0 +1,68 @@
|
|||
--- sys/dev/hyperv/vmbus/hv_connection.c.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_connection.c
|
||||
@@ -476,31 +476,35 @@
|
||||
/**
|
||||
* Send a msg on the vmbus's message connection
|
||||
*/
|
||||
-int hv_vmbus_post_message(void *buffer, size_t bufferLen) {
|
||||
- int ret = 0;
|
||||
+int hv_vmbus_post_message(void *buffer, size_t bufferLen)
|
||||
+{
|
||||
hv_vmbus_connection_id connId;
|
||||
- unsigned retries = 0;
|
||||
-
|
||||
- /* NetScaler delays from previous code were consolidated here */
|
||||
- static int delayAmount[] = {100, 100, 100, 500, 500, 5000, 5000, 5000};
|
||||
-
|
||||
- /* for(each entry in delayAmount) try to post message,
|
||||
- * delay a little bit before retrying
|
||||
+ sbintime_t time = SBT_1MS;
|
||||
+ int retries;
|
||||
+ int ret;
|
||||
+
|
||||
+ connId.as_uint32_t = 0;
|
||||
+ connId.u.id = HV_VMBUS_MESSAGE_CONNECTION_ID;
|
||||
+
|
||||
+ /*
|
||||
+ * We retry to cope with transient failures caused by host side's
|
||||
+ * insufficient resources. 20 times should suffice in practice.
|
||||
*/
|
||||
- for (retries = 0;
|
||||
- retries < sizeof(delayAmount)/sizeof(delayAmount[0]); retries++) {
|
||||
- connId.as_uint32_t = 0;
|
||||
- connId.u.id = HV_VMBUS_MESSAGE_CONNECTION_ID;
|
||||
- ret = hv_vmbus_post_msg_via_msg_ipc(connId, 1, buffer, bufferLen);
|
||||
- if (ret != HV_STATUS_INSUFFICIENT_BUFFERS)
|
||||
- break;
|
||||
- /* TODO: KYS We should use a blocking wait call */
|
||||
- DELAY(delayAmount[retries]);
|
||||
+ for (retries = 0; retries < 20; retries++) {
|
||||
+ ret = hv_vmbus_post_msg_via_msg_ipc(connId, 1, buffer,
|
||||
+ bufferLen);
|
||||
+ if (ret == HV_STATUS_SUCCESS)
|
||||
+ return (0);
|
||||
+
|
||||
+ pause_sbt("pstmsg", time, 0, C_HARDCLOCK);
|
||||
+ if (time < SBT_1S * 2)
|
||||
+ time *= 2;
|
||||
}
|
||||
|
||||
- KASSERT(ret == 0, ("Error VMBUS: Message Post Failed\n"));
|
||||
+ KASSERT(ret == HV_STATUS_SUCCESS,
|
||||
+ ("Error VMBUS: Message Post Failed, ret=%d\n", ret));
|
||||
|
||||
- return (ret);
|
||||
+ return (EAGAIN);
|
||||
}
|
||||
|
||||
/**
|
||||
--- sys/dev/hyperv/vmbus/hv_vmbus_priv.h.orig
|
||||
+++ sys/dev/hyperv/vmbus/hv_vmbus_priv.h
|
||||
@@ -70,6 +70,7 @@
|
||||
* You did not supply enough message buffers to send a message.
|
||||
*/
|
||||
|
||||
+#define HV_STATUS_SUCCESS ((uint16_t)0)
|
||||
#define HV_STATUS_INSUFFICIENT_BUFFERS ((uint16_t)0x0013)
|
||||
|
||||
typedef void (*hv_vmbus_channel_callback)(void *context);
|
16
share/security/patches/EN-16:15/vmbus.patch.asc
Normal file
16
share/security/patches/EN-16:15/vmbus.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUskAAoJEO1n7NZdz2rnKtwP/2M6zkmYtHxSbx0eSIT6Kr9+
|
||||
rOhe4WzffqxMS3wCr3uj3gAzOYUJXibtrdZcgok3xm+S/zUo6AvEd43AI1tInzLg
|
||||
Wz7OMtagEOxtDml4bQEBGAbT/HWx8EHulmSMhcFyS8X6dwYlIl7xBOIQ9RiGVdS4
|
||||
1ILYL6K2dDbB79Pn+wuAdcaJGexZeQNiFdEItVeHkbm+uq9IZRUoKn9ADa/LrFGp
|
||||
a9nTKAdRpxflRvk4e60bO10HoleuLEp/2WGkEE83Yo/XvMsfdonUj2htQy1yxki/
|
||||
RUYF7lVAU7ZeJPeBBYdocP0FISwWKBzW7P8+7+2aJPPlJF24smBD9dD1D64YMnDf
|
||||
qudoLdRAPPCCWdkykswcGFcCcN6V33HlJgEJbAQ2F+6bsktyU9xJ0+aNNVMAs/wD
|
||||
lEDAVfTf6Yc2Ly1XaWk9VRuD0xDAVxixURAwFbhTxdDqtmFc8V5ExqR5vrAXG66J
|
||||
hhoABljOmVhP23gq+QsCKQyvqjSaymWzCCq1N/3S9mLNrmWC6IOto1kyX0EdQEcX
|
||||
L5gb1xrNbKeMVenlqOI4x3xi3+BlAGl/ocXJ+ilQUAWR3JqBMR1PcWImdLK7QMQC
|
||||
FvSsZOAdSmo1FpXh8ZWRIxkj+TPwXRJAyL93oXEKqGZdL2OjdbVsuVIWNeXwGKQf
|
||||
5PA/9P4SAjXWCEVq3Duy
|
||||
=ccKT
|
||||
-----END PGP SIGNATURE-----
|
165
share/security/patches/EN-16:16/hv_storvsc.patch
Normal file
165
share/security/patches/EN-16:16/hv_storvsc.patch
Normal file
|
@ -0,0 +1,165 @@
|
|||
--- sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c.orig
|
||||
+++ sys/dev/hyperv/storvsc/hv_storvsc_drv_freebsd.c
|
||||
@@ -805,6 +805,13 @@
|
||||
|
||||
vm_srb = &vstor_packet->u.vm_srb;
|
||||
|
||||
+ /*
|
||||
+ * Copy some fields of the host's response into the request structure,
|
||||
+ * because the fields will be used later in storvsc_io_done().
|
||||
+ */
|
||||
+ request->vstor_packet.u.vm_srb.scsi_status = vm_srb->scsi_status;
|
||||
+ request->vstor_packet.u.vm_srb.transfer_len = vm_srb->transfer_len;
|
||||
+
|
||||
if (((vm_srb->scsi_status & 0xFF) == SCSI_STATUS_CHECK_COND) &&
|
||||
(vm_srb->srb_status & SRB_STATUS_AUTOSENSE_VALID)) {
|
||||
/* Autosense data available */
|
||||
@@ -1939,62 +1946,24 @@
|
||||
}
|
||||
|
||||
/*
|
||||
- * Modified based on scsi_print_inquiry which is responsible to
|
||||
- * print the detail information for scsi_inquiry_data.
|
||||
- *
|
||||
+ * SCSI Inquiry checks qualifier and type.
|
||||
+ * If qualifier is 011b, means the device server is not capable
|
||||
+ * of supporting a peripheral device on this logical unit, and
|
||||
+ * the type should be set to 1Fh.
|
||||
+ *
|
||||
* Return 1 if it is valid, 0 otherwise.
|
||||
*/
|
||||
static inline int
|
||||
is_inquiry_valid(const struct scsi_inquiry_data *inq_data)
|
||||
{
|
||||
uint8_t type;
|
||||
- char vendor[16], product[48], revision[16];
|
||||
-
|
||||
- /*
|
||||
- * Check device type and qualifier
|
||||
- */
|
||||
- if (!(SID_QUAL_IS_VENDOR_UNIQUE(inq_data) ||
|
||||
- SID_QUAL(inq_data) == SID_QUAL_LU_CONNECTED))
|
||||
+ if (SID_QUAL(inq_data) != SID_QUAL_LU_CONNECTED) {
|
||||
return (0);
|
||||
-
|
||||
+ }
|
||||
type = SID_TYPE(inq_data);
|
||||
- switch (type) {
|
||||
- case T_DIRECT:
|
||||
- case T_SEQUENTIAL:
|
||||
- case T_PRINTER:
|
||||
- case T_PROCESSOR:
|
||||
- case T_WORM:
|
||||
- case T_CDROM:
|
||||
- case T_SCANNER:
|
||||
- case T_OPTICAL:
|
||||
- case T_CHANGER:
|
||||
- case T_COMM:
|
||||
- case T_STORARRAY:
|
||||
- case T_ENCLOSURE:
|
||||
- case T_RBC:
|
||||
- case T_OCRW:
|
||||
- case T_OSD:
|
||||
- case T_ADC:
|
||||
- break;
|
||||
- case T_NODEVICE:
|
||||
- default:
|
||||
+ if (type == T_NODEVICE) {
|
||||
return (0);
|
||||
}
|
||||
-
|
||||
- /*
|
||||
- * Check vendor, product, and revision
|
||||
- */
|
||||
- cam_strvis(vendor, inq_data->vendor, sizeof(inq_data->vendor),
|
||||
- sizeof(vendor));
|
||||
- cam_strvis(product, inq_data->product, sizeof(inq_data->product),
|
||||
- sizeof(product));
|
||||
- cam_strvis(revision, inq_data->revision, sizeof(inq_data->revision),
|
||||
- sizeof(revision));
|
||||
- if (strlen(vendor) == 0 ||
|
||||
- strlen(product) == 0 ||
|
||||
- strlen(revision) == 0)
|
||||
- return (0);
|
||||
-
|
||||
return (1);
|
||||
}
|
||||
|
||||
@@ -2071,7 +2040,6 @@
|
||||
ccb->ccb_h.status &= ~CAM_STATUS_MASK;
|
||||
if (vm_srb->scsi_status == SCSI_STATUS_OK) {
|
||||
const struct scsi_generic *cmd;
|
||||
-
|
||||
/*
|
||||
* Check whether the data for INQUIRY cmd is valid or
|
||||
* not. Windows 10 and Windows 2016 send all zero
|
||||
@@ -2080,23 +2048,59 @@
|
||||
cmd = (const struct scsi_generic *)
|
||||
((ccb->ccb_h.flags & CAM_CDB_POINTER) ?
|
||||
csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes);
|
||||
- if (cmd->opcode == INQUIRY &&
|
||||
- /*
|
||||
- * XXX: Temporary work around disk hot plugin on win2k12r2,
|
||||
- * only filtering the invalid disk on win10 or 2016 server.
|
||||
- * So, the hot plugin on win10 and 2016 server needs
|
||||
- * to be fixed.
|
||||
+ if (cmd->opcode == INQUIRY) {
|
||||
+ /*
|
||||
+ * The host of Windows 10 or 2016 server will response
|
||||
+ * the inquiry request with invalid data for unexisted device:
|
||||
+ [0x7f 0x0 0x5 0x2 0x1f ... ]
|
||||
+ * But on windows 2012 R2, the response is:
|
||||
+ [0x7f 0x0 0x0 0x0 0x0 ]
|
||||
+ * That is why here wants to validate the inquiry response.
|
||||
+ * The validation will skip the INQUIRY whose response is short,
|
||||
+ * which is less than SHORT_INQUIRY_LENGTH (36).
|
||||
+ *
|
||||
+ * For more information about INQUIRY, please refer to:
|
||||
+ * ftp://ftp.avc-pioneer.com/Mtfuji_7/Proposal/Jun09/INQUIRY.pdf
|
||||
*/
|
||||
- vmstor_proto_version == VMSTOR_PROTOCOL_VERSION_WIN10 &&
|
||||
- is_inquiry_valid(
|
||||
- (const struct scsi_inquiry_data *)csio->data_ptr) == 0) {
|
||||
+ const struct scsi_inquiry_data *inq_data =
|
||||
+ (const struct scsi_inquiry_data *)csio->data_ptr;
|
||||
+ uint8_t* resp_buf = (uint8_t*)csio->data_ptr;
|
||||
+ /* Get the buffer length reported by host */
|
||||
+ int resp_xfer_len = vm_srb->transfer_len;
|
||||
+ /* Get the available buffer length */
|
||||
+ int resp_buf_len = resp_xfer_len >= 5 ? resp_buf[4] + 5 : 0;
|
||||
+ int data_len = (resp_buf_len < resp_xfer_len) ? resp_buf_len : resp_xfer_len;
|
||||
+ if (data_len < SHORT_INQUIRY_LENGTH) {
|
||||
+ ccb->ccb_h.status |= CAM_REQ_CMP;
|
||||
+ if (bootverbose && data_len >= 5) {
|
||||
+ mtx_lock(&sc->hs_lock);
|
||||
+ xpt_print(ccb->ccb_h.path,
|
||||
+ "storvsc skips the validation for short inquiry (%d)"
|
||||
+ " [%x %x %x %x %x]\n",
|
||||
+ data_len,resp_buf[0],resp_buf[1],resp_buf[2],
|
||||
+ resp_buf[3],resp_buf[4]);
|
||||
+ mtx_unlock(&sc->hs_lock);
|
||||
+ }
|
||||
+ } else if (is_inquiry_valid(inq_data) == 0) {
|
||||
ccb->ccb_h.status |= CAM_DEV_NOT_THERE;
|
||||
+ if (bootverbose && data_len >= 5) {
|
||||
+ mtx_lock(&sc->hs_lock);
|
||||
+ xpt_print(ccb->ccb_h.path,
|
||||
+ "storvsc uninstalled invalid device"
|
||||
+ " [%x %x %x %x %x]\n",
|
||||
+ resp_buf[0],resp_buf[1],resp_buf[2],resp_buf[3],resp_buf[4]);
|
||||
+ mtx_unlock(&sc->hs_lock);
|
||||
+ }
|
||||
+ } else {
|
||||
+ ccb->ccb_h.status |= CAM_REQ_CMP;
|
||||
if (bootverbose) {
|
||||
mtx_lock(&sc->hs_lock);
|
||||
xpt_print(ccb->ccb_h.path,
|
||||
- "storvsc uninstalled device\n");
|
||||
+ "storvsc has passed inquiry response (%d) validation\n",
|
||||
+ data_len);
|
||||
mtx_unlock(&sc->hs_lock);
|
||||
}
|
||||
+ }
|
||||
} else {
|
||||
ccb->ccb_h.status |= CAM_REQ_CMP;
|
||||
}
|
16
share/security/patches/EN-16:16/hv_storvsc.patch.asc
Normal file
16
share/security/patches/EN-16:16/hv_storvsc.patch.asc
Normal file
|
@ -0,0 +1,16 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQIcBAABCgAGBQJXrUslAAoJEO1n7NZdz2rn/NMQAMvOWBMZC0WhfJ/Y48Gh+gOQ
|
||||
wt0FZ6/AJgsUTrOUaYIqdRNpmszVZjujIXdHCsrUu7iJGK1M/OqNEOrVqbjAN3iX
|
||||
J/EaJgRKYja3glf2Xzu6ow+uMRy9jM26g1EOpHeUzYk/ndV2/Vg8lrUOvPL40KA6
|
||||
QskcbO1RLrVb0ytszGA6l2r2XGKckHKPUrTEv7/43u8FJg05WAn3I1HXAKbzJFzm
|
||||
TaDJCMCzjnO/v0bXsoL+2fUrtFJuNbaxGkAzgQsaBgvjRffQCpOxZYUNemWBxuzD
|
||||
ZOleQ6IjwUWoZVlbbdjYsLMHyxKOOmATzyerrtKvvVv4gsl7ImKRuiZAPHsk4CR/
|
||||
jhVv2ASODQwk879jeqsSuSZhiWj20kf5JS9XoKUm1KF28CltfKCXC+pjBkp0IRDR
|
||||
o+SwyCUelPHWYbhHa8PoVIzGLYZIqXav/REJTHeIb6lp88ayfTuL/kK5I7lgHRIC
|
||||
DI+yvo5OXhBxL847K8++DH1k5KdB34ySenmX3D1HuOp4tlGcdYJAGxqDrY5rPrGX
|
||||
qLQBFrSrpJfGfG0NO3ldUqdcjesVALe7SgQtnblYoj7Nmem4y1MUCXCHaU+oowTI
|
||||
37jaaJ476rJJ7Ai4Vkwx8StyaQ3++BYSb+oHtjaFHzBz1X5WI+6ppZPKh6J8kwPK
|
||||
m5x91Fjl/SpjlwuxKA3h
|
||||
=RWdh
|
||||
-----END PGP SIGNATURE-----
|
|
@ -7,6 +7,42 @@
|
|||
<year>
|
||||
<name>2016</name>
|
||||
|
||||
<month>
|
||||
<name>8</name>
|
||||
|
||||
<day>
|
||||
<name>12</name>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:16.hv_storvsc</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:15.vmbus</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:14.hv_storvsc</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:13.vmbus</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:12.hv_storvsc</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:11.vmbus</name>
|
||||
</notice>
|
||||
|
||||
<notice>
|
||||
<name>FreeBSD-EN-16:10.dhclient</name>
|
||||
</notice>
|
||||
</day>
|
||||
</month>
|
||||
|
||||
<month>
|
||||
<name>7</name>
|
||||
|
||||
|
|
Loading…
Reference in a new issue