Change how the read of forwarding table works. Instead of copying
entries to user one at a time, use an intermediate kernel buffer and
do up to a page at a chunk.
This gets rid of some awkward code dealing with entries getting deleted
during the copy. And allows same function to be used by later sysfs
hook.
Merge the ioctl stub calls that just end up calling the sub-function
to do the actual ioctl. Move br_get_XXX_ifindices into the ioctl file
as well where they can be static.
Relax the locking on add/delete interfaces to a bridge. Since these operations
are already called with RTNL semaphore, only need to hold the bridge lock while
doing operations related to STP and processing path. This is necessary for later
sysfs support where those operations might sleep.
Minor cleanup (lead in to later sysfs support).
Change new_nb to new_bridge_dev and return the net_device rather than
bridge because that is what the caller wants anyway.
[BRIDGE]: Handle delete of multiple devices with same address.
This fixes the issue discovered when removing bluetooth devices from a bridge.
Need to add special case code when forwarding table is being cleaned up to
handle the case where several devices share the same hardware address.
This driver was partially merged in 2.5.32 and never compiled in 2.5/2.6.
It was fixed in linux-mips CVS but has been broken again about 5 months ago.
Just remove it for now (it is in wrong directory anyway).
Adrian Bunk [Sat, 22 May 2004 03:52:32 +0000 (20:52 -0700)]
[PATCH] more comx removal
The patch below removes the MAINTAINERS entry for the removed comx
driver.
Additionally, the following comx header files could be removed:
drivers/net/wan/mixcom.h
drivers/net/wan/hscx.h
drivers/net/wan/munich32x.h
drivers/net/wan/falc-lh.h
I've double-checked that none of them are used by any other driver.
Andrew Morton [Sat, 22 May 2004 03:39:01 +0000 (20:39 -0700)]
[PATCH] swsusp: fix devfs breakage introduced in 2.6.6
From: Pavel Machek <pavel@ucw.cz>
This fixes bad interaction between devfs and swsusp.
Check whether the swap device is the specified resume device, irrespective of
whether they are specified by identical names.
(Thus, device inode aliasing is allowed. You can say /dev/hda4 instead of
/dev/ide/host0/bus0/target0/lun0/part4 [if using devfs] and they'll be
considered the same device. This is *necessary* for devfs, since the resume
code can only recognize the form /dev/hda4, but the suspend code would like
the long name [as shown in 'cat /proc/mounts'].)
Andrew Morton [Sat, 22 May 2004 03:38:40 +0000 (20:38 -0700)]
[PATCH] blk: clear completion stack pointer on return
From: Jens Axboe <axboe@suse.de>
It doesn't always look safe to let ->waiting remain set when returning from
functions that set it to point to stack area, since various locations check
for != NULL to see if it's valid. So clear it on return from
ide_do_drive_cmd() and blk_execute_rq().
Andrew Morton [Sat, 22 May 2004 03:38:29 +0000 (20:38 -0700)]
[PATCH] Sanitise handling of unneeded syscall stubs
From: David Mosberger <davidm@napali.hpl.hp.com>
Below is a patch that tries to sanitize the dropping of unneeded system-call
stubs in generic code. In some instances, it would be possible to move the
optional system-call stubs into a library routine which would avoid the need
for #ifdefs, but in many cases, doing so would require making several
functions global (and possibly exporting additional data-structures in
header-files). Furthermore, it would inhibit (automatic) inlining in the
cases in the cases where the stubs are needed. For these reasons, the patch
keeps the #ifdef-approach.
This has been tested on ia64 and there were no objections from the
arch-maintainers (and one positive response). The patch should be safe but
arch-maintainers may want to take a second look to see if some __ARCH_WANT_foo
macros should be removed for their architecture (I'm quite sure that's the
case, but I wanted to play it safe and only preserved the status-quo in that
regard).
Andrew Morton [Sat, 22 May 2004 03:37:52 +0000 (20:37 -0700)]
[PATCH] fbdev: mode switching fix.
From: James Simmons <jsimmons@infradead.org>
This fixes the bugs that where in mode switch via stty.
The problem was we couldn't set the mode just by using the x and y
resolution. We use modedb to fill in the rest. There also was a bug that
allowed you to change the console resolution for drivers with fixed
resolutions. This would mess up your display. Now that is fixed.
Andrew Morton [Sat, 22 May 2004 03:37:41 +0000 (20:37 -0700)]
[PATCH] fix sendfile on 64bit architectures
From: Andi Kleen <ak@suse.de>
sys_sendfile has a hardcoded 2GB limit. 64bit architectures should
probably always use sys_sendfile64() in their native system tables, because
for them sizeof(off_t) == sizeof(loff_t). This patch does this. It seemed
easier to just change the 64bit entry tables instead of fixing up all the
emulation layers to do 2GB checks on their own.
I changed all 64bit architectures except for parisc64, which seemed to
already have a sendfile64.
Tony Lindgren [Fri, 21 May 2004 23:59:48 +0000 (00:59 +0100)]
[ARM PATCH] 1887/1: Update OMAP low level debug functions again
Patch from Tony Lindgren
This patch makes the low level debug functions work when support is
compiled in for multiple OMAPs. The patch also removes now unnecessary
include, incorrect comment, and SERIAL_REG_SHIFT ifdefs.
Tony Lindgren [Fri, 21 May 2004 23:55:08 +0000 (00:55 +0100)]
[ARM PATCH] 1885/1: OMAP update 2/2: include files
Patch from Tony Lindgren
This patch syncs the mainline kernel with the linux-omap tree.
The highlights of the patch are:
- Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
- Cleaned up interrupt handler (Juha Yrjölä)
- DMA channel linking for 1610 (Samuel Ortiz)
- GPIO fixes (Juha Yrjölä)
- IRQ fix for OMAP-730 (Kevin Hilman)
- OMAP-1510 FPGA interrupt fix (Dirk Behme)
- OMAP-1610 voltage change settings (Todd Poynor)
- Uncompress kernel serial output fixes (Tony Lindgren)
Tony Lindgren [Fri, 21 May 2004 23:46:09 +0000 (00:46 +0100)]
[ARM PATCH] 1884/1: OMAP update 1/2: arch files
Patch from Tony Lindgren
This patch syncs the mainline kernel with the linux-omap tree.
The highlights of the patch are:
- Changed the BOOT_MEM() to use the new IO address (Tony Lindgren)
- Cleaned up interrupt handler (Juha Yrjölä)
- DMA channel linking for 1610 (Samuel Ortiz)
- GPIO fixes (Juha Yrjölä)
- IRQ fix for OMAP-730 (Kevin Hilman)
- OMAP-1510 FPGA interrupt fix (Dirk Behme)
- OMAP-1610 voltage change settings (Todd Poynor)
- Uncompress kernel serial output fixes (Tony Lindgren)
Nicolas Pitre [Fri, 21 May 2004 10:47:55 +0000 (11:47 +0100)]
[ARM PATCH] 1889/1: don't select CONFIG_IWMMXT just yet with Mainstone
Patch from Nicolas Pitre
Since the iWMMXt patch (#1866/1) requires more time to be reviewed,
this patch will allow merging Mainstone patches without breaking
anything if iWMMXt support isn't merged yet.
Should be applied after patch #1867/1.
Andrew Morton [Fri, 21 May 2004 07:46:17 +0000 (00:46 -0700)]
[PATCH] block device layer: separate backing_dev_info infrastructure
Sigh. ramdisk almost works, except it loses data on umount.
This is because the files which are atop the ramdisk do not contribute to
dirty memory accounting, but they do need writeback. So when sync() calls
sync_inodes_sb() to do the work, sync_inodes_sb() hopelessly underestimates
the number of pages which need writeback for a complete sync.
If you run `sync' enough times, everything eventually hits "disk" and all is
happy.
The root cause here is that the ramdisk and the files which it hosts shared
the same backing_dev_info. This is inappropriate because the hosted files
*do* want to writeback and really should contribute to dirty memory
accounting. But the ramdisk inode itself wants neither.
So. The patch sets up the infrastructure which permits a blockdev to provide
a separate backing_dev_info for the files which it hosts. It's a bit of a
ramdisk-special.
Linus Torvalds [Fri, 21 May 2004 07:29:23 +0000 (00:29 -0700)]
Add 'mode' argument to vfs_symlink.
Right now we ignore it, but we need to pass this down
to the low-level filesystems if we want to ever make
knfsd create symlinks with different permissions correctly.
Andrew Morton [Fri, 21 May 2004 06:23:55 +0000 (23:23 -0700)]
[PATCH] drop left-over #ifndef __ia64__
From: David Mosberger <davidm@napali.hpl.hp.com>
It used to be that loops_per_jiffy was a macro on ia64, hence it couldn't be
exported. That's no longer the case though, so there is no point in
inhibiting its export (not that it makes any _sense_ to export that value on
ia64).
Andrew Morton [Fri, 21 May 2004 06:23:44 +0000 (23:23 -0700)]
[PATCH] Fix i386/x86_64 cpuid/msr BUG() on impossible CPUs
From: Rusty Russell <rusty@rustcorp.com.au>
Matthieu Castet <castet.matthieu@free.fr> pointed out that testing
cpu_online(cpu) on a UP system goes BUG().
That's because you're never supposed to ask cpu_online() about a CPU which
is >= NR_CPUS. msr and cpuid devices use the minor to indicate the CPU
number. Oops.
Fix is to explicitly test cpu < NR_CPUS. Using cpu_online() is OK;
although the CPU might go down before you actually read the file, that will
simply cause junk to be returned.
Andrew Morton [Fri, 21 May 2004 06:22:29 +0000 (23:22 -0700)]
[PATCH] trivial: Make JFFS2 ready for Linux 2.7
From: Rusty Russell <rusty@rustcorp.com.au>
(OK from maintainer David Woodhouse <dwmw2@infradead.org>)
From: Sam Ravnborg <sam@ravnborg.org>
From: <l.s.r@web.de>
> since the code for Linux 2.4 compatibility in fs/jffs2 is gone, we can
> clean up the Makefile a bit. Following patch makes the Makefile
> compatible with Linux 2.7 instead . :) Please consider applying.
If we are going to clean up this I prefer we get rid of the
local variables.
See attached patch.
Pure cosmetic. Largest biovec slab is printed as biovec-BIO_MAX_PAGES in
/proc/slabinfo. It would be more informative to print actual number instead
of macro's name.
Andrew Morton [Fri, 21 May 2004 06:20:48 +0000 (23:20 -0700)]
[PATCH] Fix NFSD oops in readdir
From: Neil Brown <neilb@cse.unsw.edu.au>
If a single readdir entry needs to be split over two pages in the reply, we
first encode it into a new page, and then copy the bits into place. When
we do this relocation, we have to modify the "offset" pointer to be either
in the first or the second page, as appropriate.
If the pointer should be at the start of the second page, it is currently
put past the end of the first page.
Note that as the offset and whole response is known to be 4byte-aligned,
the offset pointer will never be split over two pages.
Andrew Morton [Fri, 21 May 2004 06:20:26 +0000 (23:20 -0700)]
[PATCH] getblk() BUG removal
We keep on getting BUG()s from isofs_read_super() because it passes an insane
blocksize to bread(). See http://bugme.osdl.org/show_bug.cgi?id=2735 for
example.
I don't know what's up with isofs, but going BUG in there seems a bit rude.
Change it to drop a bunch of diagnostics and a backtrace then return a null
bh*.
Most callers of getblk() don't expect it to fail, so they'll oops anyway. But
isofs does actually check for a NULL return. This way, the machine stays up
and we get better debug diagnostics.
Andrew Morton [Fri, 21 May 2004 06:20:14 +0000 (23:20 -0700)]
[PATCH] Debugging option to put data symbols in kallsyms
From: Rusty Russell <rusty@rustcorp.com.au>
kallsyms contains only function names, but some debuggers (eg. xmon on
PPC/PPC64) use it to lookup symbols: it'd be much nicer if it included data
symbols too.
Andrew Morton [Fri, 21 May 2004 06:19:40 +0000 (23:19 -0700)]
[PATCH] ramdisk: fix PageUptodate() handling
When a filesystem does getblk() to get a buffer_head against the ramdisk the
VFS will allocate a new not-uptodate pagecache page and will attach buffers to
it.
The filesystem will then bring certain buffer_heads uptodate. But not the
whole page.
Later, various ramdisk a_ops see the not-uptodate page and wipe the whole
thing out, including the parts to which the filesystem wrote!
Fix that up by only zapping those parts of the page which are covered by
non-uptodate buffers.
Andrew Morton [Fri, 21 May 2004 06:19:17 +0000 (23:19 -0700)]
[PATCH] ramdisk: lock blockdev pages during "IO".
There's a race: one CPU writes a 1k block into a ramdisk page which isn't in
the blockdev pagecache yet. It memsets the locked page to zeroes.
While this is happening, another CPU comes in and tries to write a different
1k block to the "disk". But it doesn't lock the page so it races with the
memset and can have its data scribbled over.
Fix this up by locking the page even if it already existed in pagecache.
Locking a pagecache page in a make_request_fn sounds deadlocky but it is not,
because:
a) ramdisk_writepage() does nothing but a set_bit(), and cannot recur onto
the same page.
b) Any higher-level code which holds a page lock is supposed to be
allocating its memory with GFP_NOFS, and in 2.6 kernels that's equivalent
to GFP_NOIO.
(The distinction between GFP_NOIO and GFP_NOFS basically disappeared
with the buffer_head LRU, although it was reused for writes to swap).
Andrew Morton [Fri, 21 May 2004 06:18:44 +0000 (23:18 -0700)]
[PATCH] ppc64: make enter_rtas() take unsigned long arg
From: Paul Mackerras <paulus@samba.org>
We declare enter_rtas with a struct rtas_args * argument, though it is
supposed to be a physical address, and then every time we call it we cast the
unsigned long result from __pa() to a void *. This patch changes the
declaration of enter_rtas to make it take an unsigned long argument, and
removes the cast from all the callers. The actual enter_rtas() routine is in
assembler and doesn't need to be changed.
Andrew Morton [Fri, 21 May 2004 06:18:21 +0000 (23:18 -0700)]
[PATCH] ppc64: update xmon debugger
From: Paul Mackerras <paulus@samba.org>
This patch fixes a whole pile of problems in the xmon kernel debugger for
ppc64. This basically makes xmon SMP-safe. Now, when we enter xmon it
sends an IPI to the other CPUs to get them into xmon too. It also changes
the way we do single-stepping and breakpoints so that we don't have to
remove a breakpoint to proceed from it (instead we either emulate the
instruction where the breakpoint was, or execute it out of place). With
this patch, if we get an exception inside xmon, it will just return to the
xmon command loop instead of hanging the system as at present.
The patch is quite large because it updates the disassembler to the latest
version from binutils (trimmed a bit), which is why I didn't cc lkml.
Andrew Morton [Fri, 21 May 2004 06:18:10 +0000 (23:18 -0700)]
[PATCH] ppc64: fix inline version of _raw_spin_trylock
From: Paul Mackerras <paulus@samba.org>
When I added the out-of-line spinlocks on PPC64, I inadvertently introduced
a bug in the inline version of _raw_spin_trylock, where it returns the
opposite of what it should return. The patch below fixes it.
Andrew Morton [Fri, 21 May 2004 06:17:59 +0000 (23:17 -0700)]
[PATCH] ppc64: Fix readq & writeq
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This fixes busted asm constraints for readq & writeq implementation on
ppc64 that resulted in garbage beeing generated for writeq (plus an obvious
mistake in the prototype).
Andrew Morton [Fri, 21 May 2004 06:17:47 +0000 (23:17 -0700)]
[PATCH] fix for stuck cpus at boot]
From: Anton Blanchard <anton@samba.org>
From: Rusty Russell <rusty@rustcorp.com.au>
When hotplug cpu isn't enabled, cpu_is_offline is always false. I had a stuck
cpu at boot that resulted in a lockup because we tried to start a migration
thread on it. Instead of cpu_is_offline we can use !cpu_online which should
cover both the hotplug cpu enabled and disabled cases.