Commit Graph

240860 Commits

Author SHA1 Message Date
christos c0d16449e0 OpenBSD tokenizer.c rev. 1.8 2003/08/11 18:21:40 deraadt
don't increase amax on realloc failure
2016-02-15 15:37:20 +00:00
christos efeef4e587 OpenBSD term.c rev. 1.13 2009/12/11 18:58:59 jacekm
fix two memory leaks
2016-02-15 15:35:03 +00:00
christos c825536317 Change the test for the size of encoded buffer to include the NULL, from
OpenBSD; no functional change.
2016-02-15 15:30:50 +00:00
christos 5367da5f9e OpenBSD sig.c rev. 1.6 2001/12/06 04:26:00 deraadt
save and restore errno in signal handler
2016-02-15 15:29:25 +00:00
christos 87240809e9 Use fparseln to avoid newline hacks. 2016-02-15 15:26:48 +00:00
christos 70a36d136a use fparseln() to avoid needing to deal with missing \n in the last line
and also to handle comments automatically.
2016-02-15 15:18:01 +00:00
christos cfb3849454 This needs _KERNTYPES on some platforms. 2016-02-15 14:59:38 +00:00
rtr e2a3307b85 Reduce code duplication.
Split creation of IPv4-Mapped IPv6 addresses into its own function
and use it.

No functional change intended.  As posted to tech-net@
2016-02-15 14:59:03 +00:00
martin c9d7952e8d Add missing closing ) and line continuation for mknative 2016-02-15 13:25:12 +00:00
martin 4739ebdb41 Avoid strict alias violation for VAX 2016-02-15 11:07:48 +00:00
ozaki-r 297068212d Run if_link_state_change in softint
if_link_state_change can execute the network stack that is expected to
not run in hardware interrupt (at least now), however network drivers
may call it in hardware interrupt. Avoid that by introducing a new
softint for if_link_state_change.

The original patch is provided by mlelstv@ and tweaked a bit by me.

Should fix PR kern/50602.
2016-02-15 08:08:04 +00:00
ozaki-r b7a310ca27 Simplify bridge(4)
Thanks to introducing softint-based if_input, the entire bridge code now
never run in hardware interrupt context. So we can simplify the code.

- Remove spin mutexes
  - They were needed because some code of bridge could run in
    hardware interrupt context
  - We now need only an adaptive mutex for each shared object
    (a member list and a forwarding table)
- Remove pktqueue
  - bridge_input is already in softint, using another softint
    (for bridge_forward) is useless
  - Packet distribution should be down at device drivers
2016-02-15 01:11:41 +00:00
rtr f5c6d9772a remove duplicated #include of <netinet/in.h> 2016-02-14 23:47:57 +00:00
palle d66d7c235b sun4v: add breakpoint trap entry to the sun4v trap table 2016-02-14 21:13:33 +00:00
chs 2f02870f3b zero the i2c_attach_args structure before filling it in.
fixes occasional crashes in iic_attach().
2016-02-14 19:54:19 +00:00
dholland cb63f3a3bd Remove extra stray break missed by Christos when committing PR 50783. 2016-02-14 19:11:19 +00:00
dholland dca47d5247 Restore the local change
-gcc: internal compiler error: Killed (program cc1plus)
  +gcc: internal compiler error: Killed (program cc1plus received signal 9)
which was lost in an update somewhere after netbsd-6.

This clarification was found in the past to significantly reduce the
number of bug reports caused by people running out of swap, such as
(most likely) seen again today in PR 50802.

XXX: pullup-7
2016-02-14 19:08:10 +00:00
martin 7c285cf750 Make the vax target buildable 2016-02-14 19:00:04 +00:00
dholland a33f4fbcc2 Add missing va_end, from David Binderman in PR 50798. 2016-02-14 18:12:30 +00:00
dholland 0107a58a68 Add missing va_end, from David Binderman in PR 50797. 2016-02-14 18:11:16 +00:00
dholland 4fbed23287 Add missing va_list, from David Binderman in PR 50796.
XXX: this file and arch/arc/stand/boot/disk.c are cutpaste clones.
2016-02-14 18:09:51 +00:00
dholland e9150352cd Add missing va_end; PR 50795 from David Binderman. 2016-02-14 18:07:49 +00:00
dholland 28adc7db17 Fix wrong indent. 2016-02-14 18:05:31 +00:00
dholland 48ddc7de4d Add missing va_end(). PR 50794 from David Binderman. 2016-02-14 18:04:47 +00:00
dholland e19dc66768 Add missing va_end. PR 50793 from David Binderman. 2016-02-14 18:01:45 +00:00
christos 2884af9fee From Ingo Schwarze:
el_getc() for the WIDECHAR case, that is, the version in eln.c.
For a UTF-8 locale, it is broken in four ways:

 1. If the character read is outside the ASCII range, the function
    does an undefined cast from wchar_t to char.  Even if wchar_t
    is internally represented as UCS-4, that is wrong and dangerous
    because characters beyond codepoint U+0255 get their high bits
    truncated, meaning that perfectly valid printable Unicode
    characters get mapped to arbitrary bytes, even the ASCII escape
    character for some Unicode characters.  But wchar_t need not
    be implemented in terms of UCS-4, so the outcome of this function
    is undefined for any and all input.

 2. If insufficient space is available for the result, the function
    fails to detect failure and returns garbage rather than -1 as
    specified in the documentation.

 3. The documentation says that errno will be set on failure, but
    that doesn't happen either in the above case.

 4. Even for ASCII characters, the results may be wrong if wchar_t
    is not using UCS-4.
2016-02-14 17:06:24 +00:00
christos f54e4f97f9 From Ingo Schwarze:
As we have seen before, "histedit.h" can never get rid of including
the <wchar.h> header because using the data types defined there is
deeply ingrained in the public interfaces of libedit.

Now POSIX unconditionally requires that <wchar.h> defines the type
wint_t.  Consequently, it can be used unconditionally, no matter
whether WIDECHAR is active or not.  Consequently, the #define Int
is pointless.

Note that removing it is not gratuitious churn.  Auditing for
integer signedness problems is already hard when only fundamental
types like "int" and "unsigned" are involved.  It gets very hard
when types come into the picture that have platform-dependent
signedness, like "char" and "wint_t".  Adding yet another layer
on top, changing both the signedness and the width in a platform-
dependent way, makes auditing yet harder, which IMHO is really
dangerous.  Note that while removing the #define, i already found
one bug caused by this excessive complication - in the function
re_putc() in refresh.c.  If WIDECHAR was defined, it printed an
Int = wint_t value with %c.  Fortunately, that bug only affects
debugging, not production.  The fix is contained in the patch.

With WIDECHAR, this doesn't change anything.  For the case without
WIDECHAR, i checked that none of the places wants to store values
that might not fit in wint_t.

This only changes internal interfaces; public ones remain unchanged.
2016-02-14 14:49:34 +00:00
christos 61ee30487d From Ingo Schwartze:
Next step:  Remove #ifdef'ing in read_char(), in the same style
as we did for setlocale(3) in el.c.

A few remarks are required to explain the choices made.

 * On first sight, handling mbrtowc(3) seems a bit less trivial
   than handling setlocale(3) because its prototype uses the data
   type mbstate_t from <wchar.h>.  However, it turns out that
   "histedit.h" already includes <wchar.h> unconditionally (i don't
   like headers including other headers, but that ship has sailed,
   people are by now certainly used to the fact that including
   "histedit.h" doesn't require including <wchar.h> before), and
   "histedit.h" is of course included all over the place.  So from
   that perspective, there is no problem with using mbrtowc(3)
   unconditionally ever for !WIDECHAR.

 * However, <wchar.h> also defines the mbrtowc(3) prototype,
   so we cannot just #define mbrtowc away, or including the header
   will break.  It would also be a bad idea to porovide a local
   implementation of mbrtowc() and hope that it overrides the one
   in libc.  Besides, the required prototype is subtly different:
   While mbrtowc(3) takes "wchar_t *" as its first argument, we
   need a function that takes "Char *".  So unfortunately, we have
   to keep a ct_mbrtowc #define, at least until we can maybe get
   rid of "Char *" in the more remote future.

 * After getting rid of the #else clause in read_char(), we can
   pull "return 1;" into the default: clause.  After that, we can
   get rid of the ugly "goto again_lastbyte;" and just "break;".
   As a bonus, that also gets rid of the ugly CONSTCOND.

 * While here, delete the unused ct_mbtowc() from chartype.h.
2016-02-14 14:47:48 +00:00
skrll 542c3c7262 Update for latest dwc2 dist 2016-02-14 10:56:22 +00:00
skrll 5064f7beaa Merge conflicts 2016-02-14 10:53:30 +00:00
skrll 72e16840a4 Fix DWC2_READ_4 in dwc2_sample_frrem which is unused 2016-02-14 10:34:09 +00:00
riastradh 619b8ca5eb Map the same mmio size as Linux does.
Unlikely to have practical consequences -- just reduces differences
in behaviour from upstream, to rule them out.
2016-02-14 03:41:18 +00:00
riastradh 3169daaff3 Fix bus_space_subregion error branch.
Return error code, not 0 (!), on bus_space_subregion failure.

In answer to `XXX error branch' comment: if nouveau_barobj_ctor
fails, then the caller will call nouveau_barobj_dtor too.  So there's
no leak here.

Unlikely to fix any observed bugs with nouveau -- there's no error
branch in the Linux side here.  But maybe it will catch some other
bug earlier.
2016-02-14 03:06:06 +00:00
dholland a76124b212 DNF 2016-02-13 23:12:34 +00:00
christos c628030d37 reduce ifdefs 2016-02-13 21:37:12 +00:00
riastradh 091e6ea2fb Add nouveau to x86 GENERIC kernels. 2016-02-13 19:53:23 +00:00
hikaru 03068386e3 Pass all unicast addresses if it is promisc mode. 2016-02-13 08:44:22 +00:00
hikaru e5a183c233 Make all packets are enqueued into queue 0.
queue 7 is not default, it is caused by the filter tables.
The fields are including queue number, not bitfields.
So MVXPE_DF_QUEUE_ALL (b111) means queue 7.

And also, pass all unicast addresses if it is promisc mode.
MVXPE_PXC_UPM is working in almost cases,
but this change is needed for some cases; bridging frames through inter units,
using products have consecutive MAC addresses.
2016-02-13 08:05:06 +00:00
hikaru cbb771782b Fix typo in sysctls. 2016-02-13 06:44:22 +00:00
hikaru 65e1200c74 Count up if_{opackets,oerrors,ierrors,collisions}.
And also "MAC Transmit Error" is tx error, not rx.
2016-02-13 06:33:21 +00:00
hikaru e48ad7e887 Style. 2016-02-13 06:12:46 +00:00
hikaru ea31d1a6f5 Preserve rx csum bad flags. 2016-02-13 06:02:31 +00:00
hikaru 3cb6f1bced Fix mitake, disable SERDES error interrupts again. 2016-02-13 05:47:38 +00:00
hikaru e26a9e7c97 Don't use RXTX intr that is excess and requires another IRQ handler,
and disable SERDES error interrupts.
2016-02-13 05:44:01 +00:00
hikaru d841c5696c Correct bus_dmamap_sync operaion. 2016-02-13 05:21:11 +00:00
hikaru 141ef376c5 Correct locks and missing breaks. 2016-02-13 03:33:02 +00:00
christos cc7f005f24 Avoid c99 for now. 2016-02-12 17:23:21 +00:00
christos 57c556fd79 GC IGNORE_EXTCHARS and simplify code (Ingo Schwarze) 2016-02-12 15:36:08 +00:00
christos 0e1288d7c8 From Ingo Schwarze:
If CHARSET_IS_UTF8 is not set, read_char() is broken in a large
number of ways:

 1. The isascii(3) check can yield false positives.  If a string in
    an arbitrary encoding contains a byte in the range 0..127,
    that does not at all imply that it forms a character all by
    itself, and even less that it represents the same character
    as in ASCII.  Consequently, read_char() may return characters
    the user never typed.
    Even if the encoding is not state dependent, the assumption that
    bytes in the range 0..127 represent ASCII characters is broken.
    Consider UTF-16, for example.

 2. The reverse problem can also occur.  In an arbitrary encoding,
    there is no guarantee that a character that can be represented
    by ASCII is represented by a seven-bit byte, and even less by
    the same byte as in ASCII.
    Even for single-byte encodings, these assumptions are broken.
    Consider the ISO 646 national variants, for example.
    Consequently, the current code is insufficient to keep ASCII
    characters working even for single-byte encodings.

 3. The condition "++cbp != 1" can never trigger (because initially,
    cbp is 0, and the code can only go back up via the final goto,
    which has another cbp = 0 right before it) and it has no effect
    (because cbp isn't used afterwards).

 4. bytes = ct_mbtowc(cp, cbuf, cbp) is broken.  If this returns -1,
    the code assumes that is can just call mbtowc(3) again for later
    input bytes.  In some implementations, that may even be broken
    for state-independent encodings, but trying again after mbtowc(3)
    failure certainly produces completely erratic and meaningless
    results in state-dependent encodings.

 5. The assignment "*cp = (Char)(unsigned char)cbuf[0]" is
    completely bogus.  Even if the byte cbuf[0] represents a
    character all by itself, which it usually will not, whether
    or not the cast produces the desired result depends on the
    internal representation of wchar_t in the C library, which
    the application program can know nothing about.  Even for ASCII
    in the C/POSIX locale, an ASCII character other than '\0' ==
    L'\0' == 0 need not have the same numeric value as a char and
    as a wchar_t.

To summarize, this code only works if all of the following
conditions hold:

 - The encoding is a single-byte encoding.
 - ASCII is a subset of the encoding.
 - The implementation of mbtowc(3) in the C library does not
   require re-initialization after encoding errors.
 - The implementation of wchar_t in the C library uses the
   same numerical values as ASCII.

Otherwise, it silently produces wrong results.

The simplest way to fix this is to just use the same code as for
UTF-8 (right above).  Of course, that causes functional changes
but that shouldn't matter since current behaviour is undefined.

The patch below provides the following improvements:

 - It works for all stateless single-byte encodings, no matter
   whether they are somehow related to ASCII, no matter how
   mb[r]towc(3) are internally implemented, and no matter how
   wchar_t is internally represented.
 - Instead of producing unpredictable and definitely wrong
   results for non-UTF-8 multibyte characters, it behaves in
   a well-defined way: It aborts input processing, sets errno,
   and returns failure.
   Note that short of providing full support for arbitrary locales,
   it is impossible to do better.  We cannot know whether a given
   unsupported locale is state-dependent, and for a state-dependent
   locale, it makes no sense to retry parsing after an encoding
   error, so the best we can do is abort processing for *any*
   unsupported multi-byte character.
 - Note that single-byte characters in arbitrary state-independent
   locales still work, even in locales that may potentially also
   contain multibyte characters, as long as those don't occur in
   input.  I'm not sure whether any such locales exist in practice...

Tested with UTF-8 and C/POSIX on OpenBSD.  Also tested that in the
C/POSIX locale, non-ASCII bytes get through unmangled.  You may
wish to test with ISO-LATIN on NetBSD if NetBSD supports that.

----
Also use a constant for meta to avoid warnings.
2016-02-12 15:11:09 +00:00
hikaru 16e5bed744 Fix the bitmask of MVXPE_PMACC0_FRAMESIZELIMIT. It did no harm. 2016-02-12 09:24:15 +00:00