George Anzinger [Fri, 11 Apr 2003 14:09:44 +0000 (07:09 -0700)]
[PATCH] too much timer simplification...
Noted by David Mosberger:
"If someone happens to arm a periodic timer at exactly 256 jiffies (as
ohci happens to do on platforms with HZ=1024), then you end up getting
an endless loop of timer activations, causing a machine hang.
The problem is that __run_timers updates base->timer_jiffies _before_
running the callback routines. If a callback re-arms the timer at
exactly 256 jiffies, add_timers() will reinsert the timer into the list
that we're currently processing, which of course will cause the timer to
expire immediately again, etc., etc., ad naseum... "
The answer here is to move the whole expired list to a local header and
to not look back.
Ben Collins [Fri, 11 Apr 2003 11:38:49 +0000 (04:38 -0700)]
[PATCH] IEEE-1394/Firewire updates
- Convert nodemgr to new driver model.
- Convert to new module_param() calls.
- Merged fixes for devfs mkdir and some sleep-in-atomic fixes from
mainline 2.5-bk
- Fix possible memory corruption on highlevel local read/write.
- Fix bitmap usage for some bitops.
- Fix bug in closing ISO stream.
- Fixes for nodemgr probing in the event of a reset storm.
- Workaround for nForce2 firewire chipset. This is preliminary.
- Conversion of SBP-2 to use new driver model in nodemgr, including
providing a driver for firewire unit directories and registering
proper callbacks.
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().