This patch speeds up scrolling of tdfxfb by maximizing var->yres_virtual so
tdfxfb uses SCROLL_PAN_MOVE instead of SCROLL_REDRAW. This is true whether
CONFIG_FB_3DFX_ACCEL is set or not. This problem was reported by Paolo
Ornati <ornati@fastwebnet.it> who also made substantial contributions to
solve this problem.
This patch also fixes compile errors when CONFIG_FB_3DFX_ACCEL is false.
Tom Rini [Wed, 8 Sep 2004 00:54:56 +0000 (17:54 -0700)]
[PATCH] ppc32: Switch arch/ppc/boot to lib/zlib_inflate
The following patch switches arch/ppc/boot over from using its own version
of zlib to the code found under lib/zlib_inflate. In conjunction with the
previous two patches, the size of the resulting images isn't noticably
different. But this does have the advantage of removing another copy of
zlib from the kernel, and I believe this allows for lib/inflate.c to go
away (as that's basically what ppc used to use).
Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Tom Rini [Wed, 8 Sep 2004 00:54:44 +0000 (17:54 -0700)]
[PATCH] zlib_inflate: Make zlib_inflate_trees_fixed(...) generate the table
The following changes zlib_inflate_trees_fixed(...) from using a statically
defined table, to generating this table. This cuts out 4-8kB from
inftrees.o (4kB on IBM 440GP, 8kB on PPC 74xx).
Signed-off-by: Tom Rini <trini@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
The different stack frame layout for packed stacks broke cpu hotplug.
Recreate the initial stack frame of the idle thread for offline cpus coming
back online. Reenable interrupts after loading the initial registers. In
addition this patch contains two more bug fixes: a typo for 64 bit
(__SMALL_STACK_SIZE vs. __SMALL_STACK) and show_trace didn't show a trace
if for task == NULL.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Removes unnecessary min/max macros and changes calls to use kernel.h macros
instead.
Signed-off-by: Michael Veeck <michael.veeck@gmx.net> Signed-off-by: Maximilian Attems <janitor@sternwelten.at> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This patch removes the default stubs for init_module and cleanup_module,
and checks for NULL instead. It changes modpost to only create references
to those functions if they actually exist.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:53:11 +0000 (17:53 -0700)]
[PATCH] knfsd: remove redundant initialization in nfsd4_lockt
No need to set fl_owner and fl_pid to 0, since that's already been done by
locks_init_lock.
Signed-off-by: Andy Adamson <andros@umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:53:00 +0000 (17:53 -0700)]
[PATCH] knfsd: nfsd4: store current->tgid instead of lockowner hash in fl_pid
The file_lock.fl_pid is no longer used in posix_same_owner() tests. So just
set it to current->tgid for informational purposes.
Signed-off-by: Andy Adamson <andros@umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:52:48 +0000 (17:52 -0700)]
[PATCH] knfsd: nfsd4: postpone release of stateowner on CLOSE
Postpone the release of a stateowner on CLOSE for lease time to enable the
CLOSE replay cache. Place stateowner on the close_lru list to be reaped by
the laundromat service.
Signed-off-by: Andy Adamson <andros@umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:52:37 +0000 (17:52 -0700)]
[PATCH] knfsd: nfsd4 could leak a stateid in an error path
nfsd4 could leak a stateid in a case of kmalloc failure; fix.
Signed-off-by: Andy Adamson <andros@umich.edu> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:52:26 +0000 (17:52 -0700)]
[PATCH] knfsd: trivial cleanup of nfs4state.c
Whitespace cleanup, fix one dprintk, remove superfluous casts of NULL.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:52:14 +0000 (17:52 -0700)]
[PATCH] knfsd: nfsd4: Support acl_support attribute
The nfs4 attributes supported_attrs and aclsupport should not be static; they
need to depend on the exported filesystem's acl support. Test the latter by
attempting to get an acl, and adjust the returned attributes apropriately.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Neil Brown [Wed, 8 Sep 2004 00:52:03 +0000 (17:52 -0700)]
[PATCH] knfsd: fix incorrect indentation in fh_verify
fix incorrect indentation in fh_verify
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu> Signed-off-by: Neil Brown <neilb@cse.unsw.edu.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] small wait_on_page_writeback_range() optimization
filemap_fdatawait() calls wait_on_page_writeback_range() with -1 as "end"
parameter. This is not needed since we know the EOF from the inode. Use
that instead.
Roland Dreier [Wed, 8 Sep 2004 00:51:05 +0000 (17:51 -0700)]
[PATCH] fs/compat.c: rwsem instead of BKL around ioctl32_hash_table
Currently the BKL is used to synchronize access to ioctl32_hash_table in
fs/compat.c. It seems that an rwsem would be more appropriate, since this
would allow multiple lookups to occur in parallel (and also serve the
general good of minimizing use of the BKL).
I added lock_kernel()/unlock_kernel() around the call to t->handler when a
compatibility handler is found in compat_sys_ioctl() to preserve the
expectation that the BKL will be held during driver ioctl operations. It
should be safe to do lock_kernel() while holding ioctl32_sem because of the
magic BKL sleep semantics.
Signed-off-by: Roland Dreier <roland@topspin.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] fix f_version optimization for get_tgid_list
The kernel contains an optimization that skips the linked list walk in
get_tgid_list for the common case of sequential accesses. Unfortunately
the optimization is buggy (missing NULL pointer check for the result of
find_task_by_pid) and broken (actually - broken twice: the tgid value that
is stored in f_version is always 0 because tgid is overwritten when the
string is created and additionally the common case is not filldir < 0, it's
running out of nr_tgids).
The attached patch fixes these bugs.
Roger Luethi <rl@hellgate.ch> ran a benchmark:
test: top -d 0 -b -n 10 > /dev/null
==> 2.6.8 <==
real 0m19.092s
user 0m5.013s
sys 0m12.622s
==> 2.6.8 + patch-tgid-bugfixes <==
real 0m10.062s
user 0m5.042s
sys 0m4.111s
Ram Pai [Wed, 8 Sep 2004 00:50:22 +0000 (17:50 -0700)]
[PATCH] filemap read() fix
Fix the do_generic_file_read()-reads-one-page-too-many-bug for the fifth
time.
This patch combines the best features from Nick's patch and also makes
index and end_index consistent. (i.e index 'n' covers n*PAGE_SIZE to
((n+1)PAGE_SIZE)-1. I did not feel comfortable with the way index and
end_index represented different ranges. It was like comparing apples with
oranges.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Wed, 8 Sep 2004 00:49:47 +0000 (17:49 -0700)]
[PATCH] make single-step into signal delivery stop in handler
On x86 and x86-64, setting up to run a signal handler clears the
single-step bit (TF) in the processor flags before starting the handler.
This makes sense when a process is handling its own SIGTRAPs.
But when TF is set because PTRACE_SINGLESTEP was used, and that call
specified a handled signal so the handler setup is happening, it doesn't
make so much sense. When the debugger stops to show you a signal about to
be delivered, and that signal should be handled, and then you do step or
stepi, you expect to see the signal handler code. In fact, the signal
handler runs to completion and then you see the single-step trap at the
resumed code instead of seeing the handler.
This patch changes signal handler setup so that when TF is set and the
thread is under ptrace control, it synthesizes a single-step trap after
setting up the PC and registers to start the handler. This makes that
PTRACE_SINGLESTEP not strictly a "step", since it actually runs no user
instructions at all. But it is definitely what a debugger user wants, so
that single-stepping always stops and shows each and every instruction
before it gets executed.
Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Wed, 8 Sep 2004 00:49:36 +0000 (17:49 -0700)]
[PATCH] i386 syscall tracing of bogus system calls
In 2.4, strace will show you all bogus system calls a process tries. In
2.6, it only shows you stubs < __NR_syscalls, and there is no tracing stop
for large bogus system call numbers. I can't see why this was changed, so
I am assuming it was accidental.
This patch restores the expected behavior that syscall tracing shows every
bogus syscall attempt.
Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Wed, 8 Sep 2004 00:49:24 +0000 (17:49 -0700)]
[PATCH] Remove RUSAGE_GROUP
After my cleanup of the rusage semantics was so quickly taken in by Andrew
and Linus without comment, I wonder if I should not have tried to be so
accommodating of potential objections as I was. :-)
In my original posting, I solicited comment on whether introducing
RUSAGE_GROUP as distinct from RUSAGE_SELF was warranted. Note that we've
now changed the behavior of the times system call when using CLONE_THREAD,
so changing getrusage RUSAGE_SELF to match would be consistent. I think
that changing the meaning of the old RUSAGE_SELF value is preferable to
introducing the new value for the proper POSIX getrusage behavior. This
patch against Linus's current tree dumps RUSAGE_GROUP and makes RUSAGE_SELF
have the fixed behavior.
If there is interest in having a new explicit interface to sample a single
thread's stats alone, then I think that would be better done by introducing
a new value for RUSAGE_THREAD. This is trivial to implement, but I won't
offer patches bloating the interface if noone is actually interested in
using it.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Wed, 8 Sep 2004 00:49:13 +0000 (17:49 -0700)]
[PATCH] ptrace userspace API preservation
This makes any ptrace operation that finds the target in TASK_STOPPED state
morph it into TASK_TRACED state before doing anything. This necessitates
reverting the last_siginfo accesses to check instead of assume last_siginfo
is set, since it's no longer impossible to be in TASK_TRACED without being
stopped in ptrace_stop (though there are no associated races to worry
about).
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Roland McGrath [Wed, 8 Sep 2004 00:48:58 +0000 (17:48 -0700)]
[PATCH] cleanup ptrace stops and remove notify_parent
This adds a new state TASK_TRACED that is used in place of TASK_STOPPED
when a thread stops because it is ptraced. Now ptrace operations are only
permitted when the target is in TASK_TRACED state, not in TASK_STOPPED.
This means that if a process is stopped normally by a job control signal
and then you PTRACE_ATTACH to it, you will have to send it a SIGCONT before
you can do any ptrace operations on it. (The SIGCONT will be reported to
ptrace and then you can discard it instead of passing it through when you
call PTRACE_CONT et al.)
If a traced child gets orphaned while in TASK_TRACED state, it morphs into
TASK_STOPPED state. This makes it again possible to resume or destroy the
process with SIGCONT or SIGKILL.
All non-signal tracing stops should now be done via ptrace_notify. I've
updated the syscall tracing code in several architectures to do this
instead of replicating the work by hand. I also fixed several that were
unnecessarily repeating some of the checks in ptrace_check_attach. Calling
ptrace_check_attach alone is sufficient, and the old checks repeated before
are now incorrect, not just superfluous.
I've closed a race in ptrace_check_attach. With this, we should have a
robust guarantee that when ptrace starts operating, the task will be in
TASK_TRACED state and won't come out of it. This is because the only way
to resume from TASK_TRACED is via ptrace operations, and only the one
parent thread attached as the tracer can do those.
This patch also cleans up the do_notify_parent and do_notify_parent_cldstop
code so that the dead and stopped cases are completely disjoint. The
notify_parent function is gone.
Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Since the irq handling rework in 2.5 lots of code in the individual
<asm/hardirq.h> files is the same. This patch moves that common code
to <linux/hardirq.h>. The following differences existed:
- alpha, m68k, m68knommu and v850 were missing the ~PREEMPT_ACTIVE
masking in the CONFIG_PREEMPT case of in_atomic(). These
architectures don't support CONFIG_PREEMPT else this would have been
an easily-spottbale bug
- S390 didn't provide synchronize_irq as it doesn't fit into their
I/O model. They now get a spurious prototype/macro
- ppc added a new preemptible() macro that is provided for all
architectures now.
Most drivers were using <linux/interrupt.h> as they should, but a few
drivers and lots of architecture code has been updated to use
<linux/hardirq.h> instead of <asm/hardirq.h>
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] Cleanup & fix lost ticks handling on x86-64
This cleans up the x86-64 lost tick handling and fixes some issues:
First it moves that code into an own function.
The newer could would become very noisy when the machine loses timer ticks
regularly. This happens often on some laptops etc. during the acpi ec
access (nothing much can be really done about it) This patch prints the
warnings only once.
It also fixes the logic on when to ask cpufreq for a new estimate.
And it implements timer fallback to HPET when there are really lots of lost
ticks. This is following i386. PIT fallback isn't implemented right now
though, but I hope we don't need this.
Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Gibson [Wed, 8 Sep 2004 00:48:18 +0000 (17:48 -0700)]
[PATCH] ppc64: handle SLB misses in realmode
Tested on pSeries and iSeries. Some future plans for VSID allocation may
mean we have to take this out again, but that's a while off yet, and in the
meantime it's a significant speedup.
This patch makes the PPC64 SLB miss handler run in real mode (i.e. MMU
off) for it's whole duration, on pSeries machines. Avoiding the rfid used
to turn relocation on saves some 70-80 cycles on Power4 and Power5. Not
having to save and restore SRR0 and SRR1 saves a few more, and means we
don't need an extra save slot for r3. Overall there's around a 27% speedup
on Power4.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
David Gibson [Wed, 8 Sep 2004 00:48:06 +0000 (17:48 -0700)]
[PATCH] ppc64: fix declaration order in asm-ppc64/tlb.h
In asm-ppc64/tlb.h, tlb_flush() is defined as inline after the #include of
asm-generic/tlb.h which uses it, defeating the inline directive. gcc-3.4
exposes this problem, causing a compile failure. This patch reorders the
file to fix the problem.
Signed-off-by: David Gibson <dwg@au1.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Wed, 8 Sep 2004 00:47:55 +0000 (17:47 -0700)]
[PATCH] ppc64: fix compat NUMA API on big endian 64bit
Switch the NUMA API to use compat_get_bitmap/compat_put_bitmap. In order
to use compat_alloc_userspace instead of set_fs tricks, we have to do a few
copies.
This is what we are currently using on ppc64 but are willing to entertain
the idea of going to a 32bit bitmap, especially considering how much hoops
we have to go through to get it right in this patch.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Wed, 8 Sep 2004 00:47:32 +0000 (17:47 -0700)]
[PATCH] ppc64: fix compat cpu affinity on big endian 64bit
Add compat sched affinity code. We can argue about how
USE_COMPAT_ULONG_CPUMASK works now that the non compat interface has
changed.
The old non compat behaviour was to require a bitmap long enough in both
setaffinity and getaffinity, now its only required in getaffinity. I could
do the same for the 32bit interfaces.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Wed, 8 Sep 2004 00:47:10 +0000 (17:47 -0700)]
[PATCH] ppc64: cut down paca footprint
The paca currently contains an iseries only structure which is quite large
(~1kB). The following patch removes this overhead on pseries and g5
kernels.
Since the paca is no longer required to be page aligned, remove it from the
page aligned section.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Wed, 8 Sep 2004 00:46:47 +0000 (17:46 -0700)]
[PATCH] ppc64: fix __rw_yield prototype
From: Nathan Lynch <nathanl@austin.ibm.com>
Hit this in latest bk:
include/asm/spinlock.h: In function `_raw_read_lock':
include/asm/spinlock.h:198: warning: passing arg 1 of `__rw_yield' from incompatible pointer type
include/asm/spinlock.h: In function `_raw_write_lock':
include/asm/spinlock.h:255: warning: passing arg 1 of `__rw_yield' from incompatible pointer type
This seems to have been broken by the out-of-line spinlocks patch.
You won't hit it unless you've enabled CONFIG_PPC_SPLPAR. Use the
rwlock_t for the argument type, and move the definition of rwlock_t up
next to that of spinlock_t.
Signed-off-by: Nathan Lynch <nathanl@austin.ibm.com> Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Anton Blanchard [Wed, 8 Sep 2004 00:46:36 +0000 (17:46 -0700)]
[PATCH] ppc64: fix hang on oprofile shutdown
We had a problem in our dummy perfmon handler where we wouldnt reset the
PMAO bit. If the bit ended up set and oprofile shutdown and removed its
handler then we would end up in a hard loop taking perfmon exceptions.
Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
[PATCH] Time interpolator: Scalability enhancements and high resolution time for IA64
This has been in the ia64 (and hence -mm) trees for a couple of months.
Changelog:
* Affects only architectures which define CONFIG_TIME_INTERPOLATION
(currently only IA64)
* Genericize time interpolation, make time interpolators easily usable
and provide instructions on how to use the interpolator for other
architectures.
* Provide nanosecond resolution for clock_gettime and an accuracy
up to the time interpolator time base.
* clock_getres() reports resolution of underlying time basis which
is typically <50ns and may be 1ns on some systems.
* Make time interpolator self-tuning to limit time jumps
and to make the interpolators work correctly on systems with
broken time base specifications.
* SMP scalability: Make clock_gettime and gettimeofday scale O(1)
by removing the cmpxchg for most clocks (tested for up to 512 CPUs)
* IA64: provide asm fastcall that doubles the performance
of gettimeofday and clock_gettime on SGI and other IA64 systems
(asm fastcalls scale O(1) together with the scalability fixes).
* IA64: provide nojitter kernel option so that IA64 systems with
correctly synchronized ITC counters may also enjoy the
scalability enhancements.
Performance measurements for single calls (ITC cycles):
A. 4 way Intel IA64 SMP system (kmart)
ITC offsets:
kmart:/usr/src/noship-tests # dmesg|grep synchr
CPU 1: synchronized ITC with CPU 0 (last diff 1 cycles, maxerr 417 cycles)
CPU 2: synchronized ITC with CPU 0 (last diff 2 cycles, maxerr 417 cycles)
CPU 3: synchronized ITC with CPU 0 (last diff 1 cycles, maxerr 417 cycles)
hid-core calls hiddev_disconnect() when the underlying device goes away
(hot unplug or system shutdown). Normally, hiddev_disconnect() will clean
up nicely and return to hid-core who then frees the hid structure.
However, if the corresponding hiddev node is open at disconnect time,
hiddev delays the majority of disconnect work until the device is closed
via hiddev_release(). hiddev_release() calls hiddev_cleanup() which
proceeds to dereference the hid struct which hid-core freed back when the
hardware was disconnected. Oops.
To solve this, we change hiddev_disconnect() to deregister the hiddev minor
and invalidate its table entry immediately and delay only the freeing of
the hiddev structure itself. We're protected against future operations on
the fd since the major fops check hiddev->exists.
Signed-off-by: Adam Kropelin <akropel1@rochester.rr.com> Signed-off-by: Vojtech Pavlik <vojtech@suse.cz> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Dave Airlie [Thu, 9 Sep 2004 05:21:27 +0000 (15:21 +1000)]
We dereference dev->priv a few lines above, meaning we'd
oops before we got to this sanity check. As it hasn't
triggered in any bug reports I've been able to find, I think
it's safe to nuke it.
Paul Jackson [Tue, 7 Sep 2004 14:36:57 +0000 (07:36 -0700)]
[PATCH] SN2 build fix CONFIG_VIRTUAL_MEM_MAP and CONFIG_DISCONTIGMEM
The change on 2004-09-03 by ianw@gelato.unsw.edu.au appears to have
a typo, which causes builds of configurations which define both
CONFIG_VIRTUAL_MEM_MAP and CONFIG_DISCONTIGMEM to emit some 890
warnings for redefines of each of pfn_valid, page_to_pfn,
pfn_to_page.
This shows up compiling sn2_defconfig, the SN2 config of arch ia64. I
believe that this is a simply typo, an extra "#else" line. Removing
this exta line enables sn2_defconfig to build as before.
Acked by Jesse Barnes <jbarnes@engr.sgi.com>
Signed-off-by: Paul Jackson <pj@sgi.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Rusty Russell [Tue, 7 Sep 2004 07:18:46 +0000 (00:18 -0700)]
[NETFILTER]: Fix build error with CONFIG_SYSCTL disabled.
ip_ct_log_invalid was added without testing that it compiles without
CONFIG_SYSCTL. Since sysctl is the only way of turning it on, there
should be no references to it if \!CONFIG_SYSCTL. Also, that turns off
CONFIG_PROC_FS, which elicits more warnings. Squish them too.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: David S. Miller <davem@davemloft.net>
compat_sys_setsockopt() is a little overzealous about converting 32-bit
stuff into 64-bit. It should match on level _and_ optname, not just
optname. Currently it eats the IPV6_V6ONLY sockopt because its value
(26) happens to match SO_ATTACH_FILTER.
This makes it at least check 'level' for everything but
IPT_SO_SET_REPLACE == IPT6_SO_SET_REPLACE, because that does seem to be
the same in different levels. But do_netfilter_replace() is another can
of worms entirely -- it doesn't actually work either, because some
netfilter modules (like ipt_limit) include kernel-only bits which change
size in the structure they share with userspace.
Signed-off-by: David S. Miller <davem@davemloft.net>
Fixes: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=131569
Dead lock in bridge when removing device interface module. br_del_if
assumes br->lock not held.
This fixes case of:
brctl addbr b0
brctl addif b0 eth0
rmmod eth0
Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: David S. Miller <davem@davemloft.net>
So here is a patch to make sure that there is a barrier between the
reading of dev->*_ptr and *dev->neigh_parms.
With these barriers in place, it's clear that *dev->neigh_parms can no
longer be NULL since once the parms are allocated, that pointer is never
reset to NULL again. Therefore I've also removed the parms check in
these paths.
They were bogus to begin with since if they ever triggered then we'll
have dead neigh entries stuck in the hash table.
Unfortunately I couldn't arrange for this to happen with DECnet due
to the dn_db->parms.up() call that's sandwiched between the assignment
of dev->dn_ptr and dn_db->neigh_parms. So I've kept the parms check
there but it will now fail instead of continuing. I've also added an
smp_wmb() there so that at least we won't be reading garbage from
dn_db->neigh_parms.
DECnet is also buggy since there is no locking at all in the destruction
path. It either needs locking or RCU like IPv4.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Dave Jones [Tue, 7 Sep 2004 06:24:36 +0000 (23:24 -0700)]
[PACKET]: Fix deref before NULL check in packet_release()
Using the automated source checker at coverity.com, they picked up
on some code in packet_release() where a NULL check was done
after dereferencing. Patch below.
Signed-off-by: Dave Jones <davej@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Nicolas Pitre [Tue, 7 Sep 2004 18:25:43 +0000 (19:25 +0100)]
[ARM PATCH] 2068/2: fix more gcc-3.4.1 warnings
Patch from Nicolas Pitre
This patch removes a bunch of inline functions from unistd.h on ARM. Some of
them were conflicting with gcc's idea of how they should normally be declared,
and none of them are used anymore.
Russell King [Tue, 7 Sep 2004 15:45:36 +0000 (16:45 +0100)]
[ARM] Add flush_cache_user_page() for sys_cacheflush()
Add flush_cache_user_page() to handle sys_cacheflush. Userspace
wants to use this call to ensure I/D cache coherency for runtime-
built code (eg, used by Java etc). This does not fit well with
the purpose of flush_cache_range(), so provide
flush_cache_user_range() instead.
Russell King [Tue, 7 Sep 2004 15:32:50 +0000 (16:32 +0100)]
[ARM] Fix copy/clear user page functions for VIPT aliasing caches.
This fixes the copy and clear user page functions for ARMv6 aliasing
caches. When we copy data into a page destined for user space, we
must make sure that there are no dirty cache lines associated with
the kernel space mapping of this page.
David S. Miller [Tue, 7 Sep 2004 04:03:16 +0000 (21:03 -0700)]
[TCP]: Make sure SKB tso factor is setup early enough.
It needs to be set so that congestion window
calculations have a valid value to work with.
This means that doing it at write queue running
time is too late.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Tue, 7 Sep 2004 02:20:50 +0000 (19:20 -0700)]
[TCP]: Make TSO play nice with congestion window.
Previously TSO would not abide by the congestion
window properly. Essentially, each TSO packet would
be trated just like 1 normal packet, even though a TSO
packet generates more than 1 normal packet. This
violates congestion window rules entirely.
So now we record the TSO factor, a count of how many
real packets a TSO packet will generate, and include
this in all the packet counting routines.
This initial version has a bug in that skb_entail() is
not the correct time to figure out the TSO factor for
the SKB, and tp->mss_tso_factor is not necessarily the
right value for a given SKB. Will fix this up next.
Signed-off-by: David S. Miller <davem@davemloft.net>