Jens Axboe [Thu, 7 Aug 2003 02:58:43 +0000 (19:58 -0700)]
[PATCH] scsi_ioctl reference counting
Now that we properly track queue references, that showed a bug in
scsi_ioctl.c, where it was dropping queues that it had never properly
gotten in the first place.
Jens Axboe [Wed, 6 Aug 2003 17:35:12 +0000 (10:35 -0700)]
[PATCH] Proper block queue reference counting
To be able to properly be able to keep references to block queues,
we make blk_init_queue() return the queue that it initialized, and
let it be independently allocated and then cleaned up on the last
reference.
I have grepped high and low, and there really shouldn't be any broken
uses of blk_init_queue() in the kernel drivers left. The added bonus
being blk_init_queue() error checking is explicit now, most of the
drivers were broken in this regard (even IDE/SCSI).
No drivers have embedded request queue structures. Drivers that don't
use blk_init_queue() but blk_queue_make_request(), should allocate the
queue with blk_alloc_queue(gfp_mask). I've converted all of them to do
that, too. They can call blk_cleanup_queue() now too, using the define
blk_put_queue() is probably cleaner though.
Andrew Morton [Wed, 6 Aug 2003 15:57:31 +0000 (08:57 -0700)]
[PATCH] remove PF_READAHEAD
The problem with PF_READAHEAD is that if someone does a non-GFP_ATOMIC memory
allocation we can enter page reclaim and then call writepage, while
PF_READAHEAD is set. The block layer then drops writes or the wrong reads on
the floor. It can cause data loss.
A fix is complex (well, intrusive). Given that the readahead code is now
skipping the entire readahead attempt if the queue is congested, the setting
of PF_READAHEAD probably is not doing anything useful anyway, so simply
remove it.
Dave Jones [Wed, 6 Aug 2003 15:57:23 +0000 (08:57 -0700)]
[PATCH] Athlon Machine Check fix
There seemed to be increase in Athlon users reporting MCEs in 2.6 that
they never saw in 2.4 and I didn't buy the "2.6 pushes hardware harder"
for a second given folks are running 2.4+preempt+O(1) etc patchkits
without problems.
So I did a mini-audit of the mcheck code.
How embarressing. Another fix that went into 2.4 that never made
it forward. Once I'm done with various Red Hat administrivia
I'll see if I can devote some time to going through the changesets
mailing list. I wonder just how many other really stupid bugs
like this got fixed and not brought forward.
Russell King [Thu, 7 Aug 2003 01:14:38 +0000 (02:14 +0100)]
[PCMCIA] Report subsystem vendor/device IDs
In order to properly track down who needs to program the IRQ MUX
register, add the subsystem vendor and device IDs to the kernel
message indicating discovery of the cardbus bridge.
Russell King [Thu, 7 Aug 2003 01:00:41 +0000 (02:00 +0100)]
[PCMCIA] Disable IRQ steering and don't change the IRQ MUX register.
The IRQ steering code operates too early at present, and actually
prevents us detecting ISA interrupts.
We should not touch the IRQ MUX register on TI bridges - only the
machine itself knows the right value for this. The kernel doesn't
have the knowledge to know what function the cardbus controllers
multi-function pins have been assigned by the hardware manufacturer.
Russell King [Thu, 7 Aug 2003 00:53:14 +0000 (01:53 +0100)]
[PCMCIA] Fix cardbus init failure paths.
Currently, yenta does not try to clean up after an error occurs while
initialising a cardbus socket. This cset ensures that we release
resources. We also claim the cardbus MMIO memory resource.
Convert X.25 async driver to have dynamic net_device's.
This driver is a lot like SLIP so the code changes were similar.
- Added similar locking to SLIP
- replaced code that snooped for MTU changes with the
net_device change mtu callback.
- cleaned up the statistics by using the net_device_stats structure.
Patch is against 2.6.0-test2.
Not sure if anyone ever uses this. I tested by bringing up an x.25 async
line using a modified version of slattach.
The conversion from cli/sti to locking in X.25 must not have been tested
on a real SMP with memory debugging enabled. It OOPS right away if
I do:
modprobe x25; ifconfig -a
The problem is that it dereferences the socket after it has already been
freed. The fix for this is to make the call to sock_put, later in
x25_destroy_socket do the free. Also, need a go to avoid references
in x25_release.
This patch is against 2.6.0-test2. The problem is that the ax25_destroy_socket
function frees the socket buffer, but then ax25_release dereferences this causing
an OOPS. To reproduce:
modprobe ax25; ifconfig -a
Replaced sk_free with sock_put which will free if this is the last reference.
The existing ROSE /proc interface has no module owner, and doesn't check for
bounds overflow. Easier to just convert it to the seq_file wrapper functions.
This patch is against 2.6.0-test2 (offsets assume earlier patch).
[NET] Dynamically allocate net_device structures for ROSE
This patch changes the ROSE protocol to allocate an array of pointers and each network device
separately. This sets up later change where network_device object's are released on last use
which may be after the module is unloaded.
The patch is against 2.6.0-test2 (though this code hasn't changed in a long time).
Allocation is done via alloc_netdev so the dev->priv area is already reserved and
doesn't need to be allocated separately.
Neil Brown [Tue, 5 Aug 2003 16:52:41 +0000 (09:52 -0700)]
[PATCH] Fix the sunrpc cache/reader management properly.
A recent patch changed the rpc/*/channel files to behave
differently depending on whether they were open for read or not.
This hadn't been tested thoroughly. The cache_reader structure
that was now only allocated when opening for read, had a field that
was iused when writing.
This patch removes that field and takes a different approach to solving
the issue it addressed.
Roland McGrath [Tue, 5 Aug 2003 15:30:45 +0000 (08:30 -0700)]
[PATCH] spurious SIGCHLD from dying thread group leader
A dying initial thread (thread group leader) sends SIGCHLD when it exits,
but it ought to wait until all other threads exit as well. The cases of
secondary threads exitting first were handled properly, but not this one.
This exit.c patch fixes that test case, and I think catches the other
potential bugs of this kind as well. The signal.c change adds some bug
catchers, the second of which will trip on the test case in the absence
of the exit.c fix.
Adam Belay [Tue, 5 Aug 2003 21:21:39 +0000 (21:21 +0000)]
[PNP] Remove device naming based on id
This patch removes the pnp name database code. Most buses, including
pnp, will be using userspace to name devices in the near future. Also
dev->name will be removed from the driver model soon.
Adam Belay [Tue, 5 Aug 2003 20:34:05 +0000 (20:34 +0000)]
[PNPBIOS] Move low level code into a separate file
This patch moves the low level bios calls to a separate file,
"bioscalls.c". It is a cleanup that will improve organization of the
pnpbios driver code.
Adam Belay [Tue, 5 Aug 2003 20:15:00 +0000 (20:15 +0000)]
[PNPBIOS] Move Parsing Functions to the PnPBIOS driver
This patch moves the resource parsing functions from support.c to the
pnpbios driver. Originally these functions were intended for other
pnp protocols but in reality they are only used by the PnPBIOS driver.
This patch greatly cleans up the code in both the parsing functions
and their connection with the pnpbios driver. Also note that
pnpbios.h has been added for local pnpbios functions.
Russell King [Tue, 5 Aug 2003 22:22:57 +0000 (23:22 +0100)]
[ARM] Fix two Acorn SCSI drivers
ARXESCSI does not have the interrupt routed to the host
machine, so we need to babysit the host interface. We
do this via a variant of the normal command function in
fas216.c
Fix a bug in the procfs file handling in the EESOX SCSI
driver.
Neil Brown [Tue, 5 Aug 2003 06:21:13 +0000 (23:21 -0700)]
[PATCH] nfsv4 page boundary handling fixes.
From: Galen Michael Elias <gme@citi.umich.edu>
This patch fixes two places where the handling of page boundaries was
incorrect and caused to IO_ERR's when it shouldn't have.
1. In decode_write it was just a small typo.
2. In decode_compound we avoid using READ_BUF, but don't provide all of
it's functionality, specifically crosses a page boundary.
Neil Brown [Tue, 5 Aug 2003 06:20:40 +0000 (23:20 -0700)]
[PATCH] Create a mountpoint for the nfsd filesystem.
Though the nfsd module can create this, having it always
there makes auto-loading-on-mount work better.
Note: it was previously recommended that the nfsd filesystem be mounted
on /proc/fs/nfs, which I was never comfortable with.
Henceforth the recommended location will be /proc/fs/nfsd.
nfs-utils 1.0.6 and later will support both.
Neil Brown [Tue, 5 Aug 2003 06:19:58 +0000 (23:19 -0700)]
[PATCH] Protect against NFS requests to create symlinks bigger than one page
Such a request would cause the nul terminator to be written
to some other page, and cause havoc.
Also rearrange two tests to avoid the possibility of testing the byte
just past the end of a buffer - doing so can causes an oops with appropriate
kernel-debug config options
Neil Brown [Tue, 5 Aug 2003 06:19:41 +0000 (23:19 -0700)]
[PATCH] Remove some unused export flags and reserve a new one.
The 'acl' folks would like an export flag, so this patch
reserves one and also discards some that aren't used and never
will be (for the named purpose).
Neil Brown [Tue, 5 Aug 2003 06:19:29 +0000 (23:19 -0700)]
[PATCH] Change NFSEXP_CROSSMNT to NFSEXP_CROSSMOUNT
NFSEXP_CROSSMNT used to mean something different, so
using a different name reduces the chance of confusion.
Also there is currently a surplus of vowels, so there is
no need to be frugal
Neil Brown [Tue, 5 Aug 2003 06:19:20 +0000 (23:19 -0700)]
[PATCH] Make sure sunrpc/cache doesn't confuse writers with readers.
When a sunrpc/cache channel is not open for reading, the
cache doesn't bother making and waiting for up-calls.
However it doesn't currently distingish between open-for-read/write
and open-for-write, so an op-for-write will look like a reader
and will cause inappropriate waiting.
This patch checks if a file is open-for-read and will only register
a file as a reader if it really is one.
Linus Torvalds [Tue, 5 Aug 2003 03:13:37 +0000 (20:13 -0700)]
Make "static const" initializer to zero explicit, since truly
constant values should not end up in the BSS.
We're better off having the compiler put it in the .rodata
section (which it will, thanks to the initializer and the
"const"), since that will result in it being nicely cacheable
in shared SMP caches.
use module_param, removed __setup code,
general cleanup (mostly of comments and trailing spaces, also removed include of config.h),
made the watchdog's timeout a module_param.
Chas Williams [Mon, 4 Aug 2003 10:49:39 +0000 (03:49 -0700)]
[ATM]: Minor LANAI fixes from mitch@sfgoth.com.
1. pci_device_id structures shouldn't be __devinitdata. Greg removed
all of the instances of this in the 2.6.0-test1 tree, but unforunately
my recent coversion of lanai.c introduced another one.
2. The lanai PCI id constants have now been merged into the kernel headers
so we don't need to define our own copies.
3. The ioctl's exported by lanai shouldn't be - they were intended for
debugging only, never for release. For now they're just '#if 0'ed out.
They're somewhat dangerous since they don't check any capabilities so
any user could DoS the interface.
Patrick Mochel [Mon, 4 Aug 2003 10:35:30 +0000 (03:35 -0700)]
[power] Divorce suspend console code from swsusp.
- Create kernel/power/console.c
- Rename prepare_suspend_console() to pm_prepare_console() and
restore_console() to pm_restore_console().
- Add prototypes to include/linux/suspend.h.
- Make kernel/power/console.o dependent only on CONFIG_PM
- Simplify logic for SUSPEND_CONSOLE define
- Make software_resume() prepare console much earlier, so we can localize
the loglevel variables in console.c.
- Remove #ifdef CONFIG_VT from console.c, and just check for SUSPEND_CONSOLE.
(Perhaps we should make entire file dependent on CONFIG_VT_CONSOLE?)
- Add kernel/power/power.h to share things across local files.
Patrick Mochel [Mon, 4 Aug 2003 10:14:08 +0000 (03:14 -0700)]
[power] Minor swsusp cleanups.
- Call blk_run_queues() from do_software_suspend() directly, instead of
wrapping it in helper function.
- Get rid of ominous compiler warning.
- Change BUG_ON(in_interrupt()) to might_sleep() in software_suspend(), so
we still get back trace, but don't actually BUG().
Russell King [Tue, 5 Aug 2003 00:15:49 +0000 (01:15 +0100)]
[ARM] Fix do_settimeofday()
ARM seems to have missed an update for the time keeping code; this
cset fixes a problem where the altering the system time changes the
reported uptime.
[SCTP] Fix to avoid large kmalloc failures on 64-bit platforms.
When spinlock debugging is enabled, the size of assoc hash table and
port hash table for a fixed value of 4096 entries exceeds the size
of the largest possible kmalloc() on 64-bit platforms. This problem is
avoided by using page allocations similar to the methodology followed
for tcp hash table allocations.