by current versions of gas that don't have the bug as well as by the
RELENG_3 version. A 32-bit load of %esp in 16-bit mode was mangled.
The current version of gas still produces a different object file due
to related (but harmless) bugs involving bogus operand size prefixes
for segment registers.
bss properly) with adjustments for RELENG_3. The adjustments are the
same as for RELENG_4.
This is part of some making RELENG_3 kernels work when compiled by gcc-3.3.
Fixing bss clearing and ATOMIC_ASM constrains are the only nontrivial parts.
versions can be given different, non-bogus constraints).
This is part of making some RELENG_3 kernels work when compiled by gcc-3.3.
I started out only wanting them to compile, but had to test them for
delicate changes like this. This change makes no difference for LINT
compiled by the RELENG_3 compiler, except for vfs_cluster.o where it
gives some differences related to register selection near an
atomic_add_char().
olpt devices never worked in RELENG_3, if anywhere, since a driver's
namespace is not affected by changing only the driver's name. LINT
apparently hasn't been buildable in RELENG_3 since rev.1.539.2.14
(between 3.1R and 3.2R).
of RELENG_3 are compiled by gcc-3. These macros are for cosmetic
purposes (optimization and error checking), so they should have been
defined away for all unknown compilers, including for versions of gcc
that were apparently not dreamt of when RELENG_3 was current or stable,
but the ifdefs are too backwards-looking and got this wrong.
RELENG_4 has the same bug for gcc-4.
The corresponding idefs in -current and most other ifdefs for gcc avoid
the bug by assuming that all future versions of gcc will be like gcc-3.
the headers, and even though it's not used in this file make it a
volatile here too").
The worth of this is that it makes this file actually compilable by C
compilers like gcc-3.
with the public ones declared in a system header). This helps unbreak
building RELENG_3 kernels with gcc-3. gcc-2's special (broken) handling
of the corresponding builtins apparently prevented detection of the
conflicts even when the public functions are declared explicitly.
src/sys/netinet/ip_input.c rev 1.130.2.22
src/sys/netinet6/frag6.c rev 1.2.2.4
src/sys/netinet6/in6_proto.c rev 1.6.2.4
Prevent denial of service using bogus fragmented IPv4 packets.
A attacker sending a lot of bogus fragmented packets to the target
(with different IPv4 identification field - ip_id), may be able
to put the target machine into mbuf starvation state.
By setting a upper limit on the number of reassembly queues we
prevent this situation.
This upper limit is controlled by the new sysctl
net.inet.ip.maxfragpackets which defaults to nmbclusters/4
If you want old behaviour (no upper limit) set this sysctl
to a negative value.
If you don't want to accept any fragments (not recommended)
set the sysctl to 0 (zero)
Obtained from: NetBSD (partially)