Chris Wright [Tue, 4 May 2004 11:48:34 +0000 (04:48 -0700)]
[PATCH] fix queues_count accounting in mqueue_delete_inode()
During mqueue_get_inode(), it's possible that kmalloc() of the
info->messages array will fail. This failure mode will cause the
queues_count to be (incorrectly) decremented twice. This patch uses
info->messages on mqueue_delete_inode() to determine whether the
mqueue was every truly created, and hence proper accounting is needed
on destruction.
Alex Williamson [Tue, 4 May 2004 17:18:13 +0000 (18:18 +0100)]
[SERIAL] 8250_hcdp needs irq sharing
Patch from Alex Williamson
Here's a trivial patch that makes 8250_hcdp setup the correct flags
when IRQ sharing is enabled for serial ports.
The HCDP table tells us if the device is a PCI UART. We can use this
to set the shared interrupt flag as well as program the interrupt with
the correct polarity/trigger (should get rid of "changing vector <x>
from IO-SAPIC-edge to IO-SAPIC-level" messages at bootup). This also
allows non-PCI UARTs to be left un-shareable, which is likely much
more safe (edge triggered).
The bit that I'm keying on is still part of the older 1.0a HCDP spec,
so should be implemented (it was on all the boxes I tested). If
there's firmware out there that doesn't set this bit or the interrupt
supported flag, the HCDP UART may run in polling mode, but should
still be functional.
Daniel Ritz [Tue, 4 May 2004 22:31:38 +0000 (23:31 +0100)]
[PCMCIA] add EnE specific initialization to fix HDSP
Patch from Daniel Ritz.
This patch clears an almost undocumented EnE specific test register
that makes sound on RME Hammerfall DSP Carbus work...should even work
after suspend.
Andrew Morton [Tue, 4 May 2004 11:10:36 +0000 (04:10 -0700)]
[PATCH] report size of printk buffer
From: <Andries.Brouwer@cwi.nl>
In the old days the printk log buffer had a constant size, and dmesg asked
for the 4096, later 8192, later 16384 bytes in there. These days the
printk log buffer has variable size, and it is not easy for dmesg to do the
right thing, especially when doing a "read and clear". The patch below
adds a syslog subfuntion that reports the buffer size.
Chris Wright [Tue, 4 May 2004 11:10:25 +0000 (04:10 -0700)]
[PATCH] fix memleak in sys_mq_timedsend
Move error handling to capture all three possible error conditions on
sending to a full queue. Without this fix any unprivileged user can
leak arbitrary amounts of kernel memory.
Paul Mackerras [Tue, 4 May 2004 00:57:39 +0000 (17:57 -0700)]
[PATCH] ppc32: Updated boot fix
This fixes booting on some PPC32 machines, notably CHRP and powermac
machines. This is a modified version of Tom Rini's patch that addresses
the concerns I had with it.
The problem was that the linker script was getting included in the list
of things that got put together to make some of the sorts of bootable
images that we produce. This removes ld.script in cases where it wasn't
appropriate and changes the rules in others so that although we have the
dependency on ld.script, it doesn't get included in the list of things
to link.
David Gibson [Tue, 4 May 2004 00:57:29 +0000 (17:57 -0700)]
[PATCH] ppc64: Use slbie, not slbia in hugepage code
On PPC64, when we prepare segments below 4G for use with hugepages, we
need to flush their entries from the SLB, in case SLB entries
specifying normal pages were already present.
Previously we did that by flushing the entire SLB, the patch below
changes this to individually flush each necessary segment with slbie.
The new version may well be slightly faster, but the real reason for
it is so that this code path doesn't need to be changed to reinstate
any bolted SLB entries, if we add them. The existing version has
already caused problems (read, crashes) when combined with some
patches that add bolted SLB entries.
Andrew Morton [Tue, 4 May 2004 00:57:17 +0000 (17:57 -0700)]
[PATCH] cancel_delayed_work() fix
cancel_delayed_work() forgets to clear the workqueue's pending flag. This
makes the workqueue appear to be permanently busy, so any subsequent attempts
to use it will fail.
[SPARC32]: Reduce fragmentation in the bitmap allocator
The existing allocator is first-fit with wraparound. This allows
a large number of small holes to accumulate in the early part of the
region, leading to heavy fragmentation. This adjusts the algorithm
to rescan the region when smaller sizes are requested, reducing
early fragmentation.
Linus Torvalds [Sun, 2 May 2004 06:04:40 +0000 (23:04 -0700)]
Make types of big integers in bitops.h explicit.
"sparse" warns about implicit type conversions that may cause
surprising results. Did you know that large decimal types have
different type conversions from large hexadecimals?
the following patch converts the error handling paths in VFAT fs to use
goto, making it more consistent with other filesystem code. Shrinks the
resulting binary by 144 bytes in my build.
Alexander Viro [Sat, 1 May 2004 12:53:15 +0000 (05:53 -0700)]
[PATCH] mcdx.c insanity removal
The mcdx.c author had pulled off something absolutely amazing - he had
declared several unsigned variables (ISA port numbers) as void *, using
explicit cast to unsigned in almost all places that used them.
Exception: printk. There he proudly used them as pointers - with %3p in
format. That cute trick allowed him to avoid using %03x, which
apparently scared him for some reason.
Switched to use of unsigned, killed casts, replaced %3p with %03x in
formats. BTW, the code had been that way since the initial merge back
in 1.3.7...
Paul Mackerras [Sat, 1 May 2004 12:10:20 +0000 (05:10 -0700)]
[PATCH] ppc64: fix incorrect signal handler argument
This fixes a bug in the ppc64 signal delivery code where the signal
number argument to a signal handler can get corrupted before the handler
is called. The specific scenario is that a process is in a blocking
system call when two signals get generated for it, both of which have
handlers.
The signal code will stack up two signal frames on the process stack
(assuming the mask for the first signal delivered doesn't block the
second signal) and return to userspace to run the handler for the second
signal. On return from that handler the first handler gets run with an
incorrect signal number argument because we end up with regs->result
still having a negative value (left over from when the system call was
interrupted) when it should be zero. This patch sets it to zero when we
set up the signal frame (in three places; for 64-bit processes, and for
32-bit processes for RT and non-RT signals).
The way we handle signal delivery and signal handler return using the
regs->result field in ppc64 is more complicated than it needs to be. In
ppc32 I have already simplified it and eliminated use of the
regs->result field. I am going to do the same in the ppc64 code, but I
think this patch should go in for now to fix the bug.
The patch also fixes a couple of places where we were unnecessarily and
incorrectly truncating the regs->result value to 32 bits
(sys32_sigreturn and sys32_rt_sigreturn return a long value, as all
syscalls do, and if regs->result is negative we need those syscalls to
return a negative value).
Thanks to Maneesh Soni for identifying the specific circumstances
under which this bug shows up.
Herbert Xu [Sat, 1 May 2004 10:39:13 +0000 (03:39 -0700)]
[IPV4/IPV6]: Fix listing of listening sockets.
There is a bug in listening_get_first() which used by /proc/net/tcp*
where it wasn't looping through all the sockets in each hash chain.
This problem doesn't show up unless the first socket in a chain doesn't
match the family that is being looked up.
The following patch fixes this by getting rid of listening_get_first()
altogether.
Denis Vlasenko [Sat, 1 May 2004 10:32:45 +0000 (03:32 -0700)]
[PATCH] add missing #include
There's a subtle problem with "inline" usage in <linux/string.h>:
<linux/string.h>:
this pulls in __constant_c_and_count_memset()
<linux/mm.h>:
this pulls <compiler.h>, re-defining
inline == __inline__ __attribute__((always_inline)).
But by now it is too late! The compiler has already seen the bare
"inline" in string.h, and hasn't inlined it.
Result:
# grep __constant System.map c0144670 t __constant_c_and_count_memset c0145c60 t __constant_c_and_count_memset
... many more copies of this function ...
On OSB4 the hwif->ultra_mask is set to not support UDMA.
Unfortunately in that case svwks_config_drive_xfer_rate()
falls through to the end of the function, instead of trying
other DMA modes.
Nicolas Pitre [Fri, 30 Apr 2004 21:51:18 +0000 (22:51 +0100)]
[ARM PATCH] 1839/1: fix lubbock_flash.c which used a bogus reg name
Patch from Nicolas Pitre
Before previous patch this driver compiled OK but was buggy.
Now it doesn't compile anymore as the bogus macro has been
deleted. Fix that in any case.
The same fix has been committed to the MTD CVS already, but please forward
this to Linus otherwise Lubbock won't compile from kernel.org tree anymore
(waiting for dwmw2 to update this might prove ... hrm ... long)
Nicolas Pitre [Fri, 30 Apr 2004 21:47:10 +0000 (22:47 +0100)]
[ARM PATCH] 1838/1: Lubbock leds and macro namespace cleanup
Patch from Nicolas Pitre
Too many macro with too generic names. Let's remove unneeded code and
redundant/unused macros. This also prevent namespace clash with upcoming
patches.
Andrew Morton [Fri, 30 Apr 2004 07:51:54 +0000 (00:51 -0700)]
[PATCH] task_struct alignment fix
The recent slab alignment changes broke an unknown number of architectures
(parisc and x86_64 for sure) by causing task_structs to be insufficiently
aligned.
We need good alignemnt because architectures do things like dumping FP state
into the task_struct with instructions which require particular alignment (I
think).
So change the default alignment to L1_CACHE_BYTES, which is what we used to
have, via SLAB_HW_CACHE_ALIGN.
Russell King [Fri, 30 Apr 2004 05:37:45 +0000 (22:37 -0700)]
[PATCH] Update MTD concatenating driver
This patch updates the MTD concatenating driver from MTD CVS, which
fixes issues found with this driver which concatenates multiple MTD
devices into one MTD device.
From David Woodhouse, through CVS:
revision 1.8
date: 2003/06/30 11:01:26; author: dwmw2; state: Exp; lines: +5 -5
I will not commit stuff whilst pissed
I will not commit stuff whilst pissed
Andrew Morton [Fri, 30 Apr 2004 00:42:38 +0000 (17:42 -0700)]
[PATCH] ppc64: shmget() translation bugfix
From: David Gibson <david@gibson.dropbear.id.au>
The 32->64 bit syscall translation layer on ppc64 incorrectly sign-
extends rather than zero-extending the second parameter to shmget(),
which should be a size_t. This means that it is impossible to shmget()
more 2GB or more from a 32-bit process.
Andrew Morton [Fri, 30 Apr 2004 00:42:14 +0000 (17:42 -0700)]
[PATCH] s390: oprofile Kconfig fixes
From: Arnd Bergmann <arnd@arndb.de>
Enable basic profiling code on s390 depending on CONFIG_PROFILING, not
CONFIG_OPROFILE.
CONFIG_PROFILING should enable the generic profiling code here, even if
CONFIG_OPROFILE is not set. Note that the identical code on i386 is always
compiled in, regardless of CONFIG_PROFILING and CONFIG_OPROFILE.
[PATCH] NFSv3: Fix SETATTR call after O_EXCL create
Ensure that when we send the SETATTR call after doing an O_EXCL create,
we always set the atime and ctime fields.
See RFC1813 for details on why the server is allowed to clobber these
two fields in order to cache a verifier that protects CREATE in case of
a timeout+resend from the client.
Andrew Morton [Thu, 29 Apr 2004 00:21:10 +0000 (17:21 -0700)]
[PATCH] writeback livelock fix
To avoid various livelocks, the writeback code parks all the dirty inodes onto
sb->s_io and then works through that list until it is empty. This assumes
that each inode will be moved to some other list as it is processed.
But there's a loophole: if the ->writepages() implementation does nothing at
all, the inode is not redirtied (which would move it to s_dirty). This causes
s_io to not empty and pdflush goes nuts.
So when this happens, move the inode onto s_dirty within
__sync_single_inode(). Use list_move_tail() to attempt to preserve the
time-ordering of the s_dirty list.