Russell King [Sun, 22 Jun 2003 03:47:06 +0000 (20:47 -0700)]
[PATCH] Update Acorn partition parsing
This patch:
- re-enables cumana partition parsing
- adds eesox partition parsing
- makes the powertec partition parsing fail if sector 0 looks like
a PC bios partition table
Rather than having a single "acorn_partition" parser for all these
types, we list them explicitly in check.c instead, along with some
explaination about why they're where they are.
Linus Torvalds [Sat, 21 Jun 2003 05:02:14 +0000 (22:02 -0700)]
Don't register SCSI devices until they are actually fully set up.
Also, default to the 10-byte version of mode sense, since a lot
of modern SCSI-like devices don't even support the old version
(we will automatically downgrade to the 6-byte version if the long
version isn't supported).
Rusty Russell [Sat, 21 Jun 2003 03:23:22 +0000 (20:23 -0700)]
[PATCH] More care in sys_setaffinity
We currently mask off offline CPUs in both set_cpus_allowed and
sys_sched_setaffinity. This is firstly redundant, and secondly
erroneous when more CPUs come online (eg. setting affinity to all 1s
should mean all CPUs, including future ones).
We mask with cpu_online_map() in sys_sched_getaffinity *anyway* (which
is another issue, since this is not valid with changing of online
cpus either), so userspace won't see any difference.
This patch makes set_cpus_allowed() return -errno, and check that in
sys_sched_setaffinity.
Rusty Russell [Sat, 21 Jun 2003 03:23:11 +0000 (20:23 -0700)]
[PATCH] any_online_cpus to return NR_CPUS to mean "none".
Matt Fleming points out that returning int from any_online_cpu
where cpu numbers are passed as unsigned ints elsewhere is awkward
and a little dangerous.
Make any_online_cpu() match find_first_bit(), by returning NR_CPUS
when no cpu is found, rather than -1. This also simplifies the
future case where NR_CPUS > BITS_PER_LONG.
Andi Kleen [Sat, 21 Jun 2003 03:18:55 +0000 (20:18 -0700)]
[PATCH] Remove spinlock workaround for pre 2.95 gccs
Remove the empty initializer workaround that was added for egcs 1.1.
Only 2.95+ is supported now, so all compilers should support empty
structures.
The if just checked for __GNUC__, which means that 2.95 got
the workaround (and the incompatibility) too even though it didn't need it.
Advantage is that gcc 2.95 and 3.x compiled kernels are now potentially
binary compatible. Module loading still checks the compiler version,
but it might be removable.
Vojtech Pavlik [Fri, 20 Jun 2003 21:49:07 +0000 (14:49 -0700)]
input: make GC_PSX_DELAY lower (25 usec instead of 60), to burn less
CPU time while reading PSX pads, and make it a module parameter also,
for devices which would need the huge value of 60.
Vojtech Pavlik [Fri, 20 Jun 2003 21:48:10 +0000 (14:48 -0700)]
input: Fixes for sidewinder.c: Workaround for
misbehaving 3DPro joysticks, don't trust FreestylePro
1-bit data packet for data width recognition, invert
FreestylePro buttons.
Vojtech Pavlik [Fri, 20 Jun 2003 21:41:52 +0000 (14:41 -0700)]
input: Add Logitech MX PS2++ support, move Logitech PS2++ code to a
separate source file, always enable Synaptics support. Some more
fixes in Synaptics code and documentation.
Andrew Morton [Fri, 20 Jun 2003 15:16:03 +0000 (08:16 -0700)]
[PATCH] JBD: honour read-only mounts more carefully
From: "Stephen C. Tweedie" <sct@redhat.com>
ext3 has long had a problem wherein it will unnecessarily write to a
read-only filesystem during the mount process. It does this in preparing the
journal superblock's sequence numbers.
But if the filesystem was shut down cleanly we do not need to do this.
Detect the situation and avoid modifying and writing out the journal
superblock.
Andrew Morton [Fri, 20 Jun 2003 15:15:31 +0000 (08:15 -0700)]
[PATCH] Fix binfmt_elf.c bug on ppc64
From: Jakub Jelinek <jakub@redhat.com>
Any prelinked shared library is impossible to run on ppc64 without this
patch, as they immediately segfault. Say:
/bin/echo
works even if /lib64/ld64.so.1 is prelinked while
/lib64/ld64.so.1 /bin/echo
segfaults.
The problem is that ELF_PLAT_INIT is passed the virtual address of the
shared library, not the difference between the virtual address of the
shared library and p_vaddr of the first PT_LOAD segment in that library
(while for the interpreter interp_load_address is the bias).
ELF_PLAT_INIT sets gpr[2] to this absolute address, but
arch/ppc64/kernel/process.c (start_thread) assumes it is a bias and adds it
to entry and toc values loaded from the entry point descriptor.
For non-prelinked shared libraries, first PT_LOAD segment's p_vaddr is
typically 0 and thus load_addr == load_bias (which is why this bug has not
been discovered that long).
Andrew Morton [Fri, 20 Jun 2003 15:15:08 +0000 (08:15 -0700)]
[PATCH] Fix kmod return value
From: Rusty Russell <rusty@rustcorp.com.au>
Milton Miller <miltonm@bga.com> and Junfeng Yang <yjf@stanford.edu> point
out that we hand a kernel address to sys_wait4 for the status pointer.
This is true, but since we don't have a SIGCHLD handler, it never gets that
far. Use NULL, and document the fact.
Andrew Morton [Fri, 20 Jun 2003 15:14:49 +0000 (08:14 -0700)]
[PATCH] dirty inode writeback fix
Both sys_sync() and the kupdate function need to precalculate the number of
pages which they are prepared to write. Mainly for livelock avoidance.
But they also must write inodes, and dirty inodes do not contribute to dirty
page accounting (oops). Net effect: when there are lots of dirty inodes and
few dirty pages, we forget to write inodes.
This mainly affects atime updates, because most other inode-dirtying activity
will generate dirty pages too.
It mainly affects ext2.
Now, writing an ext2 inode will just dirty the underlying blockdev pagecache
page. So what the patch does is to assume that writing one inode will dirty
up to one pagecache page. So the patch adds (inodes_stat.nr_inodes -
inodes_stat.nr_unused) into the number of pages to be written.
I considered creating inodes_stat.nr_dirty. It looks fairly messy, needing
to know not to account for memory-backed inodes, etc. But it is probably a
better thing to do.
Andrew Morton [Fri, 20 Jun 2003 15:14:11 +0000 (08:14 -0700)]
[PATCH] hugetlbfs: specify size & inodes at mount
From: "Seth, Rohit" <rohit.seth@intel.com>
- Add support for setting the filesystem's maximum size and maximum inode
count on the mount command line.
This is needed because the system admin can now set the ownership of teh
fs to non-root users. We don't want those users to be able to use all of
the hugepage pool.
- Prroperly update the inode creation/modification time.
- Set the blocksize to HPAGE_SIZE (instead of PAGE_CACHE_SIZE).
Andrew Morton [Fri, 20 Jun 2003 15:13:53 +0000 (08:13 -0700)]
[PATCH] sysv semundo fixes
From: Manfred Spraul <manfred@colorfullife.com>
The CLONE_SYSVSEM implementation is racy: it does an (atomic_read(->refcnt)
==1) instead of atomic_dec_and_test calls in the exit handling. The patch
fixes that.
Additionally, the patch contains the following changes:
- lock_undo() locks the list of undo structures. The lock is held
throughout the semop() syscall, but that's unnecessary - we can drop it
immediately after the lookup.
- undo structures are only allocated when necessary. The need for undo
structures is only noticed in the middle of the semop operation, while
holding the semaphore array spinlock. The result is a convoluted
unlock&revalidate implementation. I've reordered the code, and now the
undo allocation can happen before acquiring the semaphore array spinlock.
As a bonus, less code runs under the semaphore array spinlock.
- sysvsem.sleep_list looks like code to handle oopses: if an oops kills a
thread that sleeps in sys_timedsemop(), then sem_exit tries to recover.
I've removed that - too fragile.
Andrew Morton [Fri, 20 Jun 2003 15:13:46 +0000 (08:13 -0700)]
[PATCH] show_stack() portability and cleanup patch
From: David Mosberger <davidm@napali.hpl.hp.com>
This is an attempt at sanitizing the interface for stack trace dumping
somewhat. It's basically the last thing which prevents 2.5.x from working
out-of-the-box for ia64. ia64 apparently cannot reasonably implement the
show_stack interface declared in sched.h.
Here is the rationale: modern calling conventions don't maintain a frame
pointer and it's not possible to get a reliable stack trace with only a stack
pointer as the starting point. You really need more machine state to start
with. For a while, I thought the solution is to pass a task pointer to
show_stack(), but it turns out that this would negatively impact x86 because
it's sometimes useful to show only portions of a stack trace (e.g., starting
from the point at which a trap occurred). Thus, this patch _adds_ the task
pointer instead:
extern void show_stack(struct task_struct *tsk, unsigned long *sp);
The idea here is that show_stack(tsk, sp) will show the backtrace of task
"tsk", starting from the stack frame that "sp" is pointing to. If tsk is
NULL, the trace will be for the current task. If "sp" is NULL, all stack
frames of the task are shown. If both are NULL, you'll get the full trace of
the current task.
I _think_ this should make everyone happy.
The patch also removes the declaration of show_trace() in linux/sched.h (it
never was a generic function; some platforms, in particular x86, may want to
update accordingly).
Finally, the patch replaces the one call to show_trace_task() with the
equivalent call show_stack(task, NULL).
The patch below is for Alpha and i386, since I can (compile-)test those (I'll
provide the ia64 update through my regular updates). The other arches will
break visibly and updating the code should be trivial:
- add a task pointer argument to show_stack() and pass NULL as the first
argument where needed
- remove show_trace_task()
- declare show_trace() in a platform-specific header file if you really
want to keep it around
Andrew Morton [Fri, 20 Jun 2003 15:13:39 +0000 (08:13 -0700)]
[PATCH] revert adjtimex changes
From: John Stultz, George Anzinger, Eric Piel
There was confusion over the definition of TICK_USEC. TICK_USEC is
supposed to be based on USER_HZ, however a recent change caused TICK_USEC
to be based on HZ. This broke the adjtimex() interface on systems where
USER_HZ != HZ. This patch reverts the change to TICK_USEC, removes an
added mis-use of the value and fixes some incorrect comments that could
lead to this sort of confusion.
Also this patch resolves the related LTP adjtimex failures.
At the moment, if you don't set CLONE_CHILD_SETTID/CLONE_CHILD_CLEARTID,
the {set,clear}_child_tid values get inherited from the parent task. I may
be missing something, but I suspect that's not the intended behavior. The
patch below instead clears the respective members.
Andrew Morton [Fri, 20 Jun 2003 15:13:21 +0000 (08:13 -0700)]
[PATCH] slab poisoning fix
The slab debugging code is supposed to poison freshly-allocated obejcts with
0x5a and freed ones with 0x6b, so we can distinguish use-uninitialised from
use-after-free.
It wasn't working right for recycled objects. Fix.
Andrew Morton [Fri, 20 Jun 2003 15:13:06 +0000 (08:13 -0700)]
[PATCH] Add system calls statfs64 and fstatfs64
From: Peter Chubb <peter@chubb.wattle.id.au>
Add two new system calls, statfs64 and fstatfs64. This has been needed
sincew the 64-bit sector_t merge - the current structures will overflow.
- Use a common interface (vfs_statfs) with the rest of the kernel,
- convert to 32-bit at (f)statfs time.
- New field f_frsize gives underlying fragment size for the filesystem.
(Solaris has this, and the Open Group describe it).
- The old statfs syscalls will now return -EOVERFLOW if the device was
too large to be represented inthe old data structures.
The new system calls take a size_t argument, which is the size of the
structure to be filled in (as requested by Ben LaHaise), to `futureproof' the
interface.
Has been reviewed by the arch maintainers and by Ulrich Drepper.
Andrew Morton [Fri, 20 Jun 2003 15:12:57 +0000 (08:12 -0700)]
[PATCH] /proc/kcore: handle unmapped areas
From: Andi Kleen <ak@suse.de>
On i386 and most other ports kern_addr_valid is hardcoded to 1.
This works fine as long as only mapped areas are accessed. When you have
something partially mapped in the kclist it is possible that start points to
an unmapped address. The correct behaviour in this case is to zero the user
space. We shouldn't return -EFAULT because the fault is against the mmapped
range, not against the user's address.
copy_to_user usually even checks for exceptions on both source and
destination, but it does not zero the destination in this case and worse
results in EFAULT, which is user visible.
This patch just tries to clear_user in this case again to actually zero the
user data and catch real user side EFAULTs.
Another way to fix this is to have kern_addr_valid do a real page table
lookup (I did that on AMD64), but having this fallback is a bit more
reliable in case there is a race somewhere.
On i386 it could happen for example if the direct space to max_low_pfn
contains something unmapped. This normally isn't the case, but e.g. the
slab debugging patches in -mm* do this so it's better to handle it.
Drawback is that it relies on a somewhat undocumented copy_to_user behaviour
(fault on both source and destination). It is true for i386 and amd64, but I
don't know if it is for other port. In the worst case they just don't have
the race protection and may see bogus EFAULTs.
Andrew Morton [Fri, 20 Jun 2003 15:12:48 +0000 (08:12 -0700)]
[PATCH] Fix /proc/kcore for i386
From: Andi Kleen <ak@suse.de>
The recent IA64 changes for /proc/kcore broke the access on i386.
Currently no notes are written for the direct mapped or vmalloced memory,
which makes gdb reject it.
This patch fixes it. Other ports probably need to do the same changes.
Andrew Morton [Fri, 20 Jun 2003 15:12:34 +0000 (08:12 -0700)]
[PATCH] kjournald shutdown fix
If someome tries to unmount the fs while kjournald is performing a commit,
kjournald forgets to look for the termination request and goes into permanent
sleep.
Lionel Bouton [Fri, 20 Jun 2003 10:44:03 +0000 (03:44 -0700)]
[PATCH] Enhanced SiS96x support
This is an update for the SiS IDE driver.
This is a 99% Vojtech work :
- Independant southbridge detection (no need to add current and future
MuTIOL northbridge PCI ids knowledge to the driver),
- Lots of code cleanup,
- Debug code removed (unused for a while, I will maintain it in my tree
if needed),
I changed some things:
- the new config_xfer_rate is commented out until ide_find_best_mode is
patched for bad drive handling (until then I reverted to the old one
using the config_drive_xfer_rate helper function).
Matthew Wilcox [Fri, 20 Jun 2003 05:31:01 +0000 (22:31 -0700)]
[PATCH] reimplement pci proc name
Hi Greg. Ivan's not happy with the solution I came up with for naming
/proc/bus/pci and Anton would prefer something slightly different too,
so I abstracted the name out so each architecture can do its own thing.
This is against 2.5.72 so won't apply cleanly to your tree (it
applies to bitkeeper as of a few minutes ago with only minor offsets).
I've implemented the original name for non-PCI-domain machines; done what
ia64 and alpha need, respectively (assuming I didn't misunderstand Ivan),
and plopped in the Old Way of doing things for Sparc64, PPC and PPC64.
Maintainers may alter this to whatever degree of complexity they wish.
While there is a separate driver for 2104x tulips (CONFIG_DE2104X),
drivers/net/tulip/Kconfig states that CONFIG_TULIP also supports
2104x tulips. This is not the case since that support was removed
in December 2001. A user with an old tulip may thus be tricked into
configuring the wrong driver. (I was, on my PMac 4400.)
The patch below removes this misinformation from tulip's Kconfig.
Daniel Ritz [Thu, 19 Jun 2003 18:35:52 +0000 (14:35 -0400)]
[PATCH] xirc2ps_cs update
the second patch:
replaces busy_loop with a simple macro doing a schedule_timeout. busy_loop was never
called from interrupt conext anyway, so no need for that. and the sti() is gone.
Daniel Ritz [Thu, 19 Jun 2003 18:35:27 +0000 (14:35 -0400)]
[PATCH] xirc2ps_cs update
hi
this patch does:
- net_device is no longer allocated as part of the driver's private structure,
instead it's allocated via alloc_netdev
- xirc2ps_detach calls xirc2ps_release if necessary (like the other drivers)
Andi Kleen [Thu, 19 Jun 2003 18:09:54 +0000 (14:09 -0400)]
[PATCH] Remove copied inet_aton code in bond_main.c
According to a report the my_inet_aton code in bond_main.c is copied
from 4.4BSD, but it doesn't carry a BSD copyright license. In addition
it is somewhat redundant with the standard in_aton. Convert it
to use the linux function.
Error handling is a bit worse than before, but not much.
Patch for 2.5 bonding. The 2.4 version has the same problem, but afaik
it is scheduled to be replaced by the 2.5 codebase anyways.
David S. Miller [Thu, 19 Jun 2003 10:56:45 +0000 (03:56 -0700)]
[TELEPHONY]: Fix 64-bit warnings in ixj.c
1) Use unsigned long for types holding jiffies.
2) Use size_t for read/write buffer lengths.
3) Use proper printf format string for size_t.
Andy Grover [Thu, 19 Jun 2003 10:41:38 +0000 (03:41 -0700)]
ACPI: Interpreter update to 20030619
- Fix To/FromBCD, eliminating the need for an arch-specific #define
- Do not acquire a semaphore in the S5 shutdown path
- Fix ex_digits_needed for 0 (Takayoshi Kochi)
- Fix sleep/stall code reversal (Andi Kleen)
- Revert a change having to do with control method calling semantics
David S. Miller [Thu, 19 Jun 2003 10:29:32 +0000 (03:29 -0700)]
[IRDA]: Fix 64-bit warnings.
1) Use proper size_t printf format specifier
2) Cast pointers properly when passing them to hashfind
3) Print pointers using proper printf format specifier
instead of using ugly casts.
David S. Miller [Thu, 19 Jun 2003 10:07:10 +0000 (03:07 -0700)]
[AACRAID]: Fix 64-bit warnings/errors.
1) Do not pass NULL into cpu_to_le32(), use plain zero.
2) When storing DMA addresses to SCp.ptr, cast to ulong.