Compare commits

...
36 Commits
Author SHA1 Message Date
Simon L. B. Nielsen 5381b89e04 Fix a race condition exists in the OpenSSL TLS server extension code and
a double free in the SSL client ECDH handling code.

Approved by:	so (simon)
Security:	CVE-2010-2939, CVE-2010-3864
Security:	FreeBSD-SA-10:10.openssl
2010-11-29 20:43:06 +00:00
Colin Percival 3a68eb81a0 Fix an integer overflow in RLE length parsing when decompressing
corrupt bzip2 data.

Approved by:	so (cperciva)
Security:	FreeBSD-SA-10:08.bzip2
2010-09-20 14:58:08 +00:00
Colin Percival e811d1f0f6 Correctly copy the M_RDONLY flag when duplicating a reference
to an mbuf external buffer.

Approved by:	so (cperciva)
Approved by:	re (kensmith)
Security:	FreeBSD-SA-10:07.mbuf
2010-07-13 02:45:17 +00:00
Colin Percival a6b5951a11 Change the current working directory to be inside the jail created by
the jail(8) command. [10:04]

Fix a one-NUL-byte buffer overflow in libopie. [10:05]

Correctly sanity-check a buffer length in nfs mount. [10:06]

Approved by:	so (cperciva)
Approved by:	re (kensmith)
Security:	FreeBSD-SA-10:04.jail
Security:	FreeBSD-SA-10:05.opie
Security:	FreeBSD-SA-10:06.nfsclient
2010-05-27 03:15:04 +00:00
Simon L. B. Nielsen 2e7e77ff79 Fix BIND named(8) cache poisoning with DNSSEC validation.
[SA-10:01]

Fix ntpd mode 7 denial of service. [SA-10:02]

Fix ZFS ZIL playback with insecure permissions. [SA-10:03]

Various FreeBSD 8.0-RELEASE improvements. [EN-10:01]

Security:	FreeBSD-SA-10:01.bind
Security:	FreeBSD-SA-10:02.ntpd
Security:	FreeBSD-SA-10:03.zfs
Errata:		FreeBSD-EN-10:01.freebsd
Approved by:	so (simon)
2010-01-06 21:45:30 +00:00
Simon L. B. Nielsen 1cc4828b9a Bump the patch level in the kernel version number, which was
accidentally left out of main commit for SA-09:15, SA-09:15, and
SA-09:17 in r200054.

Approved by:	so (simon)
2009-12-03 12:59:39 +00:00
Colin Percival c08f10bc48 Disable SSL renegotiation in order to protect against a serious
protocol flaw. [09:15]

Correctly handle failures from unsetenv resulting from a corrupt
environment in rtld-elf. [09:16]

Fix permissions in freebsd-update in order to prevent leakage of
sensitive files. [09:17]

Approved by:	so (cperciva)
Security:	FreeBSD-SA-09:15.ssl
Security:	FreeBSD-SA-09:16.rtld
Security:	FreeBSD-SA-09:17.freebsd-udpate
2009-12-03 09:18:40 +00:00
Ken Smith 59dd044d1c Predict when 8.0-RELEASE will be announced.
Approved by:	re (implicit)
2009-11-20 16:00:40 +00:00
Ken Smith fc8b5e644f Prepare for 8.0-RELEASE builds.
Approved by:	re (implicit)
2009-11-20 15:55:23 +00:00
Ken Smith 93f0adb458 Make a few adjustments to say this is 8.0-RELEASE. Add a warning that
the actual release notes were not available at the time of the release
builds, they are still being assembled.  Remove the existing entries
which are not accurate for 8.0-RELEASE.

Approved by:	re (implicit)
2009-11-20 15:53:59 +00:00
Ken Smith a3f27f9ed4 Remove the warning that all users should subscribe to -current, it
only applies to head.

Approved by:	re (implicit)
2009-11-20 15:51:07 +00:00
Ken Smith 357894a88e Adjust to reflect 8.0-RELEASE.
Approved by:	re (implicit)
2009-11-20 15:48:58 +00:00
Jack F Vogel 17a789523f On a 32 bit kernel the igb driver may cause a page
fault panic due to a failed bounce page allocation
during RX mbuf setup. The large demand on bounce pages
is due to the alignment requirement in the tag, the
ixgbe driver has demonstrated this to be unnecessary
and so it is being removed here to fix this problem.

Note that ultimately there needs to be a more elegant
handling of the failure case here.

Approved by:  re
2009-11-16 18:46:33 +00:00
Robert Noland cb752cfcac MFC r199241
This patch addresses an overflow in the the zfs boot code and allows
users to boot from zfs raidz volumes.  This has been tested by a number
of users and does not impact those which are not booting from zfs raidz
volumes.

Submitted by:	Matt Reimer <[email protected]>
Approved by:	re (kib)
2009-11-14 18:42:09 +00:00
Ken Smith 9bcf40edac Ready for 8.0-RC3 builds.
Approved by:	re (implicit)
2009-11-10 00:55:00 +00:00
Xin LI 0a949f8099 MFC r198846 (MF8 r199121):
Set umask to 0x077 instead of the default.  This prevents non-root user
from reading crashinfo output, which could contain some sensitive
information.

Approved by:	re (kensmith)
2009-11-10 00:52:22 +00:00
Xin LI e868427534 MFC revision 199069 (MF8 199120):
Initialize the whole message unit's DMA buffer to zero, this fixes a panic
during boot when ARC1200 is being used with certain motherboard models.

This commit brings the driver to the same state of vendor's 1.20.00.16
release.  Many thanks to Areca for their continued support to FreeBSD.

Reported by:	Jirka Mikulas <jiri mikulas com>
Submitted by:	Erich Chen (Areca)
Approved by:	re (kensmith)
2009-11-10 00:46:08 +00:00
Ken Smith 4df8d91866 Adjust branch tag.
Approved by:	re (implicit)
2009-11-09 23:57:40 +00:00
Ken Smith cf79ed3803 Adjust the branch tag used for 'make update'.
Approved by:	re (implicit)
2009-11-09 23:55:49 +00:00
Ken Smith 34f914c8dc MFC r199112:
> Comment out the sbp(4) entry for GENERIC config files that contain it.
> There are known issues with this driver that are beyond what can be
> fixed for 8.0-RELEASE and the bugs can cause boot failure on some systems.
> It's not clear if it impacts all systems and there is interest in getting
> the problem fixed so for now just comment it out instead of remove it.

Reviewed by:	Primary misc. architecture maintainers (marcel, marius)
Approved by:	re (kib)
2009-11-09 23:48:01 +00:00
Nathan Whitehorn faf2e10bc0 Insta-MFC of r199084,199108:
Increase the size of the OFW translations buffer to handle G5 systems
    that use many translation regions in firmware, and add bounds checking
    to prevent buffer overflows in case even the new value is exceeded.

Short MFC requested by re since the problem this fixes broken CD boot on
most G5 systems, making them uninstallable.

Reported by:	Jacob Lambert
Approved by:	re (kib)
Reviewed by:	grehan, marcel
Requested by:	re
2009-11-09 21:54:34 +00:00
Ken Smith 65a1fd769a MFC r198719 (head) r199095 (stable/8):
> While certain supported Symbios/LSI SCSI chips (532c896, 53c1000, 53c1010)
> do support 64bit addresses, the current SCRIPTS code supports only 32bit
> addresses causing data corruption for buffer addresses >4GB. This problem
> affects 64bit machines with more than 4GB RAM or amd64 with 4GB and
> memory hole remapping.
> Work-around this problem with a bus_dma tag that requests bounce-buffers
> for addresses >4GB. This causes some overhead, but given the maximum SCSI
> bus speed of 160MB/s compared, the effect should hardly be noticeable.
> The problem was reported by Mike Watters (mike at mwatters net) who also
> verified that this fix cures the problem.
>
> Since this change is a NOOP on systems with less than 4GB RAM and fixes
> data corruption (in RAM and on disk) on systems with more than 4GB, I hope
> that this change is accepted for 8.0.

Requested by: Stefan Esser (se at freebsd dot org)[1]
Reviewed by:  jhb, scottl

[1] Stefan requested this be part of 8.0 but has been unavailable to do
    the MFC since submitting the request.  We want to get 8.0-RC3 started
    so I'm doing the merges with re@ hat on.

Approved by:	re (bz)
2009-11-09 21:28:07 +00:00
Rong-En Fan 3092cfd15b MFC r198948 from HEAD:
Revert the spelling of Taiwan to be politically neutral in accordance
 with the policy published at http://www.freebsd.org/internal/i18n.html.

 Requested by: core (murray)

Approved by:	re (kib)
2009-11-08 16:01:48 +00:00
Attilio Rao 21998cced7 MFC r197070:
Consolidate CPUID to CPU family/model macros for amd64 and i386 to reduce
unnecessary #ifdef's for shared code between them.

This MFC should unbreak the kernel build breakage introduced by
r198978.

Reported by:	kib
Pointy hat to:	me
Approved by:	re (kib)
2009-11-06 17:09:04 +00:00
Edward Tomasz Napierala 09700a122a MFC r197789:
Fix ACL support on sparc64.  Turns out that fuword(9) fetches 64 bits
instead of sizeof(int), and on sparc64 that resulted in fetching wrong
value for acl_maxcnt, which in turn caused __acl_get_link(2) to fail
with EINVAL.

PR:		sparc64/139304
Submitted by:	Dmitry Afanasiev <KOT at MATPOCKuH.Ru>
Approved by:	re (kib)
2009-11-06 11:29:10 +00:00
Attilio Rao 2b145d4338 MFC r198868, r198950:
Opteron rev E family of processor expose a bug where acq memory barriers
can be broken, resulting in random breakages.
Printout a warning message if affected family and model are found.

Approved by:	re (kib)
2009-11-06 10:17:08 +00:00
Matt Jacob 92b18d813e Unbreak SBus cards which have been broken (apparently) for a while.
Most of the pieces came from Marius- correct settings for channels
and resource management. The one piece missing was that you cannot
for SBus cards replace 32 bit operations with A64 operations- not
supported. MFC of 198822.

Approved by:	re (ks)
2009-11-05 19:55:42 +00:00
John Baldwin 0a43e0477c MFC 198554:
Fix some problems with effective mmap() offsets > 32 bits.  This was
partially fixed on amd64 earlier.  Rather than forcing linux_mmap_common()
to use a 32-bit offset, have it accept a 64-bit file offset.  This offset
is then passed to the real mmap() call.  Rather than inventing a structure
to hold the normal linux_mmap args that has a 64-bit offset, just pass
each of the arguments individually to linux_mmap_common() since that more
closes matches the existing style of various kern_foo() functions.

Approved by:	re (kib)
2009-11-05 16:16:56 +00:00
Andrew Thompson fd80572866 MFC r198775
Fix a corner case where usbd_transfer_drain() can return too early if the
 callback has dropped the mutex, leading to a panic.

Submitted by:	HPS
Approved by:	re (kib)
2009-11-04 21:28:50 +00:00
Hiroki Sato b9bd7bf678 MFC r197999:
Fix the 106/109 USB Japanese keyboard "underscore" issue.
Sun Type 6 USB keyboard support (added in rev 1.46) conflicted with
some scan codes used in Japanese keyboards because the scan code
conversion routine was ambiguous for the overlapped codes.

PR:		ports/134005
Submitted by:	YAMASHIRO Jun
Approved by:	re (kib)
2009-11-02 06:36:54 +00:00
Rong-En Fan 08ff25d373 MFC r198490
Pull upstream patch to fix ee(1) crash when received SIGWINCH:

   modify _nc_wgetch() to check for a -1 in the fifo, e.g., after a
   SIGWINCH, and discard that value, to avoid confusing application
   (patch by Eygene Ryabinkin, FreeBSD bin/136223).

PR:		136223
Submitted by:	Eygene Ryabinkin
Obtained from:	ncurses-5.7-20091024 snapshot
Approved by:	re (kib@)
2009-10-31 12:58:13 +00:00
Alexander Motin 337287c2c8 MFC rev. 198480, 198483:
Document new modularised ATA kernel modules and options.

PR:             kern/133162, amd64/139859
Approved by:    re (kib)
2009-10-29 15:42:50 +00:00
Alexander Motin 9919881dba MFC rev. 198479:
Fix SATA on nVidia MCP55 chipset. It needs some short time to allow
BAR(5) memory access.

PR:		amd64/128686, amd64/132372, amd64/139156
Approved by:	re (kib)
2009-10-29 11:52:26 +00:00
Qing Li 1ce9ab7f77 MFC r198353
Verify "smp_started" is true before calling
sched_bind() and sched_unbind().

Reviewed by:	kmacy
Approved by:	re
2009-10-28 22:00:49 +00:00
Edwin Groothuis e104a03eb5 MFC of r197597, r198270, r198515.
MFC of tzdata2009n:
- Pakistan will go out DST on 1 October.
- Headsup for changes in Argentina.

MFC of tzdata2009o:
- Somoa has not moved to DST this year (comment only)
- Bangladesh stays on DST for now.
- Pakistan went back to standard time in 1 October 2009

MFC of tzdata2009p:
- Argentina does not go to DST this year.

Approved by:	re (Ken Smith)
2009-10-28 21:12:34 +00:00
John Baldwin 190f5f216b MFC: Remove spurious README and an old version of the manpage.
Approved by:	re (kib)
2009-10-28 21:11:13 +00:00
77 changed files with 854 additions and 1308 deletions

No files matched your search

+1 -1
View File
@@ -93,7 +93,7 @@ CLEANDIR= cleandir
.endif
CVS?= cvs
CVSFLAGS?= -r RELENG_8 -P -d -I!
CVSFLAGS?= -r RELENG_8_0 -P -d -I!
SVN?= svn
SVNFLAGS?= -r HEAD
SUP?= /usr/bin/csup
+54
View File
@@ -15,6 +15,51 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
debugging tools present in HEAD were left in place because
sun4v support still needs work to become production ready.
20101129: p6 FreeBSD-SA-10:10.openssl
Fix OpenSSL multiple vulnerabilities.
20100920: p5 FreeBSD-SA-10:08.bzip2
Fix an integer overflow in RLE length parsing when decompressing
corrupt bzip2 data.
20100713: p4 FreeBSD-SA-10:07.mbuf
Correctly copy the M_RDONLY flag when duplicating a reference
to an mbuf external buffer.
20100526: p3 FreeBSD-SA-10:04.jail, FreeBSD-SA-10:05.opie,
FreeBSD-SA-10:06.nfsclient
Change the current working directory to be inside the jail created by
the jail(8) command. [10:04]
Fix a one-NUL-byte buffer overflow in libopie. [10:05]
Correctly sanity-check a buffer length in nfs mount. [10:06]
20100106: p2 FreeBSD-SA-10:01.bind, FreeBSD-SA-10:02.ntpd,
FreeBSD-SA-10:03.zfs, FreeBSD-EN-10:01.freebsd
Fix BIND named(8) cache poisoning with DNSSEC validation.
[SA-10:01]
Fix ntpd mode 7 denial of service. [SA-10:02]
Fix ZFS ZIL playback with insecure permissions. [SA-10:03]
Various FreeBSD 8.0-RELEASE improvements. [EN-10:01]
20091203: p1 FreeBSD-SA-09:15.ssl, FreeBSD-SA-09:16.rtld,
FreeBSD-SA-09:17.freebsd-update
Disable SSL renegotiation in order to protect against a serious
protocol flaw. [09:15]
Correctly handle failures from unsetenv resulting from a corrupt
environment in rtld-elf. [09:16]
Fix permissions in freebsd-update in order to prevent leakage of
sensitive files. [09:17]
20091125:
8.0-RELEASE.
20090929:
802.11s D3.03 support was committed. This is incompatible with
the previous code, which was based on D3.0.
@@ -566,6 +611,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8.x IS SLOW ON IA64 OR SUN4V:
userland (libpmc(3)) and the kernel module (hwpmc(4)) in
sync.
20081009:
atapci kernel module now includes only generic PCI ATA
driver. AHCI driver moved to ataahci kernel module.
All vendor-specific code moved into separate kernel modules:
ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
atamarvell, atamicron, atanational, atanetcell, atanvidia,
atapromise, ataserverworks, atasiliconimage, atasis, atavia
20080820:
The TTY subsystem of the kernel has been replaced by a new
implementation, which provides better scalability and an
+55 -11
View File
@@ -116,6 +116,8 @@
#define DNS_GETDB_NOLOG 0x02U
#define DNS_GETDB_PARTIAL 0x04U
#define PENDINGOK(x) (((x) & DNS_DBFIND_PENDINGOK) != 0)
typedef struct client_additionalctx {
ns_client_t *client;
dns_rdataset_t *rdataset;
@@ -1761,8 +1763,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
*/
if (result == ISC_R_SUCCESS &&
additionaltype == dns_rdatasetadditional_fromcache &&
(rdataset->trust == dns_trust_pending ||
rdataset->trust == dns_trust_glue) &&
(DNS_TRUST_PENDING(rdataset->trust) ||
DNS_TRUST_GLUE(rdataset->trust)) &&
!validate(client, db, fname, rdataset, sigrdataset)) {
dns_rdataset_disassociate(rdataset);
if (dns_rdataset_isassociated(sigrdataset))
@@ -1801,8 +1803,8 @@ query_addadditional2(void *arg, dns_name_t *name, dns_rdatatype_t qtype) {
*/
if (result == ISC_R_SUCCESS &&
additionaltype == dns_rdatasetadditional_fromcache &&
(rdataset->trust == dns_trust_pending ||
rdataset->trust == dns_trust_glue) &&
(DNS_TRUST_PENDING(rdataset->trust) ||
DNS_TRUST_GLUE(rdataset->trust)) &&
!validate(client, db, fname, rdataset, sigrdataset)) {
dns_rdataset_disassociate(rdataset);
if (dns_rdataset_isassociated(sigrdataset))
@@ -2601,14 +2603,14 @@ query_addbestns(ns_client_t *client) {
/*
* Attempt to validate RRsets that are pending or that are glue.
*/
if ((rdataset->trust == dns_trust_pending ||
(sigrdataset != NULL && sigrdataset->trust == dns_trust_pending))
if ((DNS_TRUST_PENDING(rdataset->trust) ||
(sigrdataset != NULL && DNS_TRUST_PENDING(sigrdataset->trust)))
&& !validate(client, db, fname, rdataset, sigrdataset) &&
(client->query.dboptions & DNS_DBFIND_PENDINGOK) == 0)
!PENDINGOK(client->query.dboptions))
goto cleanup;
if ((rdataset->trust == dns_trust_glue ||
(sigrdataset != NULL && sigrdataset->trust == dns_trust_glue)) &&
if ((DNS_TRUST_GLUE(rdataset->trust) ||
(sigrdataset != NULL && DNS_TRUST_GLUE(sigrdataset->trust))) &&
!validate(client, db, fname, rdataset, sigrdataset) &&
SECURE(client) && WANTDNSSEC(client))
goto cleanup;
@@ -3716,6 +3718,8 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
dns_rdataset_t *noqname;
isc_boolean_t resuming;
int line = -1;
dns_rdataset_t tmprdataset;
unsigned int dboptions;
CTRACE("query_find");
@@ -3933,9 +3937,49 @@ query_find(ns_client_t *client, dns_fetchevent_t *event, dns_rdatatype_t qtype)
/*
* Now look for an answer in the database.
*/
dboptions = client->query.dboptions;
if (sigrdataset == NULL && client->view->enablednssec) {
/*
* If the client doesn't want DNSSEC we still want to
* look for any data pending validation to save a remote
* lookup if possible.
*/
dns_rdataset_init(&tmprdataset);
sigrdataset = &tmprdataset;
dboptions |= DNS_DBFIND_PENDINGOK;
}
refind:
result = dns_db_find(db, client->query.qname, version, type,
client->query.dboptions, client->now,
&node, fname, rdataset, sigrdataset);
dboptions, client->now, &node, fname,
rdataset, sigrdataset);
/*
* If we have found pending data try to validate it.
* If the data does not validate as secure and we can't
* use the unvalidated data requery the database with
* pending disabled to prevent infinite looping.
*/
if (result != ISC_R_SUCCESS || !DNS_TRUST_PENDING(rdataset->trust))
goto validation_done;
if (validate(client, db, fname, rdataset, sigrdataset))
goto validation_done;
if (rdataset->trust != dns_trust_pending_answer ||
!PENDINGOK(client->query.dboptions)) {
dns_rdataset_disassociate(rdataset);
if (sigrdataset != NULL &&
dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
if (sigrdataset == &tmprdataset)
sigrdataset = NULL;
dns_db_detachnode(db, &node);
dboptions &= ~DNS_DBFIND_PENDINGOK;
goto refind;
}
validation_done:
if (sigrdataset == &tmprdataset) {
if (dns_rdataset_isassociated(sigrdataset))
dns_rdataset_disassociate(sigrdataset);
sigrdataset = NULL;
}
resume:
CTRACE("query_find: resume");
+22 -10
View File
@@ -258,40 +258,52 @@ enum {
dns_trust_none = 0,
#define dns_trust_none ((dns_trust_t)dns_trust_none)
/*% Subject to DNSSEC validation but has not yet been validated */
dns_trust_pending = 1,
#define dns_trust_pending ((dns_trust_t)dns_trust_pending)
/*%
* Subject to DNSSEC validation but has not yet been validated
* dns_trust_pending_additional (from the additional section).
*/
dns_trust_pending_additional = 1,
#define dns_trust_pending_additional \
((dns_trust_t)dns_trust_pending_additional)
dns_trust_pending_answer = 2,
#define dns_trust_pending_answer ((dns_trust_t)dns_trust_pending_answer)
/*% Received in the additional section of a response. */
dns_trust_additional = 2,
dns_trust_additional = 3,
#define dns_trust_additional ((dns_trust_t)dns_trust_additional)
/* Received in a referral response. */
dns_trust_glue = 3,
dns_trust_glue = 4,
#define dns_trust_glue ((dns_trust_t)dns_trust_glue)
/* Answer from a non-authoritative server */
dns_trust_answer = 4,
dns_trust_answer = 5,
#define dns_trust_answer ((dns_trust_t)dns_trust_answer)
/* Received in the authority section as part of an
authoritative response */
dns_trust_authauthority = 5,
dns_trust_authauthority = 6,
#define dns_trust_authauthority ((dns_trust_t)dns_trust_authauthority)
/* Answer from an authoritative server */
dns_trust_authanswer = 6,
dns_trust_authanswer = 7,
#define dns_trust_authanswer ((dns_trust_t)dns_trust_authanswer)
/* Successfully DNSSEC validated */
dns_trust_secure = 7,
dns_trust_secure = 8,
#define dns_trust_secure ((dns_trust_t)dns_trust_secure)
/* This server is authoritative */
dns_trust_ultimate = 8
dns_trust_ultimate = 9
#define dns_trust_ultimate ((dns_trust_t)dns_trust_ultimate)
};
#define DNS_TRUST_PENDING(x) ((x) == dns_trust_pending_answer || \
(x) == dns_trust_pending_additional)
#define DNS_TRUST_GLUE(x) ((x) == dns_trust_glue)
/*%
* Name checking severities.
*/
+2 -1
View File
@@ -775,7 +775,8 @@ dump_order_compare(const void *a, const void *b) {
static const char *trustnames[] = {
"none",
"pending",
"pending-additional",
"pending-answer",
"additional",
"glue",
"answer",
+2 -2
View File
@@ -4005,7 +4005,7 @@ cache_zonecut_callback(dns_rbtnode_t *node, dns_name_t *name, void *arg) {
}
if (dname_header != NULL &&
(dname_header->trust != dns_trust_pending ||
(!DNS_TRUST_PENDING(dname_header->trust) ||
(search->options & DNS_DBFIND_PENDINGOK) != 0)) {
/*
* We increment the reference count on node to ensure that
@@ -4548,7 +4548,7 @@ cache_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
if (found == NULL ||
(found->trust == dns_trust_glue &&
((options & DNS_DBFIND_GLUEOK) == 0)) ||
(found->trust == dns_trust_pending &&
(DNS_TRUST_PENDING(found->trust) &&
((options & DNS_DBFIND_PENDINGOK) == 0))) {
/*
* If there is an NS rdataset at this node, then this is the
+28 -5
View File
@@ -4293,6 +4293,7 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo,
* for it, unless it is glue.
*/
if (secure_domain && rdataset->trust != dns_trust_glue) {
dns_trust_t trust;
/*
* RRSIGs are validated as part of validating the
* type they cover.
@@ -4329,12 +4330,34 @@ cache_name(fetchctx_t *fctx, dns_name_t *name, dns_adbaddrinfo_t *addrinfo,
}
/*
* Cache this rdataset/sigrdataset pair as
* pending data.
* Reject out of bailiwick additional records
* without RRSIGs as they can't possibly validate
* as "secure" and as we will never never want to
* store these as "answers" after validation.
*/
rdataset->trust = dns_trust_pending;
if (rdataset->trust == dns_trust_additional &&
sigrdataset == NULL && EXTERNAL(rdataset))
continue;
/*
* XXXMPA: If we store as "answer" after validating
* then we need to do bailiwick processing and
* also need to track whether RRsets are in or
* out of bailiwick. This will require a another
* pending trust level.
*
* Cache this rdataset/sigrdataset pair as
* pending data. Track whether it was additional
* or not.
*/
if (rdataset->trust == dns_trust_additional)
trust = dns_trust_pending_additional;
else
trust = dns_trust_pending_answer;
rdataset->trust = trust;
if (sigrdataset != NULL)
sigrdataset->trust = dns_trust_pending;
sigrdataset->trust = trust;
if (!need_validation || !ANSWER(rdataset)) {
addedrdataset = ardataset;
result = dns_db_addrdataset(fctx->cache, node,
@@ -4682,7 +4705,7 @@ ncache_message(fetchctx_t *fctx, dns_adbaddrinfo_t *addrinfo,
for (trdataset = ISC_LIST_HEAD(tname->list);
trdataset != NULL;
trdataset = ISC_LIST_NEXT(trdataset, link))
trdataset->trust = dns_trust_pending;
trdataset->trust = dns_trust_pending_answer;
result = dns_message_nextname(fctx->rmessage,
DNS_SECTION_AUTHORITY);
}
+5 -5
View File
@@ -1607,7 +1607,7 @@ get_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo) {
* We have an rrset for the given keyname.
*/
val->keyset = &val->frdataset;
if (val->frdataset.trust == dns_trust_pending &&
if (DNS_TRUST_PENDING(val->frdataset.trust) &&
dns_rdataset_isassociated(&val->fsigrdataset))
{
/*
@@ -1622,7 +1622,7 @@ get_key(dns_validator_t *val, dns_rdata_rrsig_t *siginfo) {
if (result != ISC_R_SUCCESS)
return (result);
return (DNS_R_WAIT);
} else if (val->frdataset.trust == dns_trust_pending) {
} else if (DNS_TRUST_PENDING(val->frdataset.trust)) {
/*
* Having a pending key with no signature means that
* something is broken.
@@ -2243,7 +2243,7 @@ validatezonekey(dns_validator_t *val) {
* We have DS records.
*/
val->dsset = &val->frdataset;
if (val->frdataset.trust == dns_trust_pending &&
if (DNS_TRUST_PENDING(val->frdataset.trust) &&
dns_rdataset_isassociated(&val->fsigrdataset))
{
result = create_validator(val,
@@ -2256,7 +2256,7 @@ validatezonekey(dns_validator_t *val) {
if (result != ISC_R_SUCCESS)
return (result);
return (DNS_R_WAIT);
} else if (val->frdataset.trust == dns_trust_pending) {
} else if (DNS_TRUST_PENDING(val->frdataset.trust)) {
/*
* There should never be an unsigned DS.
*/
@@ -3337,7 +3337,7 @@ proveunsecure(dns_validator_t *val, isc_boolean_t have_ds, isc_boolean_t resume)
* There is no DS. If this is a delegation,
* we maybe done.
*/
if (val->frdataset.trust == dns_trust_pending) {
if (DNS_TRUST_PENDING(val->frdataset.trust)) {
result = create_fetch(val, tname,
dns_rdatatype_ds,
dsfetched2,
+7
View File
@@ -381,6 +381,13 @@ Int32 BZ2_decompress ( DState* s )
es = -1;
N = 1;
do {
/* Check that N doesn't get too big, so that es doesn't
go negative. The maximum value that can be
RUNA/RUNB encoded is equal to the block size (post
the initial RLE), viz, 900k, so bounding N at 2
million should guard against overflow without
rejecting any legitimate inputs. */
if (N >= 2*1024*1024) RETURN(BZ_DATA_ERROR);
if (nextSym == BZ_RUNA) es = es + (0+1) * N; else
if (nextSym == BZ_RUNB) es = es + (1+1) * N;
N = N * 2;
+6
View File
@@ -476,6 +476,12 @@ _nc_wgetch(WINDOW *win,
/* resizeterm can push KEY_RESIZE */
if (cooked_key_in_fifo()) {
*result = fifo_pull(sp);
/*
* Get the ERR from queue -- it is from WINCH,
* so we should take it out, the "error" is handled.
*/
if (fifo_peek(sp) == -1)
fifo_pull(sp);
returnCode(*result >= KEY_MIN ? KEY_CODE_YES : OK);
}
}
+9 -2
View File
@@ -409,6 +409,7 @@ process_private(
int mod_okay
)
{
static u_long quiet_until;
struct req_pkt *inpkt;
struct req_pkt_tail *tailinpkt;
struct sockaddr_storage *srcadr;
@@ -444,8 +445,14 @@ process_private(
|| (++ec, INFO_MBZ(inpkt->mbz_itemsize) != 0)
|| (++ec, rbufp->recv_length < REQ_LEN_HDR)
) {
msyslog(LOG_ERR, "process_private: INFO_ERR_FMT: test %d failed, pkt from %s", ec, stoa(srcadr));
req_ack(srcadr, inter, inpkt, INFO_ERR_FMT);
NLOG(NLOG_SYSEVENT)
if (current_time >= quiet_until) {
msyslog(LOG_ERR,
"process_private: drop test %d"
" failed, pkt from %s",
ec, stoa(srcadr));
quiet_until = current_time + 60;
}
return;
}
+1 -3
View File
@@ -141,10 +141,8 @@ int __opiereadrec FUNCTION((opie), struct opie *opie)
if (c = strchr(opie->opie_principal, ':'))
*c = 0;
if (strlen(opie->opie_principal) > OPIE_PRINCIPAL_MAX)
(opie->opie_principal)[OPIE_PRINCIPAL_MAX] = 0;
strcpy(principal, opie->opie_principal);
strlcpy(principal, opie->opie_principal, sizeof(principal));
do {
if ((opie->opie_recstart = ftell(f)) < 0)
+1
View File
@@ -1378,6 +1378,7 @@ int ssl3_get_key_exchange(SSL *s)
s->session->sess_cert->peer_ecdh_tmp=ecdh;
ecdh=NULL;
BN_CTX_free(bn_ctx);
bn_ctx = NULL;
EC_POINT_free(srvr_ecpoint);
srvr_ecpoint = NULL;
}
+3
View File
@@ -2592,6 +2592,9 @@ int ssl3_renegotiate(SSL *s)
if (s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS)
return(0);
if (1)
return(0);
s->s3->renegotiate=1;
return(1);
}
+2 -5
View File
@@ -983,9 +983,7 @@ start:
if (s->msg_callback)
s->msg_callback(0, s->version, SSL3_RT_HANDSHAKE, s->s3->handshake_fragment, 4, s, s->msg_callback_arg);
if (SSL_is_init_finished(s) &&
!(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS) &&
!s->s3->renegotiate)
if (0)
{
ssl3_renegotiate(s);
if (ssl3_renegotiate_check(s))
@@ -1116,8 +1114,7 @@ start:
/* Unexpected handshake message (Client Hello, or protocol violation) */
if ((s->s3->handshake_fragment_len >= 4) && !s->in_handshake)
{
if (((s->state&SSL_ST_MASK) == SSL_ST_OK) &&
!(s->s3->flags & SSL3_FLAGS_NO_RENEGOTIATE_CIPHERS))
if (0)
{
#if 0 /* worked only because C operator preferences are not as expected (and
* because this is not really needed for clients except for detecting
+7
View File
@@ -718,6 +718,13 @@ int ssl3_get_client_hello(SSL *s)
#endif
STACK_OF(SSL_CIPHER) *ciphers=NULL;
if (s->new_session)
{
al=SSL_AD_HANDSHAKE_FAILURE;
SSLerr(SSL_F_SSL3_GET_CLIENT_HELLO, ERR_R_INTERNAL_ERROR);
goto f_err;
}
/* We do this so that we will respond with our native type.
* If we are TLSv1 and we get SSLv3, we will respond with TLSv1,
* This down switching should be handled by a different method.
+14 -4
View File
@@ -369,14 +369,23 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
switch (servname_type)
{
case TLSEXT_NAMETYPE_host_name:
if (s->session->tlsext_hostname == NULL)
if (!s->hit)
{
if (len > TLSEXT_MAXLEN_host_name ||
((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL))
if(s->session->tlsext_hostname)
{
*al = SSL_AD_DECODE_ERROR;
return 0;
}
if (len > TLSEXT_MAXLEN_host_name)
{
*al = TLS1_AD_UNRECOGNIZED_NAME;
return 0;
}
if ((s->session->tlsext_hostname = OPENSSL_malloc(len+1)) == NULL)
{
*al = TLS1_AD_INTERNAL_ERROR;
return 0;
}
memcpy(s->session->tlsext_hostname, sdata, len);
s->session->tlsext_hostname[len]='\0';
if (strlen(s->session->tlsext_hostname) != len) {
@@ -389,7 +398,8 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
}
else
s->servername_done = strlen(s->session->tlsext_hostname) == len
s->servername_done = s->session->tlsext_hostname
&& strlen(s->session->tlsext_hostname) == len
&& strncmp(s->session->tlsext_hostname, (char *)sdata, len) == 0;
break;
+1 -1
View File
@@ -32,7 +32,7 @@
db
entropy uname=operator gname=operator mode=0700
..
freebsd-update
freebsd-update mode=0700
..
ipf mode=0700
..
+8 -1
View File
@@ -107,7 +107,7 @@ This restriction can be removed by setting the
.Va vfs.usermount
.Xr sysctl 8
variable
to a non-zero value.
to a non-zero value; see the BUGS section for more information.
.Pp
The following
.Fa flags
@@ -370,3 +370,10 @@ functions appeared in
.At v6 .
.Sh BUGS
Some of the error codes need translation to more obvious messages.
.Pp
Allowing untrusted users to mount arbitrary media, e.g. by enabling
.Va vfs.usermount ,
should not be considered safe.
Most file systems in
.Fx
were not built to safeguard against malicious devices.
+6 -6
View File
@@ -366,12 +366,12 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_proc, Obj_Entry **objp)
* future processes to honor the potentially un-safe variables.
*/
if (!trust) {
unsetenv(LD_ "PRELOAD");
unsetenv(LD_ "LIBMAP");
unsetenv(LD_ "LIBRARY_PATH");
unsetenv(LD_ "LIBMAP_DISABLE");
unsetenv(LD_ "DEBUG");
unsetenv(LD_ "ELF_HINTS_PATH");
if (unsetenv(LD_ "PRELOAD") || unsetenv(LD_ "LIBMAP") ||
unsetenv(LD_ "LIBRARY_PATH") || unsetenv(LD_ "LIBMAP_DISABLE") ||
unsetenv(LD_ "DEBUG") || unsetenv(LD_ "ELF_HINTS_PATH")) {
_rtld_error("environment corrupt; aborting");
die();
}
}
ld_debug = getenv(LD_ "DEBUG");
libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;
+14 -305
View File
@@ -50,6 +50,12 @@
the last release, as well as significant changes to the &os;
kernel and userland.
Some brief remarks on upgrading are also presented.</para>
<para>NOTE: the full release notes were not available at the time
the release builds were started. See the online version of the
release notes for the most up to date information. The online
release notes can be found at <ulink url="&release.url;"></ulink>.
</para>
</abstract>
</articleinfo>
@@ -138,84 +144,16 @@
<sect2 id="kernel">
<title>Kernel Changes</title>
<para>A new &man.cpuset.2; API has been added
for thread to CPU binding and CPU resource grouping and
assignment. The &man.cpuset.1; userland utility has been added
to allow manipulation of processor sets.</para>
<para role="merged">The &man.ddb.4; kernel debugger now has an output capture
facility. Input and output from &man.ddb.4; can now be captured
to a memory buffer for later inspection using &man.sysctl.8; or
a textdump. The new <command>capture</command> command controls
this feature.</para>
<para role="merged">The &man.ddb.4; debugger now supports a simple scripting
facility, which supports a set of named scripts consisting of a
set of &man.ddb.4; commands. These commands can be managed from
within &man.ddb.4; or with the use of the new &man.ddb.8;
utility. More details can be found in the &man.ddb.4; manual
page.</para>
<para role="merged">The kernel now supports a new textdump format of kernel
dumps. A textdump provides higher-level information via
mechanically generated/extracted debugging output, rather than a
simple memory dump. This facility can be used to generate brief
kernel bug reports that are rich in debugging information, but
are not dependent on kernel symbol tables or precisely
synchronized source code. More information can be found in the
&man.textdump.4; manual page.</para>
<para>Kernel support for M:N threading has been removed. While
the KSE (Kernel Scheduled Entities) project was quite successful
in bringing threading to FreeBSD, the M:N approach taken by the
KSE library was never developed to its full potential.
Backwards compatibility for applications using KSE threading
will be provided via &man.libmap.conf.5; for dynamically linked
binaries. The &os; Project greatly appreciates the work of
&a.julian;, &a.deischen;, and &a.davidxu; on KSE support.</para>
<para>The &os; kernel now exports information about certain kernel
features via the <varname>kern.features</varname> sysctl tree.
The &man.feature.present.3; library call provides a convenient
interface for user applications to test the presence of
features.</para>
<para arch="amd64">The &os; kernel now has support for large
memory page mappings (<quote>superpages</quote>).</para>
<para arch="amd64,i386,ia64,powerpc" role="merged">The ULE
scheduler is now the default process scheduler
in <filename>GENERIC</filename> kernels.</para>
<sect3 id="boot">
<title>Boot Loader Changes</title>
<para arch="amd64,i386" role="merged">The BTX kernel used by the boot
loader has been changed to invoke BIOS routines from real
mode. This change makes it possible to boot &os; from USB
devices.</para>
<para arch="amd64,i386" role="merged">A new gptboot boot loader has
been added to support booting from a GPT labeled disk. A
new <command>boot</command> command has been added to
&man.gpt.8;, which makes a GPT disk bootable by writing the
required bits of the boot loader, creating a new boot
partition if required.</para>
<para></para>
</sect3>
<sect3 id="proc">
<title>Hardware Support</title>
<para role="merged">The &man.cmx.4; driver, a driver for Omnikey CardMan 4040
PCMCIA smartcard readers, has been added.</para>
<para>The &man.syscons.4; driver now supports Colemak keyboard layout.</para>
<para role="merged">The &man.uslcom.4; driver, a driver for Silicon
Laboratories CP2101/CP2102-based USB serial adapters, has been
imported from OpenBSD.</para>
<sect4 id="mm">
<title>Multimedia Support</title>
@@ -226,40 +164,7 @@
<sect4 id="net-if">
<title>Network Interface Support</title>
<para>The &man.ale.4; driver has been added to provide support
for Atheros AR8121/AR8113/AR8114 Gigabit/Fast Ethernet controllers.</para>
<para>The &man.em.4; driver has been split into two drivers
with some common parts. The &man.em.4; driver will continue
to support adapters up to the 82575, as well as new
client/desktop adapters. A new &man.igb.4; driver
will support new server adapters.</para>
<para>The &man.jme.4; driver has been added to provide support
for PCIe network adapters based on JMicron JMC250 Gigabit
Ethernet and JMC260 Fast Ethernet controllers.</para>
<para>The &man.malo.4; driver has been added to provide
support for Marvell Libertas 88W8335 based PCI network
adapters.</para>
<para>The firmware for the &man.mxge.4; driver has been
updated from 1.4.25 to 1.4.29.</para>
<para>The &man.sf.4; driver has been overhauled to improve its
performance and to add support for checksum offloading. It
should also work on all architectures.</para>
<para>The &man.re.4; driver has been overhauled to fix a
number of issues. This driver now has Wake On LAN (WOL)
support.</para>
<para>The &man.vr.4; driver has been overhauled to fix a
number of outstanding issues. It also now works on all
architectures.</para>
<para arch="amd64,i386" role="merged">The &man.wpi.4; driver has
been updated to include a number of stability fixes.</para>
<para></para>
</sect4>
</sect3>
@@ -267,50 +172,21 @@
<sect3 id="net-proto">
<title>Network Protocols</title>
<para>The &man.bpf.4; packet filter and capture facility now
supports a zero-copy mode of operation, in which buffers are
loaned from a user process to the kernel. This feature can
be enabled by setting
the <varname>net.bpf.zerocopy_enable</varname> sysctl
variable to <literal>1</literal>.</para>
<para>ISDN4BSD(I4B), <filename>netatm</filename>, and all
related subsystems have been removed due to lack of
multi-processor support.</para>
<para role="merged">A bug in TCP options padding, where the wrong padding
bytes were used, has been fixed.</para>
<para></para>
</sect3>
<sect3 id="disks">
<title>Disks and Storage</title>
<para role="merged">The &man.aac.4; driver now supports volumes larger than
2TB in size.</para>
<para>The &man.ata.4; driver now supports a spindown command for
disks; after a configurable amount of time, if no requests
have been received for a disk, the disk will be spun down
until the next request. The &man.atacontrol.8; utility now
supports a <command>spindown</command> command to configure
this feature.</para>
<para role="merged">The &man.hptrr.4; driver has been updated to version 1.2
from Highpoint.</para>
<para></para>
</sect3>
<sect3 id="fs">
<title>File Systems</title>
<para>A problem with using &man.mmap.2; on ZFS filesystems has
been fixed.</para>
<para>A new kernel-mode NFS lock manager has been added,
improving performance and behavior of NFS locking. A new
&man.clear.locks.8; command has been added to clear locks held
on behalf of an NFS client.</para>
<para></para>
</sect3>
</sect2>
@@ -318,111 +194,6 @@
<sect2 id="userland">
<title>Userland Changes</title>
<para role="merged">The &man.adduser.8; utility now supports
a <option>-M</option> option to set the mode of a new user's
home directory.</para>
<para>BSD-licensed versions of &man.ar.1; and &man.ranlib.1;,
based on <filename>libarchive</filename>, have replaced the GNU
Binutils versions of these utilities.</para>
<para role="merged">&man.chflags.1; now supports a <option>-v</option> flag for
verbose output and a <option>-f</option> flag to ignore errors
with the same semantics as (for example)
&man.chmod.1;.</para>
<para>For compatiblity with other implementations, &man.cp.1; now
supports a <option>-a</option> flag, which is equivalent to
specifying the <option>-RrP</option> flags.</para>
<para>BSD-licensed version of &man.cpio.1; based on
<filename>libarchive</filename>, has replaced the GNU cpio.
Note that the GNU cpio is still installed as
<filename>gcpio</filename>.</para>
<para>The &man.env.1; program now supports <option>-u
<replaceable>name</replaceable></option>
which will completely unset the given variable
<replaceable>name</replaceable> by removing it from the environment,
instead of just setting it to a null value.</para>
<para>The &man.fdopendir.3; library function has been added.</para>
<para role="merged">The &man.fetch.3; library now support HTTP 1.1
If-Modified-Since behavior. The &man.fetch.1; program now
supports <option>-i <replaceable>filename</replaceable></option>
which will only download the specified HTTP URL if the content
is newer than <replaceable>filename</replaceable>.</para>
<para>&man.find.1; has been enhanced by the addition of a number
of primaries that were present in GNU find but not &os;
&man.find.1;.</para>
<para>&man.jexec.8; now supports <option>-h
<replaceable>hostname</replaceable></option> option to specify the
jail where the command will be executed.</para>
<para>&man.kgdb.1; now supports a new <command>add-kld</command>
command to make it easier to debug crash dumps with kernel
modules.</para>
<para>The &man.ls.1; program now supports a <option>-D</option>
option to specify a date format string to be used with the long
format (<option>-l</option>) output.</para>
<para>&man.nc.1; now supports a <option>-O</option> switch to
disable the use of TCP options.</para>
<para>The &man.ping6.8; utility now returns <literal>2</literal>
when the packet transmission was successful but no responses
were received (this is the same behavior as &man.ping.8;).
It returned a non-zero value before this change.</para>
<para>The &man.procstat.1; utility has been added to display
detailed information about processes.</para>
<para role="merged">The &man.realpath.1; utility now supports
a <option>-q</option> flag to suppress warnings; it now also
accepts multiple paths on its command line.</para>
<para>The &man.split.1; utility now supports a <option>-n</option>
flag to split a file into a certain number of chunks.</para>
<para>The &man.tar.1; utility now supports a <option>-Z</option>
flag to enable &man.compress.1;-style
compression/decompression.</para>
<para>The &man.tar.1; utility now supports a
<option>--numeric-owner</option> flag to ignore user/group names
on create and extract.</para>
<para>The &man.tar.1; utility now supports an
<option>-S</option> flag to sparsify files on extraction.</para>
<para>The &man.tar.1; utility now supports a <option>-s</option>
flag to substitute filenames based on the specified regular
expression.</para>
<para>The &man.tcgetsid.3; library function has been added to
return the process group ID for the session leader for the
controlling terminal. It is defined in IEEE Std 1003.1-2001
(POSIX).</para>
<para>&man.top.1; now supports a <option>-P</option> flag to
provide per-CPU usage statistics.</para>
<para>&man.zdump.8; is now working properly on 64 bit architectures.
</para>
<para>&man.traceroute.8; now has the ability to print the AS
number for each hop with the new <option>-a</option> switch; a
new <option>-A</option> option allows selecting a particular
WHOIS server.</para>
<para>&man.traceroute6.8; now supports a <option>-U</option> flag
to send probe packets with no upper-layer protocol, rather than
the usual UDP probe packets.</para>
<sect3 id="rc-scripts">
<title><filename>/etc/rc.d</filename> Scripts</title>
@@ -434,83 +205,21 @@
<sect2 id="contrib">
<title>Contributed Software</title>
<para role="merged"><application>AMD</application> has been updated from 6.0.10
to 6.1.5.</para>
<para role="merged"><application>awk</application> has been updated from 1 May
2007 release to the 23 October 2007 release.</para>
<para role="merged"><application>bzip2</application> has been updated from 1.0.4
to 1.0.5.</para>
<para><application>CVS</application> has been updated from 1.11.17
to a post-1.11.22 snapshot from 10 March 2008.</para>
<para><application>FILE</application> has been updated from 4.23
to 5.03.</para>
<para><application>hostapd</application> has been
updated from 0.5.8 to 0.5.10.</para>
<para><application>IPFilter</application> has been updated from
4.1.23 to 4.1.28.</para>
<para><application>less</application> has been updated from
v408 to v429.</para>
<para><application>ncurses</application> has been updated from
5.6-20061217 to 5.6-20080503.</para>
<para role="merged"><application>OpenSSH</application> has been updated
from 4.5p1 to 5.1p1.</para>
<para role="merged"><application>OpenPAM</application> has been updated from the
Figwort release to the Hydrangea release.</para>
<para role="merged"><application>sendmail</application> has been updated from
8.14.1 to 8.14.3.</para>
<para role="merged">The timezone database has been updated from
the <application>tzdata2008h</application> release to
the <application>tzdata2009j</application> release.</para>
<para>The stdtime part of libc, &man.zdump.8 and &man.zic.8
have been updated from the <application>tzcode2004a</application>
release to the <application>tzcode2009h</application> release.
If you have upgraded from source or via the &man.freebsd-update.8,
then please run &man.tzsetup.8 to install a new /etc/localtime.
</para>
<para><application>WPA Supplicant</application> has been
updated from 0.5.8 to 0.5.10.</para>
<para></para>
</sect2>
<sect2 id="ports">
<title>Ports/Packages Collection Infrastructure</title>
<para>The &man.pkg.create.1; utility now supports
<option>-n</option>. When this option is specified and a
package tarball exists, it will not be overwritten. This is
useful when multiple packages are saved with several consecutive
runs of &man.pkg.create.1; with the <option>-Rb</option>
options.</para>
<para>The pkg_sign and pkg_check utilities for cryptographically
signing &os; packages have been removed. They were only useful
for packages compressed using &man.gzip.1;; however
&man.bzip2.1; compression has been the norm for some time
now.</para>
<para></para>
</sect2>
<sect2 id="releng">
<title>Release Engineering and Integration</title>
<para role="merged">The supported version of
the <application>GNOME</application> desktop environment
(<filename role="package">x11/gnome2</filename>) has been
updated from 2.20.1 to 2.22.</para>
<para></para>
</sect2>
@@ -35,17 +35,6 @@
(list (list "HREF" "mailto:[email protected]"))
(literal "[email protected]"))
(literal ">.")))
(make element gi: "p"
attributes: (list (list "align" "center"))
(make element gi: "small"
(literal "All users of FreeBSD ")
(literal (entity-text "release.branch"))
(literal " should subscribe to the ")
(literal "<")
(create-link (list (list "HREF" "mailto:[email protected]"))
(literal "[email protected]"))
(literal "> mailing list.")))
(make element gi: "p"
attributes: (list (list "align" "center"))
(make element gi: "small"
+11 -17
View File
@@ -6,41 +6,35 @@
<!-- Version of the OS we're describing. This needs to be updated
with each new release. -->
<!ENTITY release.current "8.0-CURRENT">
<!ENTITY release.current "8.0-RELEASE">
<!-- The previous version used for comparison in the "What's New"
section. For -CURRENT, we might point back to the last
branchpoint. -->
<!ENTITY release.prev "7.0-RELEASE">
<!-- The previous stable release, useful for pointing user's at the
release they SHOULD be running if they don't want the bleeding
edge. -->
<!ENTITY release.prev.stable "7.0-RELEASE">
<!ENTITY release.prev "7.2-RELEASE">
<!-- The next version to be released, usually used for snapshots. -->
<!ENTITY release.next "8.0-RELEASE">
<!ENTITY release.next "8.1-RELEASE">
<!-- The name of this branch. -->
<!ENTITY release.branch "8-CURRENT">
<!ENTITY release.branch "8.0-STABLE">
<!-- The URL for obtaining this version of FreeBSD. -->
<!ENTITY release.url "http://www.FreeBSD.org/snapshots/">
<!ENTITY release.url "http://www.FreeBSD.org/">
<!-- The type of release (usually this will be either "snapshot"
or "release" -->
<!ENTITY release.type "snapshot">
<!ENTITY % release.type.current "INCLUDE">
<!ENTITY release.type "release">
<!ENTITY % release.type.current "IGNORE">
<!ENTITY % release.type.snapshot "IGNORE">
<!ENTITY % release.type.release "IGNORE">
<!ENTITY % release.type.release "INCLUDE">
<!-- The manpaths for man page references -->
<!ENTITY release.man.url "http://www.FreeBSD.org/cgi/man.cgi">
<!ENTITY release.manpath.xfree86 "4.5.0">
<!ENTITY release.manpath.xorg "7.2">
<!ENTITY release.manpath.netbsd "3.0">
<!ENTITY release.manpath.xorg "7.4">
<!ENTITY release.manpath.netbsd "4.0.1">
<!ENTITY release.manpath.freebsd-ports "Ports">
<!ENTITY release.manpath.freebsd "8-current">
<!ENTITY release.manpath.freebsd "8.0-RELEASE">
<!-- Text constants which probably don't need to be changed.-->
+1 -1
View File
@@ -49,7 +49,7 @@
*default host=CHANGE_THIS.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_8
*default release=cvs tag=RELENG_8_0
*default delete use-rel-suffix
# If you seem to be limited by CPU rather than network or disk bandwidth, try
+4 -1
View File
@@ -1,5 +1,8 @@
# $FreeBSD$
#
# Please consult with http://www.FreeBSD.org/internal/i18n.html before
# making changes to this file.
#
# ISO 3166 country codes
# This includes many places that are not legally independent countries,
# but which is it convenient to refer to separately from their
@@ -230,7 +233,7 @@ SZ SWZ 748 Swaziland
SE SWE 752 Sweden
CH CHE 756 Switzerland
SY SYR 760 Syrian Arab Republic
TW TWN 158 Taiwan, Province of China
TW TWN 158 Taiwan
TJ TJK 762 Tajikistan
TZ TZA 834 Tanzania, United Republic of
TH THA 764 Thailand
+80 -12
View File
@@ -1,5 +1,5 @@
# <pre>
# @(#)asia 8.40
# @(#)asia 8.42
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -172,11 +172,30 @@ Zone Asia/Bahrain 3:22:20 - LMT 1920 # Al Manamah
#
# No DST end date has been announced yet.
# From Arthur David Olson (2009-07-11):
# Arbitrarily end DST at the end of 2009 so that a POSIX-sytle time zone string
# can appear in the Dhaka binary file and for the benefit of old glibc
# reimplementations of the time zone software that mishandle permanent DST.
# A change will be required once the end date is known.
# From Alexander Krivenyshev (2009-09-25):
# Bangladesh won't go back to Standard Time from October 1, 2009,
# instead it will continue DST measure till the cabinet makes a fresh decision.
#
# Following report by same newspaper-"The Daily Star Friday":
# "DST change awaits cabinet decision-Clock won't go back by 1-hr from Oct 1"
# <a href="http://www.thedailystar.net/newDesign/news-details.php?nid=107021">
# http://www.thedailystar.net/newDesign/news-details.php?nid=107021
# </a>
# or
# <a href="http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html">
# http://www.worldtimezone.com/dst_news/dst_news_bangladesh04.html
# </a>
# From Steffen Thorsen (2009-10-13):
# IANS (Indo-Asian News Service) now reports:
# Bangladesh has decided that the clock advanced by an hour to make
# maximum use of daylight hours as an energy saving measure would
# "continue for an indefinite period."
#
# One of many places where it is published:
# <a href="http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html">
# http://www.thaindian.com/newsportal/business/bangladesh-to-continue-indefinitely-with-advanced-time_100259987.html
# </a>
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Dhaka 6:01:40 - LMT 1890
@@ -186,8 +205,7 @@ Zone Asia/Dhaka 6:01:40 - LMT 1890
6:30 - BURT 1951 Sep 30
6:00 - DACT 1971 Mar 26 # Dacca Time
6:00 - BDT 2009 Jun 19 23:00 # Bangladesh Time
6:00 1:00 BDST 2010
6:00 - BDT
6:00 1:00 BDST
# Bhutan
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
@@ -1674,16 +1692,66 @@ Zone Asia/Muscat 3:54:20 - LMT 1920
# advance clocks in the country by one hour from April 15 to
# conserve energy"
# From Arthur David Olson (2009-04-10):
# Assume for now that Pakistan will end DST in 2009 as it did in 2008.
# From Steffen Thorsen (2009-09-17):
# "The News International," Pakistan reports that: "The Federal
# Government has decided to restore the previous time by moving the
# clocks backward by one hour from October 1. A formal announcement to
# this effect will be made after the Prime Minister grants approval in
# this regard."
# <a href="http://www.thenews.com.pk/updates.asp?id=87168">
# http://www.thenews.com.pk/updates.asp?id=87168
# </a>
# From Alexander Krivenyshev (2009-09-28):
# According to Associated Press Of Pakistan, it is confirmed that
# Pakistan clocks across the country would be turned back by an hour from October
# 1, 2009.
#
# "Clocks to go back one hour from 1 Oct"
# <a href="http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2">
# http://www.app.com.pk/en_/index.php?option=com_content&task=view&id=86715&Itemid=2
# </a>
# or
# <a href="http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm">
# http://www.worldtimezone.com/dst_news/dst_news_pakistan07.htm
# </a>
# From Steffen Thorsen (2009-09-29):
# Alexander Krivenyshev wrote:
# > According to Associated Press Of Pakistan, it is confirmed that
# > Pakistan clocks across the country would be turned back by an hour from October
# > 1, 2009.
#
# Now they seem to have changed their mind, November 1 is the new date:
# <a href="http://www.thenews.com.pk/top_story_detail.asp?Id=24742">
# http://www.thenews.com.pk/top_story_detail.asp?Id=24742
# </a>
# "The country's clocks will be reversed by one hour on November 1.
# Officials of Federal Ministry for Interior told this to Geo News on
# Monday."
#
# And more importantly, it seems that these dates will be kept every year:
# "It has now been decided that clocks will be wound forward by one hour
# on April 15 and reversed by an hour on November 1 every year without
# obtaining prior approval, the officials added."
#
# We have confirmed this year's end date with both with the Ministry of
# Water and Power and the Pakistan Electric Power Company:
# <a href="http://www.timeanddate.com/news/time/pakistan-ends-dst09.html">
# http://www.timeanddate.com/news/time/pakistan-ends-dst09.html
# </a>
# From Christoph Goehre (2009-10-01):
# [T]he German Consulate General in Karachi reported me today that Pakistan
# will go back to standard time on 1st of November.
# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S
Rule Pakistan 2002 only - Apr Sun>=2 0:01 1:00 S
Rule Pakistan 2002 only - Oct Sun>=2 0:01 0 -
Rule Pakistan 2008 only - Jun 1 0:00 1:00 S
Rule Pakistan 2008 only - Nov 1 0:00 0 -
Rule Pakistan 2009 only - Apr 15 0:00 1:00 S
Rule Pakistan 2009 only - Nov 1 0:00 0 -
Rule Pakistan 2009 max - Apr 15 0:00 1:00 S
Rule Pakistan 2009 max - Nov 1 0:00 0 -
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
Zone Asia/Karachi 4:28:12 - LMT 1907
5:30 - IST 1942 Sep
+31 -1
View File
@@ -1,5 +1,5 @@
# <pre>
# @(#)australasia 8.13
# @(#)australasia 8.14
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -457,6 +457,36 @@ Zone Pacific/Pago_Pago 12:37:12 - LMT 1879 Jul 5
# http://www.timeanddate.com/news/time/samoa-dst-plan-2009.html
# </a>
# From Alexander Krivenyshev (2009-10-03):
# First, my deepest condolences to people of Samoa islands and all families and
# loved ones around the world who lost their lives in the earthquake and tsunami.
#
# Considering the recent devastation on Samoa by earthquake and tsunami and that
# many government offices/ ministers are closed- not sure if "Daylight Saving
# Bill 2009" will be implemented in next few days- on October 4, 2009.
#
# Here is reply from Consulate-General of Samoa in New Zealand
# ---------------------------
# Consul General
# [email protected]
#
# Talofa Alexander,
#
# Thank you for your sympathy for our country but at this time we have not
# been informed about the Daylight Savings Time Change. Most Ministries in
# Apia are closed or relocating due to weather concerns.
#
# When we do find out if they are still proceeding with the time change we
# will advise you soonest.
#
# Kind Regards,
# Lana
# for: Consul General
# From Steffen Thorsen (2009-10-05):
# We have called a hotel in Samoa and asked about local time there - they
# are still on standard time.
Zone Pacific/Apia 12:33:04 - LMT 1879 Jul 5
-11:26:56 - LMT 1911
-11:30 - SAMT 1950 # Samoa Time
+55 -13
View File
@@ -1,5 +1,5 @@
# <pre>
# @(#)southamerica 8.36
# @(#)southamerica 8.40
# This file is in the public domain, so clarified as of
# 2009-05-17 by Arthur David Olson.
@@ -215,9 +215,23 @@ Rule Arg 2000 only - Mar 3 0:00 0 -
# http://www.jujuy.gov.ar/index2/partes_prensa/18_10_08/235-181008.doc
# </a>
# From fullinet (2009-10-18):
# As announced in
# <a hef="http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356">
# http://www.argentina.gob.ar/argentina/portal/paginas.dhtml?pagina=356
# </a>
# (an official .gob.ar) under title: "Sin Cambio de Hora" (english: "No hour change")
#
# "Por el momento, el Gobierno Nacional resolvio no modificar la hora
# oficial, decision que estaba en estudio para su implementacion el
# domingo 18 de octubre. Desde el Ministerio de Planificacion se anuncio
# que la Argentina hoy, en estas condiciones meteorologicas, no necesita
# la modificacion del huso horario, ya que 2009 nos encuentra con
# crecimiento en la produccion y distribucion energetica."
Rule Arg 2007 only - Dec 30 0:00 1:00 S
Rule Arg 2008 max - Mar Sun>=15 0:00 0 -
Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
Rule Arg 2008 2009 - Mar Sun>=15 0:00 0 -
Rule Arg 2008 only - Oct Sun>=15 0:00 1:00 S
# From Mariano Absatz (2004-05-21):
# Today it was officially published that the Province of Mendoza is changing
@@ -389,15 +403,40 @@ Rule Arg 2008 max - Oct Sun>=15 0:00 1:00 S
# during 2009, this timezone change will run from 00:00 the third Sunday
# in March until 24:00 of the second Saturday in October.
# From Arthur David Olson (2009-03-16):
# The unofficial claim at
# <a href="http://www.timeanddate.com/news/time/san-luis-new-time-zone.html">
# http://www.timeanddate.com/news/time/san-luis-new-time-zone.html
# </a>
# is that "The province will most likely follow the next daylight saving schedule,
# which is planned for the second Sunday in October."
# From Mariano Absatz (2009-10-16):
# ...the Province of San Luis is a case in itself.
#
# The Law at
# <a href="http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276>"
# http://www.diputadossanluis.gov.ar/diputadosasp/paginas/verNorma.asp?NormaID=276
# </a>
# is ambiguous because establishes a calendar from the 2nd Sunday in
# October at 0:00 thru the 2nd Saturday in March at 24:00 and the
# complement of that starting on the 2nd Sunday of March at 0:00 and
# ending on the 2nd Saturday of March at 24:00.
#
# This clearly breaks every time the 1st of March or October is a Sunday.
#
# IMHO, the "spirit of the Law" is to make the changes at 0:00 on the 2nd
# Sunday of October and March.
#
# The problem is that the changes in the rest of the Provinces that did
# change in 2007/2008, were made according to the Federal Law and Decrees
# that did so on the 3rd Sunday of October and March.
#
# In fact, San Luis actually switched from UTC-4 to UTC-3 last Sunday
# (October 11th) at 0:00.
#
# So I guess a new set of rules, besides "Arg", must be made and the last
# America/Argentina/San_Luis entries should change to use these...
#
# I'm enclosing a patch that does what I say... regretfully, the San Luis
# timezone must be called "WART/WARST" even when most of the time (like,
# right now) WARST == ART... that is, since last Sunday, all the country
# is using UTC-3, but in my patch, San Luis calls it "WARST" and the rest
# of the country calls it "ART".
# ...
# Zone NAME GMTOFF RULES FORMAT [UNTIL]
#
# Buenos Aires (BA), Capital Federal (CF),
@@ -530,6 +569,10 @@ Zone America/Argentina/Mendoza -4:35:16 - LMT 1894 Oct 31
-3:00 - ART
#
# San Luis (SL)
Rule SanLuis 2008 max - Mar Sun>=8 0:00 0 -
Rule SanLuis 2007 max - Oct Sun>=8 0:00 1:00 S
Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
-4:16:48 - CMT 1920 May
-4:00 - ART 1930 Dec
@@ -544,8 +587,7 @@ Zone America/Argentina/San_Luis -4:25:24 - LMT 1894 Oct 31
-3:00 - ART 2004 May 31
-4:00 - WART 2004 Jul 25
-3:00 Arg AR%sT 2008 Jan 21
-3:00 - ART 2009 Mar 15
-4:00 Arg WAR%sT
-4:00 SanLuis WAR%sT
#
# Santa Cruz (SC)
Zone America/Argentina/Rio_Gallegos -4:36:52 - LMT 1894 Oct 31
+22 -7
View File
@@ -371,21 +371,21 @@ printcpuinfo(void)
switch (cpu_vendor_id) {
case CPU_VENDOR_AMD:
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
AMD64_CPU_FAMILY(cpu_id) >= 0x10 ||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
cpu_id == 0x60fb2)
tsc_is_invariant = 1;
break;
case CPU_VENDOR_INTEL:
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
(AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
AMD64_CPU_MODEL(cpu_id) >= 0xe) ||
(AMD64_CPU_FAMILY(cpu_id) == 0xf &&
AMD64_CPU_MODEL(cpu_id) >= 0x3))
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
CPUID_TO_MODEL(cpu_id) >= 0x3))
tsc_is_invariant = 1;
break;
case CPU_VENDOR_CENTAUR:
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
AMD64_CPU_MODEL(cpu_id) >= 0xf &&
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xf &&
(rdmsr(0x1203) & 0x100000000ULL) == 0)
tsc_is_invariant = 1;
break;
@@ -607,6 +607,21 @@ print_AMD_info(void)
printf(", %d lines/tag", (regs[2] >> 8) & 0x0f);
print_AMD_l2_assoc((regs[2] >> 12) & 0x0f);
}
/*
* Opteron Rev E shows a bug as in very rare occasions a read memory
* barrier is not performed as expected if it is followed by a
* non-atomic read-modify-write instruction.
* As long as that bug pops up very rarely (intensive machine usage
* on other operating systems generally generates one unexplainable
* crash any 2 months) and as long as a model specific fix would be
* impratical at this stage, print out a warning string if the broken
* model and family are identified.
*/
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
CPUID_TO_MODEL(cpu_id) <= 0x3f)
printf("WARNING: This architecture revision has known SMP "
"hardware bugs which may cause random instability\n");
}
static void
+2 -2
View File
@@ -154,8 +154,8 @@ initializecpu(void)
pg_nx = PG_NX;
}
if (cpu_vendor_id == CPU_VENDOR_CENTAUR &&
AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
AMD64_CPU_MODEL(cpu_id) >= 0xf)
CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xf)
init_via();
/*
+2 -2
View File
@@ -275,8 +275,8 @@ msi_init(void)
case CPU_VENDOR_AMD:
break;
case CPU_VENDOR_CENTAUR:
if (AMD64_CPU_FAMILY(cpu_id) == 0x6 &&
AMD64_CPU_MODEL(cpu_id) >= 0xf)
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xf)
break;
/* FALLTHROUGH */
default:
+1 -1
View File
@@ -313,7 +313,7 @@ device udav # Davicom DM9601E USB
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
#device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
+2 -2
View File
@@ -168,10 +168,10 @@
#define CPUID_FAMILY 0x00000f00
#define CPUID_EXT_MODEL 0x000f0000
#define CPUID_EXT_FAMILY 0x0ff00000
#define AMD64_CPU_MODEL(id) \
#define CPUID_TO_MODEL(id) \
((((id) & CPUID_MODEL) >> 4) | \
(((id) & CPUID_EXT_MODEL) >> 12))
#define AMD64_CPU_FAMILY(id) \
#define CPUID_TO_FAMILY(id) \
((((id) & CPUID_FAMILY) >> 8) + \
(((id) & CPUID_EXT_FAMILY) >> 20))
+30 -36
View File
@@ -91,6 +91,10 @@ linux_to_bsd_sigaltstack(int lsa)
return (bsa);
}
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
l_size_t len, l_int prot, l_int flags, l_int fd,
l_loff_t pos);
int
bsd_to_linux_sigaltstack(int bsa)
{
@@ -759,12 +763,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
#define STACK_SIZE (2 * 1024 * 1024)
#define GUARD_SIZE (4 * PAGE_SIZE)
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
int
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
{
struct l_mmap_argv linux_args;
#ifdef DEBUG
if (ldebug(mmap2))
@@ -773,14 +774,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
args->flags, args->fd, args->pgoff);
#endif
linux_args.addr = PTROUT(args->addr);
linux_args.len = args->len;
linux_args.prot = args->prot;
linux_args.flags = args->flags;
linux_args.fd = args->fd;
linux_args.pgoff = args->pgoff;
return (linux_mmap_common(td, &linux_args));
return (linux_mmap_common(td, PTROUT(args->addr), args->len, args->prot,
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
PAGE_SIZE));
}
int
@@ -799,15 +795,15 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
linux_args.addr, linux_args.len, linux_args.prot,
linux_args.flags, linux_args.fd, linux_args.pgoff);
#endif
if ((linux_args.pgoff % PAGE_SIZE) != 0)
return (EINVAL);
linux_args.pgoff /= PAGE_SIZE;
return (linux_mmap_common(td, &linux_args));
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
linux_args.prot, linux_args.flags, linux_args.fd,
(uint32_t)linux_args.pgoff));
}
static int
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
l_int flags, l_int fd, l_loff_t pos)
{
struct proc *p = td->td_proc;
struct mmap_args /* {
@@ -830,21 +826,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* Linux mmap(2):
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
*/
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
(linux_args->flags & LINUX_MAP_PRIVATE)))
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
return (EINVAL);
if (linux_args->flags & LINUX_MAP_SHARED)
if (flags & LINUX_MAP_SHARED)
bsd_args.flags |= MAP_SHARED;
if (linux_args->flags & LINUX_MAP_PRIVATE)
if (flags & LINUX_MAP_PRIVATE)
bsd_args.flags |= MAP_PRIVATE;
if (linux_args->flags & LINUX_MAP_FIXED)
if (flags & LINUX_MAP_FIXED)
bsd_args.flags |= MAP_FIXED;
if (linux_args->flags & LINUX_MAP_ANON)
if (flags & LINUX_MAP_ANON)
bsd_args.flags |= MAP_ANON;
else
bsd_args.flags |= MAP_NOSYNC;
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
if (flags & LINUX_MAP_GROWSDOWN)
bsd_args.flags |= MAP_STACK;
/*
@@ -852,12 +847,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* on Linux/i386. We do this to ensure maximum compatibility.
* Linux/ia64 does the same in i386 emulation mode.
*/
bsd_args.prot = linux_args->prot;
bsd_args.prot = prot;
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
bsd_args.prot |= PROT_READ | PROT_EXEC;
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
if (bsd_args.fd != -1) {
/*
* Linux follows Solaris mmap(2) description:
@@ -882,7 +877,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
fdrop(fp, td);
}
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
if (flags & LINUX_MAP_GROWSDOWN) {
/*
* The Linux MAP_GROWSDOWN option does not limit auto
* growth of the region. Linux mmap with this option
@@ -905,8 +900,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* fixed size of (STACK_SIZE - GUARD_SIZE).
*/
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
p->p_vmspace->vm_maxsaddr) {
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
/*
* Some Linux apps will attempt to mmap
* thread stacks near the top of their
@@ -937,19 +931,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* we map the full stack, since we don't have a way
* to autogrow it.
*/
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
bsd_args.len = linux_args->len;
if (len > STACK_SIZE - GUARD_SIZE) {
bsd_args.addr = (caddr_t)PTRIN(addr);
bsd_args.len = len;
} else {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
(STACK_SIZE - GUARD_SIZE - linux_args->len);
bsd_args.addr = (caddr_t)PTRIN(addr) -
(STACK_SIZE - GUARD_SIZE - len);
bsd_args.len = STACK_SIZE - GUARD_SIZE;
}
} else {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
bsd_args.len = linux_args->len;
bsd_args.addr = (caddr_t)PTRIN(addr);
bsd_args.len = len;
}
bsd_args.pos = (off_t)linux_args->pgoff * PAGE_SIZE;
bsd_args.pos = pos;
#ifdef DEBUG
if (ldebug(mmap))
+2 -1
View File
@@ -550,7 +550,8 @@ vdev_raidz_read(vdev_t *vdev, const blkptr_t *bp, void *buf,
uint64_t s = psize >> unit_shift;
uint64_t f = b % dcols;
uint64_t o = (b / dcols) << unit_shift;
int q, r, c, c1, bc, col, acols, coff, devidx, asize, n;
uint64_t q, r, coff;
int c, c1, bc, col, acols, devidx, asize, n;
static raidz_col_t cols[16];
raidz_col_t *rc, *rc1;
+2
View File
@@ -57,6 +57,8 @@ typedef struct vop_vector vnodeops_t;
#define v_count v_usecount
#define V_APPEND VAPPEND
static __inline int
vn_is_readonly(vnode_t *vp)
{
@@ -60,10 +60,14 @@ zfs_init_vattr(vattr_t *vap, uint64_t mask, uint64_t mode,
{
VATTR_NULL(vap);
vap->va_mask = (uint_t)mask;
vap->va_type = IFTOVT(mode);
vap->va_mode = mode & MODEMASK;
vap->va_uid = (uid_t)(IS_EPHEMERAL(uid)) ? -1 : uid;
vap->va_gid = (gid_t)(IS_EPHEMERAL(gid)) ? -1 : gid;
if (mask & AT_TYPE)
vap->va_type = IFTOVT(mode);
if (mask & AT_MODE)
vap->va_mode = mode & MODEMASK;
if (mask & AT_UID)
vap->va_uid = (uid_t)(IS_EPHEMERAL(uid)) ? -1 : uid;
if (mask & AT_GID)
vap->va_gid = (gid_t)(IS_EPHEMERAL(gid)) ? -1 : gid;
vap->va_rdev = zfs_cmpldev(rdev);
vap->va_nodeid = nodeid;
}
@@ -3981,21 +3981,33 @@ zfs_freebsd_access(ap)
struct thread *a_td;
} */ *ap;
{
accmode_t accmode;
int error = 0;
/*
* ZFS itself only knowns about VREAD, VWRITE and VEXEC, the rest
* we have to handle by calling vaccess().
* ZFS itself only knowns about VREAD, VWRITE, VEXEC and VAPPEND,
*/
if ((ap->a_accmode & ~(VREAD|VWRITE|VEXEC)) != 0) {
vnode_t *vp = ap->a_vp;
znode_t *zp = VTOZ(vp);
znode_phys_t *zphys = zp->z_phys;
accmode = ap->a_accmode & (VREAD|VWRITE|VEXEC|VAPPEND);
if (accmode != 0)
error = zfs_access(ap->a_vp, accmode, 0, ap->a_cred, NULL);
return (vaccess(vp->v_type, zphys->zp_mode, zphys->zp_uid,
zphys->zp_gid, ap->a_accmode, ap->a_cred, NULL));
/*
* VADMIN has to be handled by vaccess().
*/
if (error == 0) {
accmode = ap->a_accmode & ~(VREAD|VWRITE|VEXEC|VAPPEND);
if (accmode != 0) {
vnode_t *vp = ap->a_vp;
znode_t *zp = VTOZ(vp);
znode_phys_t *zphys = zp->z_phys;
error = vaccess(vp->v_type, zphys->zp_mode,
zphys->zp_uid, zphys->zp_gid, accmode, ap->a_cred,
NULL);
}
}
return (zfs_access(ap->a_vp, ap->a_accmode, 0, ap->a_cred, NULL));
return (error);
}
static int
@@ -143,16 +143,19 @@ zfs_znode_cache_constructor(void *buf, void *arg, int kmflags)
POINTER_INVALIDATE(&zp->z_zfsvfs);
ASSERT(!POINTER_IS_VALID(zp->z_zfsvfs));
ASSERT(vfsp != NULL);
error = getnewvnode("zfs", vfsp, &zfs_vnodeops, &vp);
if (error != 0 && (kmflags & KM_NOSLEEP))
return (-1);
ASSERT(error == 0);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
zp->z_vnode = vp;
vp->v_data = (caddr_t)zp;
VN_LOCK_AREC(vp);
if (vfsp != NULL) {
error = getnewvnode("zfs", vfsp, &zfs_vnodeops, &vp);
if (error != 0 && (kmflags & KM_NOSLEEP))
return (-1);
ASSERT(error == 0);
vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
zp->z_vnode = vp;
vp->v_data = (caddr_t)zp;
VN_LOCK_AREC(vp);
} else {
zp->z_vnode = NULL;
}
list_link_init(&zp->z_link_node);
@@ -1435,7 +1438,7 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
nvpair_t *elem;
int error;
znode_t *rootzp = NULL;
vnode_t *vp;
vnode_t vnode;
vattr_t vattr;
znode_t *zp;
@@ -1504,13 +1507,13 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
vattr.va_gid = crgetgid(cr);
rootzp = kmem_cache_alloc(znode_cache, KM_SLEEP);
zfs_znode_cache_constructor(rootzp, &zfsvfs, 0);
zfs_znode_cache_constructor(rootzp, NULL, 0);
rootzp->z_unlinked = 0;
rootzp->z_atime_dirty = 0;
vp = ZTOV(rootzp);
vp->v_type = VDIR;
VN_LOCK_ASHARE(vp);
vnode.v_type = VDIR;
vnode.v_data = rootzp;
rootzp->z_vnode = &vnode;
bzero(&zfsvfs, sizeof (zfsvfs_t));
@@ -1539,16 +1542,10 @@ zfs_create_fs(objset_t *os, cred_t *cr, nvlist_t *zplprops, dmu_tx_t *tx)
ASSERT(error == 0);
POINTER_INVALIDATE(&rootzp->z_zfsvfs);
VI_LOCK(vp);
ZTOV(rootzp)->v_data = NULL;
ZTOV(rootzp)->v_count = 0;
ZTOV(rootzp)->v_holdcnt = 0;
rootzp->z_vnode = NULL;
VOP_UNLOCK(vp, 0);
vdestroy(vp);
dmu_buf_rele(rootzp->z_dbuf, NULL);
rootzp->z_dbuf = NULL;
mutex_destroy(&zfsvfs.z_znodes_lock);
rootzp->z_vnode = NULL;
kmem_cache_free(znode_cache, rootzp);
}
@@ -304,7 +304,6 @@ typedef struct xvattr {
* VOP_ACCESS flags
*/
#define V_ACE_MASK 0x1 /* mask represents NFSv4 ACE permissions */
#define V_APPEND 0x2 /* want to do append only check */
/*
* Flags for vnode operations.
+37
View File
@@ -1657,6 +1657,10 @@ device siis
# The 'ATA' driver supports all ATA and ATAPI devices, including PC Card
# devices. You only need one "device ata" for it to find all
# PCI and PC Card ATA/ATAPI devices on modern machines.
# Alternatively, individual bus and chipset drivers may be chosen by using
# the 'atacore' driver then selecting the drivers on a per vendor basis.
# For example to build a system which only supports a VIA chipset,
# omit 'ata' and include the 'atacore', 'atapci' and 'atavia' drivers.
device ata
device atadisk # ATA disk drives
device ataraid # ATA RAID drives
@@ -1665,6 +1669,39 @@ device atapifd # ATAPI floppy drives
device atapist # ATAPI tape drives
device atapicam # emulate ATAPI devices as SCSI ditto via CAM
# needs CAM to be present (scbus & pass)
# Modular ATA
#device atacore # Core ATA functionality
#device atacard # CARDBUS support
#device atabus # PC98 cbus support
#device ataisa # ISA bus support
#device atapci # PCI bus support; only generic chipset support
# PCI ATA chipsets
#device ataahci # AHCI SATA
#device ataacard # ACARD
#device ataacerlabs # Acer Labs Inc. (ALI)
#device ataadaptec # Adaptec
#device ataamd # American Micro Devices (AMD)
#device ataati # ATI
#device atacenatek # Cenatek
#device atacypress # Cypress
#device atacyrix # Cyrix
#device atahighpoint # HighPoint
#device ataintel # Intel
#device ataite # Integrated Technology Inc. (ITE)
#device atajmicron # JMicron
#device atamarvell # Marvell
#device atamicron # Micron
#device atanational # National
#device atanetcell # NetCell
#device atanvidia # nVidia
#device atapromise # Promise
#device ataserverworks # ServerWorks
#device atasiliconimage # Silicon Image Inc. (SiI) (formerly CMD)
#device atasis # Silicon Integrated Systems Corp.(SiS)
#device atavia # VIA Technologies Inc.
#
# For older non-PCI, non-PnPBIOS systems, these are the hints lines to add:
hint.ata.0.at="isa"
+1 -1
View File
@@ -32,7 +32,7 @@
TYPE="FreeBSD"
REVISION="8.0"
BRANCH="RC2"
BRANCH="RELEASE-p6"
if [ "X${BRANCH_OVERRIDE}" != "X" ]; then
BRANCH=${BRANCH_OVERRIDE}
fi
+3 -1
View File
@@ -55,6 +55,8 @@
** 1.20.00.14 02/05/2007 Erich Chen bug fix for incorrect ccb_h.status report
** and cause g_vfs_done() read write error
** 1.20.00.15 10/10/2007 Erich Chen support new RAID adapter type ARC120x
** 1.20.00.16 10/10/2009 Erich Chen Bug fix for RAID adapter type ARC120x
** bus_dmamem_alloc() with BUS_DMA_ZERO
******************************************************************************************
* $FreeBSD$
*/
@@ -2903,7 +2905,7 @@ static u_int32_t arcmsr_initialize(device_t dev)
}
/* Allocation for our srbs */
if(bus_dmamem_alloc(acb->srb_dmat, (void **)&acb->uncacheptr
, BUS_DMA_WAITOK | BUS_DMA_COHERENT, &acb->srb_dmamap) != 0) {
, BUS_DMA_WAITOK | BUS_DMA_COHERENT | BUS_DMA_ZERO, &acb->srb_dmamap) != 0) {
bus_dma_tag_destroy(acb->srb_dmat);
bus_dma_tag_destroy(acb->dm_segs_dmat);
bus_dma_tag_destroy(acb->parent_dmat);
+1 -1
View File
@@ -37,7 +37,7 @@
**************************************************************************
* $FreeBSD$
*/
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.15 2007-10-07"
#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.16 2009-10-10"
#define ARCMSR_SCSI_INITIATOR_ID 255
#define ARCMSR_DEV_SECTOR_SIZE 512
#define ARCMSR_MAX_XFER_SECTORS 4096
+2 -1
View File
@@ -165,7 +165,8 @@ ata_nvidia_chipinit(device_t dev)
/* enable control access */
pci_write_config(dev, 0x50, pci_read_config(dev, 0x50, 1) | 0x04,1);
/* MCP55 seems to need some time to allow r_res2 read. */
DELAY(10);
if (ctlr->chip->cfg1 & NVQ) {
/* clear interrupt status */
ATA_OUTL(ctlr->r_res2, offset, 0x00ff00ff);
+3 -3
View File
@@ -2654,7 +2654,7 @@ igb_dma_malloc(struct adapter *adapter, bus_size_t size,
int error;
error = bus_dma_tag_create(bus_get_dma_tag(adapter->dev), /* parent */
IGB_DBA_ALIGN, 0, /* alignment, bounds */
1, 0, /* alignment, bounds */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
@@ -2867,7 +2867,7 @@ igb_allocate_transmit_buffers(struct tx_ring *txr)
* Setup DMA descriptor areas.
*/
if ((error = bus_dma_tag_create(NULL, /* parent */
PAGE_SIZE, 0, /* alignment, bounds */
1, 0, /* alignment, bounds */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
@@ -3554,7 +3554,7 @@ igb_allocate_receive_buffers(struct rx_ring *rxr)
** it may not always use this.
*/
if ((error = bus_dma_tag_create(NULL, /* parent */
PAGE_SIZE, 0, /* alignment, bounds */
1, 0, /* alignment, bounds */
BUS_SPACE_MAXADDR, /* lowaddr */
BUS_SPACE_MAXADDR, /* highaddr */
NULL, NULL, /* filter, filterarg */
+11 -21
View File
@@ -193,6 +193,8 @@ isp_sbus_attach(device_t dev)
isp->isp_param = &sbs->sbus_param;
isp->isp_osinfo.pc.ptr = &sbs->sbus_spi;
isp->isp_revision = 0; /* XXX */
isp->isp_dev = dev;
isp->isp_nchan = 1;
ISP_SET_PC(isp, 0, role, role);
/*
@@ -316,18 +318,16 @@ isp_sbus_attach(device_t dev)
goto bad;
}
isp_init(isp);
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_INITSTATE) {
isp_uninit(isp);
ISP_UNLOCK(isp);
goto bad;
}
isp_attach(isp);
if (role != ISP_ROLE_NONE && isp->isp_state != ISP_RUNSTATE) {
isp_uninit(isp);
ISP_UNLOCK(isp);
goto bad;
if (isp->isp_state == ISP_INITSTATE) {
isp->isp_state = ISP_RUNSTATE;
}
ISP_UNLOCK(isp);
if (isp_attach(isp)) {
ISP_LOCK(isp);
isp_uninit(isp);
ISP_UNLOCK(isp);
goto bad;
}
return (0);
bad:
@@ -345,13 +345,10 @@ bad:
}
if (regs) {
(void) bus_release_resource(dev, 0, 0, regs);
(void) bus_release_resource(dev, SYS_RES_MEMORY, 0, regs);
}
if (sbs) {
if (sbs->sbus_isp.isp_param) {
free(sbs->sbus_isp.isp_param, M_DEVBUF);
}
free(sbs, M_DEVBUF);
}
return (ENXIO);
@@ -584,13 +581,6 @@ dma2(void *arg, bus_dma_segment_t *dm_segs, int nseg, int error)
isp = mp->isp;
rq = mp->rq;
if (nseg) {
if (sizeof (bus_addr_t) > 4) {
if (rq->req_header.rqs_entry_type == RQSTYPE_T2RQS) {
rq->req_header.rqs_entry_type = RQSTYPE_T3RQS;
} else if (rq->req_header.rqs_entry_type == RQSTYPE_REQUEST) {
rq->req_header.rqs_entry_type = RQSTYPE_A64;
}
}
if ((csio->ccb_h.flags & CAM_DIR_MASK) == CAM_DIR_IN) {
bus_dmamap_sync(isp->isp_osinfo.dmat, PISP_PCMD(csio)->dmap, BUS_DMASYNC_PREREAD);
ddir = ISP_FROM_DEVICE;
+1 -1
View File
@@ -8582,7 +8582,7 @@ sym_pci_attach(device_t dev)
* Allocate a tag for the DMA of user data.
*/
if (bus_dma_tag_create(np->bus_dmat, 1, (1<<24),
BUS_SPACE_MAXADDR, BUS_SPACE_MAXADDR,
BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
NULL, NULL,
BUS_SPACE_MAXSIZE, SYM_CONF_MAX_SG,
(1<<24), 0, busdma_lock_mutex, &np->mtx,
+51 -12
View File
@@ -247,8 +247,8 @@ static const uint8_t ukbd_trtab[256] = {
NN, NN, NN, NN, NN, NN, NN, NN, /* 68 - 6F */
NN, NN, NN, NN, 115, 108, 111, 113, /* 70 - 77 */
109, 110, 112, 118, 114, 116, 117, 119, /* 78 - 7F */
121, 120, NN, NN, NN, NN, NN, 115, /* 80 - 87 */
112, 125, 121, 123, NN, NN, NN, NN, /* 88 - 8F */
121, 120, NN, NN, NN, NN, NN, 123, /* 80 - 87 */
124, 125, 126, 127, 128, NN, NN, NN, /* 88 - 8F */
NN, NN, NN, NN, NN, NN, NN, NN, /* 90 - 97 */
NN, NN, NN, NN, NN, NN, NN, NN, /* 98 - 9F */
NN, NN, NN, NN, NN, NN, NN, NN, /* A0 - A7 */
@@ -1636,20 +1636,59 @@ static int
ukbd_key2scan(struct ukbd_softc *sc, int code, int shift, int up)
{
static const int scan[] = {
0x1c, 0x1d, 0x35,
0x37 | SCAN_PREFIX_SHIFT, /* PrintScreen */
0x38, 0x47, 0x48, 0x49, 0x4b, 0x4d, 0x4f,
0x50, 0x51, 0x52, 0x53,
0x46, /* XXX Pause/Break */
0x5b, 0x5c, 0x5d,
/* 89 */
0x11c, /* Enter */
/* 90-99 */
0x11d, /* Ctrl-R */
0x135, /* Divide */
0x137 | SCAN_PREFIX_SHIFT, /* PrintScreen */
0x138, /* Alt-R */
0x147, /* Home */
0x148, /* Up */
0x149, /* PageUp */
0x14b, /* Left */
0x14d, /* Right */
0x14f, /* End */
/* 100-109 */
0x150, /* Down */
0x151, /* PageDown */
0x152, /* Insert */
0x153, /* Delete */
0x146, /* XXX Pause/Break */
0x15b, /* Win_L(Super_L) */
0x15c, /* Win_R(Super_R) */
0x15d, /* Application(Menu) */
/* SUN TYPE 6 USB KEYBOARD */
0x68, 0x5e, 0x5f, 0x60, 0x61, 0x62, 0x63,
0x64, 0x65, 0x66, 0x67, 0x25, 0x1f, 0x1e,
0x20,
0x168, /* Sun Type 6 Help */
0x15e, /* Sun Type 6 Stop */
/* 110 - 119 */
0x15f, /* Sun Type 6 Again */
0x160, /* Sun Type 6 Props */
0x161, /* Sun Type 6 Undo */
0x162, /* Sun Type 6 Front */
0x163, /* Sun Type 6 Copy */
0x164, /* Sun Type 6 Open */
0x165, /* Sun Type 6 Paste */
0x166, /* Sun Type 6 Find */
0x167, /* Sun Type 6 Cut */
0x125, /* Sun Type 6 Mute */
/* 120 - 128 */
0x11f, /* Sun Type 6 VolumeDown */
0x11e, /* Sun Type 6 VolumeUp */
0x120, /* Sun Type 6 PowerDown */
/* Japanese 106/109 keyboard */
0x73, /* Keyboard Intl' 1 (backslash / underscore) */
0x70, /* Keyboard Intl' 2 (Katakana / Hiragana) */
0x7d, /* Keyboard Intl' 3 (Yen sign) (Not using in jp106/109) */
0x79, /* Keyboard Intl' 4 (Henkan) */
0x7b, /* Keyboard Intl' 5 (Muhenkan) */
0x5c, /* Keyboard Intl' 6 (Keypad ,) (For PC-9821 layout) */
};
if ((code >= 89) && (code < (89 + (sizeof(scan) / sizeof(scan[0]))))) {
code = scan[code - 89] | SCAN_PREFIX_E0;
code = scan[code - 89];
}
/* Pause/Break */
if ((code == 104) && (!(shift & (MOD_CONTROL_L | MOD_CONTROL_R)))) {
+1
View File
@@ -112,6 +112,7 @@ struct usb_xfer_flags_int {
uint8_t curr_dma_set:1; /* used by USB HC/DC driver */
uint8_t can_cancel_immed:1; /* set if USB transfer can be
* cancelled immediately */
uint8_t doing_callback:1; /* set if executing the callback */
};
/*
+19 -1
View File
@@ -1785,8 +1785,18 @@ usbd_transfer_drain(struct usb_xfer *xfer)
usbd_transfer_stop(xfer);
while (usbd_transfer_pending(xfer)) {
while (usbd_transfer_pending(xfer) ||
xfer->flags_int.doing_callback) {
/*
* It is allowed that the callback can drop its
* transfer mutex. In that case checking only
* "usbd_transfer_pending()" is not enough to tell if
* the USB transfer is fully drained. We also need to
* check the internal "doing_callback" flag.
*/
xfer->flags_int.draining = 1;
/*
* Wait until the current outstanding USB
* transfer is complete !
@@ -2031,6 +2041,9 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
/* get next USB transfer in the queue */
info->done_q.curr = NULL;
/* set flag in case of drain */
xfer->flags_int.doing_callback = 1;
USB_BUS_UNLOCK(info->bus);
USB_BUS_LOCK_ASSERT(info->bus, MA_NOTOWNED);
@@ -2083,12 +2096,17 @@ usbd_callback_wrapper(struct usb_xfer_queue *pq)
if ((!xfer->flags_int.open) &&
(xfer->flags_int.started) &&
(xfer->usb_state == USB_ST_ERROR)) {
/* clear flag in case of drain */
xfer->flags_int.doing_callback = 0;
/* try to loop, but not recursivly */
usb_command_wrapper(&info->done_q, xfer);
return;
}
done:
/* clear flag in case of drain */
xfer->flags_int.doing_callback = 0;
/*
* Check if we are draining.
*/
+1 -1
View File
@@ -327,7 +327,7 @@ device udav # Davicom DM9601E USB
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
#device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
+2 -8
View File
@@ -83,12 +83,6 @@ __FBSDID("$FreeBSD$");
#define AMD_10H_11H_CUR_DID(msr) (((msr) >> 6) & 0x07)
#define AMD_10H_11H_CUR_FID(msr) ((msr) & 0x3F)
#if defined(__amd64__)
#define CPU_FAMILY(id) AMD64_CPU_FAMILY(id)
#elif defined(__i386__)
#define CPU_FAMILY(id) I386_CPU_FAMILY(id)
#endif
#define HWPSTATE_DEBUG(dev, msg...) \
do{ \
if(hwpstate_verbose) \
@@ -302,7 +296,7 @@ hwpstate_identify(driver_t *driver, device_t parent)
if (device_find_child(parent, "hwpstate", -1) != NULL)
return;
if (cpu_vendor_id != CPU_VENDOR_AMD || CPU_FAMILY(cpu_id) < 0x10)
if (cpu_vendor_id != CPU_VENDOR_AMD || CPUID_TO_FAMILY(cpu_id) < 0x10)
return;
/*
@@ -405,7 +399,7 @@ hwpstate_get_info_from_msr(device_t dev)
uint64_t msr;
int family, i, fid, did;
family = CPU_FAMILY(cpu_id);
family = CPUID_TO_FAMILY(cpu_id);
sc = device_get_softc(dev);
/* Get pstate count */
msr = rdmsr(MSR_AMD_10H_11H_LIMIT);
+24 -9
View File
@@ -858,21 +858,21 @@ printcpuinfo(void)
switch (cpu_vendor_id) {
case CPU_VENDOR_AMD:
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
I386_CPU_FAMILY(cpu_id) >= 0x10 ||
CPUID_TO_FAMILY(cpu_id) >= 0x10 ||
cpu_id == 0x60fb2)
tsc_is_invariant = 1;
break;
case CPU_VENDOR_INTEL:
if ((amd_pminfo & AMDPM_TSC_INVARIANT) ||
(I386_CPU_FAMILY(cpu_id) == 0x6 &&
I386_CPU_MODEL(cpu_id) >= 0xe) ||
(I386_CPU_FAMILY(cpu_id) == 0xf &&
I386_CPU_MODEL(cpu_id) >= 0x3))
(CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xe) ||
(CPUID_TO_FAMILY(cpu_id) == 0xf &&
CPUID_TO_MODEL(cpu_id) >= 0x3))
tsc_is_invariant = 1;
break;
case CPU_VENDOR_CENTAUR:
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
I386_CPU_MODEL(cpu_id) >= 0xf &&
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xf &&
(rdmsr(0x1203) & 0x100000000ULL) == 0)
tsc_is_invariant = 1;
break;
@@ -1106,8 +1106,8 @@ finishidentcpu(void)
* XXX This is only done on the BSP package.
*/
if (cpu_vendor_id == CPU_VENDOR_INTEL && cpu_high > 0 && cpu_high < 4 &&
((I386_CPU_FAMILY(cpu_id) == 0xf && I386_CPU_MODEL(cpu_id) >= 0x3) ||
(I386_CPU_FAMILY(cpu_id) == 0x6 && I386_CPU_MODEL(cpu_id) >= 0xe))) {
((CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x3) ||
(CPUID_TO_FAMILY(cpu_id) == 0x6 && CPUID_TO_MODEL(cpu_id) >= 0xe))) {
uint64_t msr;
msr = rdmsr(MSR_IA32_MISC_ENABLE);
if ((msr & 0x400000ULL) != 0) {
@@ -1303,6 +1303,21 @@ print_AMD_info(void)
(amd_whcr & 0x0100) ? "Enable" : "Disable");
}
}
/*
* Opteron Rev E shows a bug as in very rare occasions a read memory
* barrier is not performed as expected if it is followed by a
* non-atomic read-modify-write instruction.
* As long as that bug pops up very rarely (intensive machine usage
* on other operating systems generally generates one unexplainable
* crash any 2 months) and as long as a model specific fix would be
* impratical at this stage, print out a warning string if the broken
* model and family are identified.
*/
if (CPUID_TO_FAMILY(cpu_id) == 0xf && CPUID_TO_MODEL(cpu_id) >= 0x20 &&
CPUID_TO_MODEL(cpu_id) <= 0x3f)
printf("WARNING: This architecture revision has known SMP "
"hardware bugs which may cause random instability\n");
}
static void
+2 -2
View File
@@ -275,8 +275,8 @@ msi_init(void)
case CPU_VENDOR_AMD:
break;
case CPU_VENDOR_CENTAUR:
if (I386_CPU_FAMILY(cpu_id) == 0x6 &&
I386_CPU_MODEL(cpu_id) >= 0xf)
if (CPUID_TO_FAMILY(cpu_id) == 0x6 &&
CPUID_TO_MODEL(cpu_id) >= 0xf)
break;
/* FALLTHROUGH */
default:
+1 -1
View File
@@ -484,7 +484,7 @@ pmap_init_pat(void)
return;
if (cpu_vendor_id != CPU_VENDOR_INTEL ||
(I386_CPU_FAMILY(cpu_id) == 6 && I386_CPU_MODEL(cpu_id) >= 0xe)) {
(CPUID_TO_FAMILY(cpu_id) == 6 && CPUID_TO_MODEL(cpu_id) >= 0xe)) {
/*
* Leave the indices 0-3 at the default of WB, WT, UC, and UC-.
* Program 4 and 5 as WP and WC.
+2 -2
View File
@@ -165,11 +165,11 @@
#define CPUID_FAMILY 0x00000f00
#define CPUID_EXT_MODEL 0x000f0000
#define CPUID_EXT_FAMILY 0x0ff00000
#define I386_CPU_MODEL(id) \
#define CPUID_TO_MODEL(id) \
((((id) & CPUID_MODEL) >> 4) | \
((((id) & CPUID_FAMILY) >= 0x600) ? \
(((id) & CPUID_EXT_MODEL) >> 12) : 0))
#define I386_CPU_FAMILY(id) \
#define CPUID_TO_FAMILY(id) \
((((id) & CPUID_FAMILY) >> 8) + \
((((id) & CPUID_FAMILY) == 0xf00) ? \
(((id) & CPUID_EXT_FAMILY) >> 20) : 0))
+31 -34
View File
@@ -93,6 +93,10 @@ struct l_old_select_argv {
struct l_timeval *timeout;
};
static int linux_mmap_common(struct thread *td, l_uintptr_t addr,
l_size_t len, l_int prot, l_int flags, l_int fd,
l_loff_t pos);
int
linux_to_bsd_sigaltstack(int lsa)
{
@@ -591,12 +595,9 @@ linux_clone(struct thread *td, struct linux_clone_args *args)
#define STACK_SIZE (2 * 1024 * 1024)
#define GUARD_SIZE (4 * PAGE_SIZE)
static int linux_mmap_common(struct thread *, struct l_mmap_argv *);
int
linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
{
struct l_mmap_argv linux_args;
#ifdef DEBUG
if (ldebug(mmap2))
@@ -605,14 +606,9 @@ linux_mmap2(struct thread *td, struct linux_mmap2_args *args)
args->flags, args->fd, args->pgoff);
#endif
linux_args.addr = args->addr;
linux_args.len = args->len;
linux_args.prot = args->prot;
linux_args.flags = args->flags;
linux_args.fd = args->fd;
linux_args.pgoff = args->pgoff * PAGE_SIZE;
return (linux_mmap_common(td, &linux_args));
return (linux_mmap_common(td, args->addr, args->len, args->prot,
args->flags, args->fd, (uint64_t)(uint32_t)args->pgoff *
PAGE_SIZE));
}
int
@@ -632,11 +628,14 @@ linux_mmap(struct thread *td, struct linux_mmap_args *args)
linux_args.flags, linux_args.fd, linux_args.pgoff);
#endif
return (linux_mmap_common(td, &linux_args));
return (linux_mmap_common(td, linux_args.addr, linux_args.len,
linux_args.prot, linux_args.flags, linux_args.fd,
(uint32_t)linux_args.pgoff));
}
static int
linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
linux_mmap_common(struct thread *td, l_uintptr_t addr, l_size_t len, l_int prot,
l_int flags, l_int fd, l_loff_t pos)
{
struct proc *p = td->td_proc;
struct mmap_args /* {
@@ -659,21 +658,20 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* Linux mmap(2):
* You must specify exactly one of MAP_SHARED and MAP_PRIVATE
*/
if (! ((linux_args->flags & LINUX_MAP_SHARED) ^
(linux_args->flags & LINUX_MAP_PRIVATE)))
if (!((flags & LINUX_MAP_SHARED) ^ (flags & LINUX_MAP_PRIVATE)))
return (EINVAL);
if (linux_args->flags & LINUX_MAP_SHARED)
if (flags & LINUX_MAP_SHARED)
bsd_args.flags |= MAP_SHARED;
if (linux_args->flags & LINUX_MAP_PRIVATE)
if (flags & LINUX_MAP_PRIVATE)
bsd_args.flags |= MAP_PRIVATE;
if (linux_args->flags & LINUX_MAP_FIXED)
if (flags & LINUX_MAP_FIXED)
bsd_args.flags |= MAP_FIXED;
if (linux_args->flags & LINUX_MAP_ANON)
if (flags & LINUX_MAP_ANON)
bsd_args.flags |= MAP_ANON;
else
bsd_args.flags |= MAP_NOSYNC;
if (linux_args->flags & LINUX_MAP_GROWSDOWN)
if (flags & LINUX_MAP_GROWSDOWN)
bsd_args.flags |= MAP_STACK;
/*
@@ -681,12 +679,12 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* on Linux/i386. We do this to ensure maximum compatibility.
* Linux/ia64 does the same in i386 emulation mode.
*/
bsd_args.prot = linux_args->prot;
bsd_args.prot = prot;
if (bsd_args.prot & (PROT_READ | PROT_WRITE | PROT_EXEC))
bsd_args.prot |= PROT_READ | PROT_EXEC;
/* Linux does not check file descriptor when MAP_ANONYMOUS is set. */
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : linux_args->fd;
bsd_args.fd = (bsd_args.flags & MAP_ANON) ? -1 : fd;
if (bsd_args.fd != -1) {
/*
* Linux follows Solaris mmap(2) description:
@@ -711,9 +709,9 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
fdrop(fp, td);
}
if (linux_args->flags & LINUX_MAP_GROWSDOWN) {
if (flags & LINUX_MAP_GROWSDOWN) {
/*
* The linux MAP_GROWSDOWN option does not limit auto
* The Linux MAP_GROWSDOWN option does not limit auto
* growth of the region. Linux mmap with this option
* takes as addr the inital BOS, and as len, the initial
* region size. It can then grow down from addr without
@@ -734,8 +732,7 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* fixed size of (STACK_SIZE - GUARD_SIZE).
*/
if ((caddr_t)PTRIN(linux_args->addr) + linux_args->len >
p->p_vmspace->vm_maxsaddr) {
if ((caddr_t)PTRIN(addr) + len > p->p_vmspace->vm_maxsaddr) {
/*
* Some linux apps will attempt to mmap
* thread stacks near the top of their
@@ -766,19 +763,19 @@ linux_mmap_common(struct thread *td, struct l_mmap_argv *linux_args)
* we map the full stack, since we don't have a way
* to autogrow it.
*/
if (linux_args->len > STACK_SIZE - GUARD_SIZE) {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
bsd_args.len = linux_args->len;
if (len > STACK_SIZE - GUARD_SIZE) {
bsd_args.addr = (caddr_t)PTRIN(addr);
bsd_args.len = len;
} else {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr) -
(STACK_SIZE - GUARD_SIZE - linux_args->len);
bsd_args.addr = (caddr_t)PTRIN(addr) -
(STACK_SIZE - GUARD_SIZE - len);
bsd_args.len = STACK_SIZE - GUARD_SIZE;
}
} else {
bsd_args.addr = (caddr_t)PTRIN(linux_args->addr);
bsd_args.len = linux_args->len;
bsd_args.addr = (caddr_t)PTRIN(addr);
bsd_args.len = len;
}
bsd_args.pos = linux_args->pgoff;
bsd_args.pos = pos;
#ifdef DEBUG
if (ldebug(mmap))
+1 -1
View File
@@ -139,7 +139,7 @@ device cue # CATC USB Ethernet
device kue # Kawasaki LSI USB Ethernet
# FireWire support
device sbp # SCSI over FireWire (need scbus & da)
#device sbp # SCSI over FireWire (need scbus & da)
# Various (pseudo) devices
device ether # Ethernet support
+1
View File
@@ -302,6 +302,7 @@ mb_dupcl(struct mbuf *n, struct mbuf *m)
n->m_ext.ref_cnt = m->m_ext.ref_cnt;
n->m_ext.ext_type = m->m_ext.ext_type;
n->m_flags |= M_EXT;
n->m_flags |= m->m_flags & M_RDONLY;
}
/*
+1 -1
View File
@@ -161,7 +161,7 @@ acl_copyout(struct acl *kernel_acl, void *user_acl, acl_type_t type)
break;
default:
if (fuword((char *)user_acl +
if (fuword32((char *)user_acl +
offsetof(struct acl, acl_maxcnt)) != ACL_MAX_ENTRIES)
return (EINVAL);
+6
View File
@@ -552,6 +552,12 @@ dirloop:
else
cnp->cn_flags &= ~ISLASTCN;
if ((cnp->cn_flags & ISLASTCN) != 0 &&
cnp->cn_namelen == 1 && cnp->cn_nameptr[0] == '.' &&
(cnp->cn_nameiop == DELETE || cnp->cn_nameiop == RENAME)) {
error = EINVAL;
goto bad;
}
/*
* Check for degenerate name (e.g. / or "")
+10 -6
View File
@@ -963,15 +963,19 @@ flowtable_clean_vnet(void)
if (CPU_ABSENT(i))
continue;
thread_lock(curthread);
sched_bind(curthread, i);
thread_unlock(curthread);
if (smp_started == 1) {
thread_lock(curthread);
sched_bind(curthread, i);
thread_unlock(curthread);
}
flowtable_free_stale(ft, NULL);
thread_lock(curthread);
sched_unbind(curthread);
thread_unlock(curthread);
if (smp_started == 1) {
thread_lock(curthread);
sched_unbind(curthread);
thread_unlock(curthread);
}
}
} else {
flowtable_free_stale(ft, NULL);
+9
View File
@@ -1384,6 +1384,15 @@ fail:
rt->mfc_rp.s_addr = INADDR_ANY;
rt->mfc_bw_meter = NULL;
/* initialize pkt counters per src-grp */
rt->mfc_pkt_cnt = 0;
rt->mfc_byte_cnt = 0;
rt->mfc_wrong_if = 0;
timevalclear(&rt->mfc_last_assert);
TAILQ_INIT(&rt->mfc_stall);
rt->mfc_nstall = 0;
/* link into table */
LIST_INSERT_HEAD(&mfchashtbl[hash], rt, mfc_hash);
TAILQ_INSERT_HEAD(&rt->mfc_stall, rte, rte_link);
+26 -8
View File
@@ -343,17 +343,35 @@ rip_input(struct mbuf *m, int off)
*/
if (inp->inp_moptions != NULL &&
IN_MULTICAST(ntohl(ip->ip_dst.s_addr))) {
struct sockaddr_in group;
/*
* If the incoming datagram is for IGMP, allow it
* through unconditionally to the raw socket.
*
* In the case of IGMPv2, we may not have explicitly
* joined the group, and may have set IFF_ALLMULTI
* on the interface. imo_multi_filter() may discard
* control traffic we actually need to see.
*
* Userland multicast routing daemons should continue
* filter the control traffic appropriately.
*/
int blocked;
bzero(&group, sizeof(struct sockaddr_in));
group.sin_len = sizeof(struct sockaddr_in);
group.sin_family = AF_INET;
group.sin_addr = ip->ip_dst;
blocked = MCAST_PASS;
if (proto != IPPROTO_IGMP) {
struct sockaddr_in group;
bzero(&group, sizeof(struct sockaddr_in));
group.sin_len = sizeof(struct sockaddr_in);
group.sin_family = AF_INET;
group.sin_addr = ip->ip_dst;
blocked = imo_multi_filter(inp->inp_moptions,
ifp,
(struct sockaddr *)&group,
(struct sockaddr *)&ripsrc);
}
blocked = imo_multi_filter(inp->inp_moptions, ifp,
(struct sockaddr *)&group,
(struct sockaddr *)&ripsrc);
if (blocked != MCAST_PASS) {
IPSTAT_INC(ips_notmember);
continue;
+3
View File
@@ -834,6 +834,9 @@ sctp_handle_shutdown(struct sctp_shutdown_chunk *cp,
return;
} else {
sctp_update_acked(stcb, cp, net, abort_flag);
if (*abort_flag) {
return;
}
}
if (asoc->control_pdapi) {
/*
+30 -8
View File
@@ -213,17 +213,39 @@ rip6_input(struct mbuf **mp, int *offp, int proto)
*/
if (in6p->in6p_moptions &&
IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
struct sockaddr_in6 mcaddr;
/*
* If the incoming datagram is for MLD, allow it
* through unconditionally to the raw socket.
*
* Use the M_RTALERT_MLD flag to check for MLD
* traffic without having to inspect the mbuf chain
* more deeply, as all MLDv1/v2 host messages MUST
* contain the Router Alert option.
*
* In the case of MLDv1, we may not have explicitly
* joined the group, and may have set IFF_ALLMULTI
* on the interface. im6o_mc_filter() may discard
* control traffic we actually need to see.
*
* Userland multicast routing daemons should continue
* filter the control traffic appropriately.
*/
int blocked;
bzero(&mcaddr, sizeof(struct sockaddr_in6));
mcaddr.sin6_len = sizeof(struct sockaddr_in6);
mcaddr.sin6_family = AF_INET6;
mcaddr.sin6_addr = ip6->ip6_dst;
blocked = MCAST_PASS;
if ((m->m_flags & M_RTALERT_MLD) == 0) {
struct sockaddr_in6 mcaddr;
blocked = im6o_mc_filter(in6p->in6p_moptions, ifp,
(struct sockaddr *)&mcaddr,
(struct sockaddr *)&fromsa);
bzero(&mcaddr, sizeof(struct sockaddr_in6));
mcaddr.sin6_len = sizeof(struct sockaddr_in6);
mcaddr.sin6_family = AF_INET6;
mcaddr.sin6_addr = ip6->ip6_dst;
blocked = im6o_mc_filter(in6p->in6p_moptions,
ifp,
(struct sockaddr *)&mcaddr,
(struct sockaddr *)&fromsa);
}
if (blocked != MCAST_PASS) {
IP6STAT_INC(ip6s_notmember);
continue;
+5
View File
@@ -1054,6 +1054,11 @@ nfs_mount(struct mount *mp)
error = EINVAL;
goto out;
}
if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) {
vfs_mount_error(mp, "Bad file handle");
error = EINVAL;
goto out;
}
if (mp->mnt_flag & MNT_UPDATE) {
struct nfsmount *nmp = VFSTONFS(mp);
+4 -1
View File
@@ -270,7 +270,7 @@ static struct mem_region *pregions;
extern u_int phys_avail_count;
extern int regions_sz, pregions_sz;
extern int ofw_real_mode;
static struct ofw_map translations[64];
static struct ofw_map translations[96];
extern struct pmap ofw_pmap;
@@ -896,6 +896,9 @@ moea64_bridge_bootstrap(mmu_t mmup, vm_offset_t kernelstart, vm_offset_t kernele
panic("moea64_bootstrap: can't get mmu package");
if ((sz = OF_getproplen(mmu, "translations")) == -1)
panic("moea64_bootstrap: can't get ofw translation count");
if (sz > sizeof(translations))
panic("moea64_bootstrap: too many ofw translations (%d)",
sz/sizeof(*translations));
bzero(translations, sz);
if (OF_getprop(mmu, "translations", translations, sz) == -1)
+1 -1
View File
@@ -157,7 +157,7 @@ device kue # Kawasaki LSI USB Ethernet
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
#device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
# Misc
+16
View File
@@ -413,6 +413,22 @@ call_again:
cr->cr_xid = xid;
mtx_lock(&ct->ct_lock);
/*
* Check to see if the other end has already started to close down
* the connection. The upcall will have set ct_error.re_status
* to RPC_CANTRECV if this is the case.
* If the other end starts to close down the connection after this
* point, it will be detected later when cr_error is checked,
* since the request is in the ct_pending queue.
*/
if (ct->ct_error.re_status == RPC_CANTRECV) {
if (errp != &ct->ct_error) {
errp->re_errno = ct->ct_error.re_errno;
errp->re_status = RPC_CANTRECV;
}
stat = RPC_CANTRECV;
goto out;
}
TAILQ_INSERT_TAIL(&ct->ct_pending, cr, cr_link);
mtx_unlock(&ct->ct_lock);
+1 -1
View File
@@ -255,7 +255,7 @@ device udav # Davicom DM9601E USB
# FireWire support
device firewire # FireWire bus code
device sbp # SCSI over FireWire (Requires scbus and da)
#device sbp # SCSI over FireWire (Requires scbus and da)
device fwe # Ethernet over FireWire (non-standard!)
device fwip # IP over FireWire (RFC 2734,3146)
device dcons # Dumb console driver
+2
View File
@@ -147,6 +147,8 @@ fi
echo "Writing crash summary to $FILE."
umask 077
# Simulate uname
ostype=$(echo -e printf '"%s", ostype' | gdb -x /dev/stdin -batch $KERNEL)
osrelease=$(echo -e printf '"%s", osrelease' | gdb -x /dev/stdin -batch $KERNEL)
@@ -600,6 +600,7 @@ fetch_check_params () {
echo ${WORKDIR}
exit 1
fi
chmod 700 ${WORKDIR}
cd ${WORKDIR} || exit 1
# Generate release number. The s/SECURITY/RELEASE/ bit exists
+4
View File
@@ -511,6 +511,10 @@ set_param(const char *name, char *value)
*value++ = '\0';
}
/* jail_set won't chdir along with its chroot, so do it here. */
if (!strcmp(name, "path") && chdir(value) < 0)
err(1, "chdir: %s", value);
/* Check for repeat parameters */
for (i = 0; i < nparams; i++)
if (!strcmp(name, params[i].jp_name)) {
-104
View File
@@ -1,104 +0,0 @@
# $FreeBSD$
This package includes a mfiutil command for administering mfi(4) controllers
on FreeBSD.
Version 1.0.13
* Cleaned up warnings in preparation for integration with FreeBSD
Version 1.0.12
* Add 'drive clear' command to wipe drives with all 0x00 characters
Version 1.0.11
* Display serial number for drives
* Display location info for drives with 'show config'
Version 1.0.10
* Display min and max stripe size supported by adapters.
* Added support for examining the controller event log.
Version 1.0.9
* Display stripe size for volumes.
* Added support for setting the stripe size for new volumes.
* Fix a regression in 1.0.8 that broke creation of RAID-5 and RAID-50
arrays.
Version 1.0.8
* Added support for RAID-60 arrays.
* Added 'flash' command to support firmware flashing.
Version 1.0.7
* Renamed 'clear config' to 'clear, 'create volume' to 'create',
'delete volume' to 'delete', 'create spare' to 'add', and
'delete spare' to 'remove'. The old names still work.
* Added support for RAID-6 arrays.
Version 1.0.6
* Added 'show patrol', 'patrol', 'start patrol', and 'stop patrol'
commands to manage patrol reads.
Version 1.0.5
* Added 'create volume' and 'delete volume' commands to manage volumes.
* Added 'clear config' command to clear entire configuration.
* Added more detailed error reporting based on firmware status codes.
* Renamed 'progress' command to 'drive progress'.
* Added 'volume progress' command to display progress of volume-level
activites such as background inits.
* Fixed 'create spare' to properly add global spares.
Version 1.0.4
* Added 'create spare' and 'delete spare' commands to manage hot spares.
* Added 'good' command to mark unconfigured bad drives as good.
* Display more information about hot spares in 'show config'
* Allow physical drives to be specified via Exx:Syy similar to megacli
* Display onboard memory size in 'show adapter'
Version 1.0.3
* Added 'cache' command to manage cache settings for volumes.
* Added 'name' command to name volumes.
* Added manpage.
Version 1.0.2
* Added 'show adapter' and 'show battery' commands.
* Added RAID level of volumes to 'show config' and 'show volumes'.
* Added drive model info to 'show config' and 'show drives'.
* Added package firmware version to 'show firmware'.
* Added read and write cache status to 'show volumes'.
* Map volume IDs to mfidX device names on newer kernels.
Version 1.0.1
* Added 'show firmware' command
Version 1.0.0
* Initial release
usage: mfiutil [-u unit] <command> ...
Commands include:
version
show adapter - display controller information
show battery - display battery information
show config - display RAID configuration
show drives - list physical drives
show firmware - list firmware images
show volumes - list logical volumes
show patrol - display patrol read status
fail <drive> - fail a physical drive
good <drive> - mark a bad physical drive as good
rebuild <drive> - mark failed drive ready for rebuild
drive progress <drive> - display status of active operations
start rebuild <drive>
abort rebuild <drive>
locate <drive> <on|off> - toggle drive LED
cache <volume> [command [setting]]
name <volume> <name>
volume progress <volume> - display status of active operations
clear - clear volume configuration
create <type> [-v] <drive>[,<drive>[,...]] [<drive>[,<drive>[,...]]
delete <volume>
add <drive> [volume] - add a hot spare
remove <drive> - remove a hot spare
patrol <disable|auto|manual> [interval [start]]
start patrol - start a patrol read
stop patrol - stop a patrol read
flash <firmware>
-574
View File
@@ -1,574 +0,0 @@
.\" Copyright (c) 2008, 2009 Yahoo!, Inc.
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\" notice, this list of conditions and the following disclaimer.
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in the
.\" documentation and/or other materials provided with the distribution.
.\" 3. The names of the authors may not be used to endorse or promote
.\" products derived from this software without specific prior written
.\" permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE.
.\"
.\" $FreeBSD$
.\"
.Dd June 17, 2008
.Dt MFIUTIL 1
.Os
.Sh NAME
.Nm mfiutil
.Nd Utility for managing LSI MegaRAID SAS controllers
.Sh SYNOPSIS
.Nm
.Cm version
.Nm
.Op Fl u Ar unit
.Cm show adapter
.Nm
.Op Fl u Ar unit
.Cm show battery
.Nm
.Op Fl u Ar unit
.Cm show config
.Nm
.Op Fl u Ar unit
.Cm show drives
.Nm
.Op Fl u Ar unit
.Cm show events
.Op Fl c Ar class
.Op Fl l Ar locale
.Op Fl n Ar count
.Op Fl v
.Op Ar start Op Ar stop
.Nm
.Op Fl u Ar unit
.Cm show firmware
.Nm
.Op Fl u Ar unit
.Cm show logstate
.Nm
.Op Fl u Ar unit
.Cm show patrol
.Nm
.Op Fl u Ar unit
.Cm show volumes
.Nm
.Op Fl u Ar unit
.Cm fail Ar drive
.Nm
.Op Fl u Ar unit
.Cm good Ar drive
.Nm
.Op Fl u Ar unit
.Cm rebuild Ar drive
.Nm
.Op Fl u Ar unit
.Cm drive progress Ar drive
.Nm
.Op Fl u Ar unit
.Cm drive clear Ar drive Brq "start | stop"
.Nm
.Op Fl u Ar unit
.Cm start rebuild Ar drive
.Nm
.Op Fl u Ar unit
.Cm abort rebuild Ar drive
.Nm
.Op Fl u Ar unit
.Cm locate Ar drive Brq "on | off"
.Nm
.Op Fl u Ar unit
.Cm cache Ar volume Op Ar setting Op Ar value
.Nm
.Op Fl u Ar unit
.Cm name Ar volume Ar name
.Nm
.Op Fl u Ar unit
.Cm volume progress Ar volume
.Nm
.Op Fl u Ar unit
.Cm clear
.Nm
.Op Fl u Ar unit
.Cm create Ar type
.Op Fl v
.Op Fl s Ar stripe_size
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
.Nm
.Op Fl u Ar unit
.Cm delete Ar volume
.Nm
.Op Fl u Ar unit
.Cm add Ar drive Op Ar volume
.Nm
.Op Fl u Ar unit
.Cm remove Ar drive
.Nm
.Op Fl u Ar unit
.Cm start patrol
.Nm
.Op Fl u Ar unit
.Cm stop patrol
.Nm
.Op Fl u Ar unit
.Cm patrol Ar command Op Ar interval Op Ar start
.Nm
.Op Fl u Ar unit
.Cm flash Ar file
.Sh DESCRIPTION
The
.Nm
utility can be used to display or modify various parameters on LSI
MegaRAID SAS RAID controllers.
Each invocation of
.Nm
consists of zero or more global options followed by a command.
Commands may support additional optional or required arguments after the
command.
.Pp
Currently one global option is supported:
.Bl -tag -width indent
.It Fl u Ar unit
.Ar unit
specifies the unit of the controller to work with.
If no unit is specified,
then unit 0 is used.
.El
.Pp
Volumes may be specified in two forms.
First,
a volume may be identified by its target ID.
Second,
on the volume may be specified by the corresponding
.Em mfidX
device,
such as
.Em mfid0 .
Note that this second method only works on OS versions
.Dv 6.2-YAHOO-20070510
and later.
.Pp
Drives may be specified in two forms.
First,
a drive may be identified by its device ID.
The device ID for configured drives can be found in
.Cm show config .
Second,
a drive may be identified by its location as
.Sm off
.Op E Ar xx Ns \&:
.Li S Ns Ar yy
.Sm on
where
.Ar xx
is the enclosure
and
.Ar yy
is the slot for each drive as displayed in
.Cm show drives .
.Pp
The
.Nm
utility supports several different groups of commands.
The first group of commands provide information about the controller,
the volumes it manages, and the drives it controls.
The second group of commands are used to manage the physical drives
attached to the controller.
The third group of commands are used to manage the logical volumes
managed by the controller.
The fourth group of commands are used to manage the drive configuration for
the controller.
The fifth group of commands are used to manage controller-wide operations.
.Pp
The informational commands include:
.Bl -tag -width indent
.It Cm version
Displays the version of
.Nm .
.It Cm show adapter
Displays information about the RAID controller such as the model number.
.It Cm show battery
Displays information about the battery from the battery backup unit.
.It Cm show config
Displays the volume and drive configuration for the controller.
Each array is listed along with the physical drives the array is built from.
Each volume is listed along with the arrays that the volume spans.
If any hot spare drives are configured, then they are listed as well.
.It Cm show drives
Lists all of the physical drives attached to the controller.
.It Xo Cm show events
.Op Fl c Ar class
.Op Fl l Ar locale
.Op Fl n Ar count
.Op Fl v
.Op Ar start Op Ar stop
.Xc
Display entries from the controller's event log.
The controller maintains a circular buffer of events.
Each event is tagged with a class and locale.
.Pp
The
.Ar class
parameter limits the output to entries at the specified class or higher.
The default class is
.Dq warn .
The available classes from lowest priority to highest are:
.Bl -tag -width -indent
.It Cm debug
Debug messages.
.It Cm progress
Periodic progress updates for long-running operations such as background
initializations, array rebuilds, or patrol reads.
.It Cm info
Informational messages such as drive insertions and volume creations.
.It Cm warn
Indicates that some component may be close to failing.
.It Cm crit
A component has failed, but no data is lost.
For example, a volume becoming degraded due to a drive failure.
.It Cm fatal
A component has failed resulting in data loss.
.It Cm dead
The controller itself has died.
.El
.Pp
The
.Ar locale
parameter limits the output to entries for the specified part of the controller.
The default locale is
.Dq all .
The available locales are
.Dq volume ,
.Dq drive ,
.Dq enclousure ,
.Dq battery ,
.Dq sas ,
.Dq controller ,
.Dq config ,
.Dq cluster ,
and
.Dq all .
.Pp
The
.Ar count
parameter is a debugging aid that specifies the number of events to fetch from
the controller for each low-level request.
The default is 15 events.
.Pp
By default, matching event log entries from the previous shutdown up to the
present are displayed. This range can be adjusted via the
.Ar start
and
.Ar stop
parameters.
Each of these parameters can either be specified as a log entry number or as
one of the following aliases:
.Bl -tag -width -indent
.It Cm newest
The newest entry in the event log.
.It Cm oldest
The oldest entry in the event log.
.It Cm clear
The first entry since the event log was cleared.
.It Cm shutdown
The entry in the event log corresponding to the last time the controller was
cleanly shut down.
.It Cm boot
The entry in the event log corresponding to the most recent boot.
.El
.It Cm show firmware
Lists all of the firmware images present on the controller.
.It Cm show logstate
Display the various sequence numbers associated with the event log.
.It Cm show patrol
Display the status of the controller's patrol read operation.
.It Cm show volumes
Lists all of the logical volumes managed by the controller.
.El
.Pp
The physical drive management commands include:
.Bl -tag -width indent
.It Cm fail Ar drive
Mark
.Ar drive
as failed.
.Ar Drive
must be an online drive that is part of an array.
.It Cm good Ar drive
Mark
.Ar drive
as an unconfigured good drive.
.Ar Drive
must not be part of an existing array.
.It Cm rebuild Ar drive
Mark a failed
.Ar drive
that is still part of an array as a good drive suitable for a rebuild.
The firmware should kick off an array rebuild on its own if a failed drive
is marked as a rebuild drive.
.It Cm drive progress Ar drive
Report the current progress and estimated completion time of drive operations
such as rebuilds or patrol reads.
.It Cm drive clear Ar drive Brq "start | stop"
Start or stop the writing of all 0x00 characters to a drive.
.It Cm start rebuild Ar drive
Manually start a rebuild on
.Ar drive .
.It Cm abort rebuild Ar drive
Abort an in-progress rebuild operation on
.Ar drive .
It can be resumed with the
.Cm start rebuild
command.
.It Cm locate Ar drive Brq "on | off"
Change the state of the external LED associated with
.Ar drive .
.El
.Pp
The logical volume management commands include:
.Bl -tag -width indent
.It Cm cache Ar volume Op Ar setting Op Ar value
If no
.Ar setting
argument is supplied, then the current cache policy for
.Ar volume
is displayed;
otherwise,
the cache policy for
.Ar volume
is modified.
The optional
.Ar setting
argument can be one of the following values:
.Bl -tag -width indent
.It Cm enable
Enable caching for both read and write I/O operations.
.It Cm disable
Disable caching for both read and write I/O operations.
.It Cm reads
Enable caching only for read I/O operations.
.It Cm writes
Enable caching only for write I/O operations.
.It Cm write-back
Use write-back policy for cached writes.
.It Cm write-through
Use write-through policy for cached writes.
.It Cm read-ahead Op Ar value
Set the read ahead policy for cached reads.
The
.Ar value
argument can be set to either
.Dq none ,
.Dq adaptive ,
or
.Dq always .
.It Cm write-cache Op Ar value
Control the write caches on the physical drives backing
.Ar volume .
The
.Ar value
argument can be set to either
.Dq disable ,
.Dq enable ,
or
.Dq default .
.Pp
In general this setting should be left disabled to avoid data loss when the
physical drives lose power.
The battery backup of the RAID controller does not save data in the write
caches of the physical drives.
.El
.It Cm name Ar volume Ar name
Sets the name of
.Ar volume
to
.Ar name .
.It Cm volume progress Ar volume
Report the current progress and estimated completion time of volume operations
such as consistency checks and initializations.
.El
.Pp
The configuration commands include:
.Bl -tag -width indent
.It Cm clear
Delete the entire configuration including all volumes, arrays, and spares.
.It Xo Cm create Ar type
.Op Fl v
.Op Fl s Ar stripe_size
.Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
.Op Ar drive Ns Op \&, Ns Ar drive Ns Op ",..."
.Xc
Create a new volume.
The
.Ar type
specifies the type of volume to create.
Currently supported types include:
.Bl -tag -width indent
.It Cm jbod
Creates a RAID0 volume for each drive specified.
Each drive must be specified as a separate argument.
.It Cm raid0
Creates one RAID0 volume spanning the drives listed in the single drive list.
.It Cm raid1
Creates one RAID1 volume spanning the drives listed in the single drive list.
.It Cm raid5
Creates one RAID5 volume spanning the drives listed in the single drive list.
.It Cm raid6
Creates one RAID6 volume spanning the drives listed in the single drive list.
.It Cm raid10
Creates one RAID10 volume spanning multiple RAID1 arrays.
The drives for each RAID1 array are specified as a single drive list.
.It Cm raid50
Creates one RAID50 volume spanning multiple RAID5 arrays.
The drives for each RAID5 array are specified as a single drive list.
.It Cm raid60
Creates one RAID60 volume spanning multiple RAID6 arrays.
The drives for each RAID6 array are specified as a single drive list.
.It Cm concat
Creates a single volume by concatenating all of the drives in the single drive
list.
.El
.Pp
.Sy Note:
Not all volume types are supported by all controllers.
.Pp
If the
.Fl v
flag is specified after
.Ar type ,
then more verbose output will be enabled.
Currently this just provides notification as drives are added to arrays and
arrays to volumes when building the configuration.
.Pp
The
.Fl s
.Ar stripe_size
parameter allows the stripe size of the array to be set.
By default a stripe size of 64K is used.
Valid values are 512 through 1M, though the MFI firmware may reject some
values.
.It Cm delete Ar volume
Delete the volume
.Ar volume .
.It Cm add Ar drive Op Ar volume
Mark
.Ar drive
as a hot spare.
.Ar Drive
must be in the unconfigured good state.
If
.Ar volume
is specified,
then the hot spare will be dedicated to arrays backing that volume.
Otherwise,
.Ar drive
will be used as a global hot spare backing all arrays for this controller.
Note that
.Ar drive
must be as large as the smallest drive in all of the arrays it is going to
back.
.It Cm remove Ar drive
Remove the hot spare
.Ar drive
from service.
It will be placed in the unconfigured good state.
.El
.Pp
The controller management commands include:
.Bl -tag -width indent
.It Cm patrol Ar command Op Ar interval Op Ar start
Set the patrol read operation mode.
The
.Ar command
argument can be one of the following values:
.Bl -tag -width indent
.It Cm disable
Disable patrol reads.
.It Cm auto
Enable periodic patrol reads initiated by the firmware.
The optional
.Ar interval
argument specifies the interval in seconds between patrol reads.
If patrol reads should be run continously,
then
.Ar interval
should consist of the word
.Dq continuously .
The optional
.Ar start
argument specifies a non-negative, relative start time for the next patrol read.
If an interval or start time is not specified,
then the existing setting will be used.
.It Cm manual
Enable manual patrol reads that are only initiated by the user.
.El
.It Cm start patrol
Start a patrol read operation.
.It Cm stop patrol
Stop a currently running patrol read operation.
.It Cm flash Ar file
Updates the flash on the controller with the firmware stored in
.Ar file .
A reboot is required for the new firmware to take effect.
.El
.Sh EXAMPLES
Configure the cache for volume mfid0 to cache only writes:
.Pp
.Dl Nm Cm cache mfid0 writes
.Dl Nm Cm cache mfid0 write-back
.Pp
Create a RAID5 array spanning the first four disks in the second enclosure:
.Pp
.Dl Nm Cm create raid5 e1:s0,e1:s1,e1:s2,e1:s4
.Pp
Configure the first three disks on a controller as JBOD:
.Pp
.Dl Nm Cm create jbod 0 1 2
.Pp
Create a RAID10 volume that spans two arrays each of which contains two disks
from two different enclosures:
.Pp
.Dl Nm Cm create raid10 e1:s0,e1:s1 e2:s0,e2:s1
.Pp
Add drive with the device ID of 4 as a global hot spare:
.Pp
.Dl Nm Cm add 4
.Pp
Add the drive in slot 2 in the main chassis as a hot spare for volume mfid0:
.Pp
.Dl Nm Cm add s2 mfid0
.Pp
Configure the adapter to run periodic patrol reads once a week with the first
patrol read starting in 5 minutes:
.Pp
.Dl Nm Cm patrol auto 604800 300
.Pp
.Sh SEE ALSO
.Xr mfi 4
.Sh BUGS
On 64-bit OS versions
.Dv 6.2-YAHOO-20070514
and earlier,
the
.Xr mfi 4
driver does not properly report firmware errors to 32-bit versions of
.Nm .
As a result,
some commands may fail even though they do not report any errors.