Make sure to kunmap() the right address in fs/nfs/dir.c.
Found by Rik van Riel:
"There's a serious bug in the handling of the pointer returned
by kmap_atomic() in nfs/dir.c. The pointer (part of desc) is
passed into find_dirent_name and from there into dir_decode,
which modifies the pointer.
That means you end up passing a wrong address to kunmap_atomic()."
Dave Jones [Thu, 10 Apr 2003 03:39:21 +0000 (04:39 +0100)]
[AGPGART] x86-64 Kconfig fixes.
Offering the K7 GARTs on 64bit kernels causes sillyness, like reports of
"unrecognised device, try unsupported". We don't want people to even try
that, so don't offer it in the first place.
There's really no good reason for offering any of the IA32 era GARTs on a
x86-64 64bit kernel. If Intel (or whoever) ever do an x86-64 clone, a new
gart driver will be started anyways, as has been done for amd-k8-agp.
Dave Jones [Thu, 10 Apr 2003 02:15:13 +0000 (03:15 +0100)]
[AGPGART] Remove CONFIG_AGP3.
This optioned saved just a handful of bytes, and uglied up the code
quite a lot. Saving less than a page of memory is not as important as
maintainable code.
Paul Mackerras [Wed, 9 Apr 2003 10:29:50 +0000 (03:29 -0700)]
[PATCH] i2c: Add driver for powermac keywest i2c interface
Here is a patch that adds an i2c bus driver for the i2c interface
found in the "KeyWest" and later combo-I/O chips used in powermacs.
The patch is against Linus' current BK tree.
[PATCH] USB speedtouch: don't open a connection if no firmware
How about this one instead. MOD_INC_USE_COUNT is placed before I call
any functions that can sleep. Let's just hope that the call to me doesn't
come after some sleeping in the higher layers...
Tag more user-supplied path strings as being user pointers for
type evaluation. This tags the system call interfaces in
fs/open.c, fs/dcache.c and mm/swapfile.c - and tags the path
walking helper functions.
Andrew Morton [Wed, 9 Apr 2003 04:32:01 +0000 (21:32 -0700)]
[PATCH] 3c59x EISA tidyup
From: Marc Zyngier <mzyngier@freesurf.fr>
The included patch helps 3c59x to display the correct identification
string (3c592 and 3c597 were displayed as 3c590). It also gets rid of
the EISA_bus reference, which is not needed anymore since the driver
has been ported to the EISA probing API.
Andrew Morton [Wed, 9 Apr 2003 04:31:36 +0000 (21:31 -0700)]
[PATCH] Make msync(MS_ASYNC) no longer start the I/O
MS_ASYNC will currently wait on previously-submitted I/O, then start new I/O
and not wait on it. This can cause undesirable blocking if msync is called
rapidly against the same memory.
So instead, change msync(MS_ASYNC) to not start any IO at all. Just flush
the pte dirty bits into the pageframe and leave it at that.
The IO _will_ happen within a kupdate period. And the application can use
fsync() or fadvise(FADV_DONTNEED) if it actually wants to schedule the IO
immediately.
(This has triggered an ext3 bug - the page's buffers get dirtied so fast
that kjournald keeps writing the buffers over and over for 10-20 seconds
before deciding to give up for some reason)
Andrew Morton [Wed, 9 Apr 2003 04:31:28 +0000 (21:31 -0700)]
[PATCH] Missing brelse() in ext2/ext3 extended attribute code
From: Andreas Gruenbacher <agruen@suse.de>
Missing brelse() in ext2/ext3 extended attribute code
The ext2 and ext3 EA implementations fail to release a buffer_head if
the inode that is being accessed is sharing EAs with another inode, and
an attribute is set to the same value that it has already, like so:
$ touch f g
$ setfattr -n user.test -v test f g
# (Now, both f and g refer to the same EA block.)
$ setfattr -n user.test -v test f
With the bug, an "invalidate: busy buffer" or "invalidate: dirty
buffer" message will be logged when the file system is unmounted. This
patch fixes the problem.
At the implementation level:
The code was assuming that ext3_xattr_cache_find cannot return the same
block the inode already is associated with, so testing for (old_bh !=
new_bh) would determine whether the old block is resued or an additional
bh is held. This is wrong if the EA block is used by multiple inodes (in
which case it stays in the cache), and the block isn't actually
modified. Instead of testing for (old_bh != new_bh), the code now does
a get_bh() in the branch that keeps the old block, which assures that
new_bh now is either NULL or a handle that must be released at the end
of ext3_xattr_set_handle2().
Andrew Morton [Wed, 9 Apr 2003 04:31:19 +0000 (21:31 -0700)]
[PATCH] epoll cross-thread deletion fix
From: Davide Libenzi <davidel@xmailserver.org>
This fixes a bug that might happen having a thread doing epoll_wait() with
another thread doing epoll_ctl(EPOLL_CTL_DEL) and close(). The fast check
inside eventpoll_release() is good to not effect performace of code not
using epoll, but it requires get_file() to be called ( that can be avoided
by dropping the fast check ). I opted to keep the fast check and to have
epoll to call get_file() before the event send loop. I tested it on UP and
2SMP with a bug-exploiting program provided by @pivia.com ( thx to them )
and it looks fine. I also update the 2.4.20 epoll patch with this fix :
Andrew Morton [Wed, 9 Apr 2003 04:31:10 +0000 (21:31 -0700)]
[PATCH] Allow panics and reboots at oops time.
From: Russell Miller <rmiller@duskglow.com>
A BUG or an oops will often leave a machine in a useless state. There is no
way to remotely recover the machine from that state.
The patch adds a /proc/sys/kernel/panic_on_oops sysctl which, when set, will
cause the x86 kernel to call panic() at the end of the oops handler. If the
user has also set /proc/sys/kernel/panic then a reboot will occur.
The implementation will try to sleep for a while before panicing so the oops
info has a chance of hitting the logs.
The implementation is designed so that other architectures can easily do this
in their oops handlers.
Andrew Morton [Wed, 9 Apr 2003 04:31:01 +0000 (21:31 -0700)]
[PATCH] task_vsize() speedup
From: William Lee Irwin III <wli@holomorphy.com>
task_vsize() mysteriously appeared on my profiles. This should remove it
from them by using the already in-use elsewhere for rlimit checks
mm->total_vm for the benefit of O(1) cachelines touched.
Andrew Morton [Wed, 9 Apr 2003 04:30:44 +0000 (21:30 -0700)]
[PATCH] fix unuse_pmd fixme
From: Hugh Dickins <hugh@veritas.com>
try_to_unuse drop mmlist_lock across unuse_process (with pretty dance
of atomic_incs and mmputs of various mmlist markers, and a polite new
cond_resched there), so unuse_process can pte_chain_alloc(GFP_KERNEL)
and pass that down and down and down and down to unuse_pte: which
cannot succeed more than once on a given mm (make that explicit by
returning back up once succeeded). Preliminary checks moved up from
unuse_pte to unuse_pmd, and done more efficiently (avoid that extra
pte_file test added recently), swapoff spends far too long in here.
Updated locking comments and references to try_to_swap_out.