- 02 Feb, 2003 37 commits
-
-
-
Russell King authored
Certain support files are shared between various ARM machine classes. In other to sanely support these, we place the shared files in arch/arm/common instead of the individual machine class directories.
-
Linus Torvalds authored
-
Andrew Morton authored
Patch from Russell King <rmk@arm.linux.org.uk> show_task() attempts to calculate the amount of free space which hasn't been written to on the kernel stack by reading from the base of the kernel stack upwards. However, it mistakenly uses the task_struct pointer as the base of the stack, which it isn't, and this can cause an oops. Here is a patch which uses the task thread pointer instead, which should be located at the bottom of the kernel stack. It appears this was missed when the thread structure was introduced.
-
Andrew Morton authored
The recent exit_mmap() changes broke PPC64 when 64-bit applications exec 32-bit ones. ia32-on-ia64 was broken as well What is happening is that load_elf_binary() sets TIF_32BIT (via SET_PERSONALITY) _before_ running exit_mmap(). So when we're unmapping the vma's of the old image, we are running under the new image's personality. This causes PPC64 to pass a 32-bit TASK_SIZE to unmap_vmas(), even when the execing process had a 64-bit image. Because unmap_vmas() is not provided with the correct virtual address span it does not unmap all the old image's vma's and we go BUG_ON(mm->map_count) in exit_mmap(). The early SET_PERSONALITY() is required before we look up the interpreter because the lookup of the executable has to happen under the alternate root which SET_PERSONALITY() may set. Unfortunately this means that we're running flush_old_exec() under the new exec's personality. Hence this bug. So what the patch does is to simply pass ~0UL into unmap_vmas(), which tells it to unmap everything regardless of current personality. Which is what the old open-coded VMA killer was doing. There remains the problem that some architectures are sometimes passing the incorrect TASK_SIZE into tlb_finish_mmu(). They've always been doing that.
-
Andrew Morton authored
We cannot clear VM_MAYWRITE in there - it turns writeable MAP_PRIVATE mappings into readonly ones. So change it back to the 2.4 form - disallow a writeable MAP_SHARED mapping against filesystems which do not implement ->writepage().
-
Andrew Morton authored
Patch from: Petr Vandrovec <vandrove@vc.cvut.cz> soundcore is trying to perform kernel syscalls to load firmware, but falls afoul of missing `errno'. Convert it to use VFS API functions.
-
Andrew Morton authored
redo_fd_request() needs to take the queue lock around the call to elv_next_request().
-
Andrew Morton authored
Patch from "Andres Salomon" <dilinger@voxel.net> Fix compilation of atyfb_base.c
-
Andrew Morton authored
__wait_on_buffer() needs to use io_schedule(), so processes in there are accounted as being in I/O wait.
-
Andrew Morton authored
pcmcia timer initialisation fixes from Anton Blanchard
-
Andrew Morton authored
Patch from William Lee Irwin III <wli@holomorphy.com> PAE's pte_none() and pte_pfn() evaluate their arguments twice; analogous fixes have been made to other things; c.f. pgtable.h's long list of one-line inlines with parentheses still around their args.
-
Andrew Morton authored
Patch from: Rusty Russell <rusty@rustcorp.com.au> Mikael Pettersson points out that "-s" gets mangled to "_s" on the kernel command line, even though it turns out not to be a parameter.
-
Andrew Morton authored
Patch from William Lee Irwin III <wli@holomorphy.com> pgd_index() doesn't parenthesize its argument. This is a bad idea for macros, since it's legitimate to pass expressions to them that will get misinterpreted given operator precedence and the shift.
-
Andrew Morton authored
Patch from Rusty Russell <rusty@rustcorp.com.au> Make symbol_get() use undefined weak symbols if !CONFIG_MODULE. Many thanks to RTH for introducing undef weak symbols to me.
-
Andrew Morton authored
Patch from William Lee Irwin III <wli@holomorphy.com> BLK_BOUNCE_HIGH and BLK_BOUNCE_ANY are compared against 64-bit quantities. Cast these unsigned long quantities to avoid overflow.
-
Andrew Morton authored
Patch from Manfred Spraul <manfred@colorfullife.com> cache_alloc_refill() forgets to disable interrupts again on an error path. This exposes us to slab corruption and it makes slab debugging go BUG (it expects local irqs to be disabled).
-
Andrew Morton authored
Patch from William Lee Irwin III <wli@holomorphy.com> struct thread_info is shared with the stack, not struct task_struct. False positives have been seen.
-
Andrew Morton authored
Random semicolon makes the whole thing a no-op. It _did_ work. I must have broken it between testing and sending :(
-
Andrew Morton authored
Patch from: jak@rudolph.ccur.com (Joe Korty) The new, preemptable spin_lock() spins on an atomic bus-locking read/write instead of an ordinary read, as the original spin_lock implementation did. Perhaps that is the source of the inefficiency being seen. Attached sample code compiles but is untested and incomplete (present only to illustrate the idea).
-
Andrew Morton authored
The second quota locking fix. Sorry, I seem to have misplaced the changelog.
-
Andrew Morton authored
Quota locking fix from Jan Kara.
-
Andrew Morton authored
Spotted by Andries Brouwer. There's one place where slab is calling check_poison_obj() but not reporting on any detected failure. We used to go BUG() in there. Convert it over to the kinder, gentler slab_error() regime.
-
Andrew Morton authored
There have been sporadic sightings of ext3 causing little blips of 100,000 context switches per second when under load. At the start of do_get_write_access() we have this logic: repeat: lock_buffer(jh->bh); ... unlock_buffer(jh->bh); ... if (jh->j_list == BJ_Shadow) { sleep_on_buffer(jh->bh); goto repeat; } The problem is that the unlock_buffer() will wake up anyone who is sleeping in the sleep_on_buffer(). So if task A is asleep in sleep_on_buffer() and task B now runs do_get_write_access(), task B will wake task A by accident. Task B will then sleep on the buffer and task A will loop, will run unlock_buffer() and then wake task B. This state will continue until I/O completes against the buffer and kjournal changes jh->j_list. Unless task A and task B happen to both have realtime scheduling policy - if they do then kjournald will never run. The state is never cleared and your box locks up. The fix is to not do the `goto repeat;' until the buffer has been taken of the shadow list. So we don't go and wake up the other waiter(s) until they can actually proceed to use the buffer. The patch removes the exported sleep_on_buffer() function and simply exports an existing function which provides access to a buffer_head's waitqueue pointer. Which is a better interface anyway, because it permits the use of wait_event(). This bug was introduced introduced into 2.4.20-pre5 and was faithfully ported up.
-
Andrew Morton authored
The general error logic handling in there is: *errp = -EFOO; <lots of code> if (some_error) goto out; this is fragile and unmaintainable, because the setting of the error code is "far away" from the site where the error was detected. And the code was actually wrong - we're returning ENOSPC in places where fs metadata inconsistency was detected. We traditionally return -EIO in this case. So change it all to do, effectively: if (some_error) { *errp = -EFOO; goto out; }
-
Andrew Morton authored
Patch from: Hugh Dickins <hugh@veritas.com> For almost a year (since 2.5.4) ext2_new_block has tended to set err 0 instead of -ENOSPC or -EIO. This manifested variously (typically depends on what's stale in ext2_get_block's chain[4] array): sometimes __brelse free free buffer backtraces, sometimes release_pages oops, usually generic_make_request beyond end of device messages, followed by further ext2 errors. [Insert lecture on dangers of using goto for unwind :-]
-
Andrew Morton authored
Forward port of a 2.4 patch by Christoph Hellwig. See http://cert.uni-stuttgart.de/archive/bugtraq/2002/03/msg00384.html for the security implications.
-
Andrew Morton authored
Patch from Manfred Spraul <manfred@colorfullife.com> exec of setuid apps and ptrace must be synchronized, to ensure that a normal user cannot ptrace a setuid app across exec. ptrace_attach acquires the task_lock around the uid checks, compute_creds acquires the BLK. The patch converts compute_creds to the task_lock. Additionally, it removes the do_unlock variable: the task_lock is not heaviliy used, there is no need to avoid the spinlock by adding branches. The patch is a cleanup patch, not a fix for a security problem: AFAICS the sys_ptrace in every arch acquires the BKL before calling ptrace_attach.
-
Andrew Morton authored
Patch from "Ph. Marek" <philipp.marek@bmlv.gv.at> Compile fix in sound/oss/maestro.c
-
Andrew Morton authored
Patch from: "H. J. Lu" <hjl@lucon.org> Fixes a commonly-reported insmod oops. Move the ksymtab labels definitions inside the liker section, so they get the right addresses.
-
Andrew Morton authored
Since Jan removed the lock_kernel()s in inode_add_bytes() and inode_sub_bytes(), these functions have been racy. One problematic workload has been discovered in which concurrent writepage and truncate on SMP quickly causes i_blocks to go negative. writepage() does not take i_sem, and it seems that for ext2, there are no other locks in force when inode_add_bytes() is called. Putting the BKL back in there is not acceptable. To fix this race I have added a new spinlock "i_lock" to the inode. That lock is presently used to protect i_bytes and i_blocks. We could use it to protect i_size as well. The splitting of the used disk space into i_blocks and i_bytes is silly - we should nuke all that and just have a bare loff_t i_usedbytes. Later.
-
Andrew Morton authored
When an appending O_DIRECT write hits ENOSPC we're returning a short write which is _too_ short. The file ends up with an undersized i_size and fsck complains. So update the return value with the partial result before bailing out.
-
Andrew Morton authored
In 2.5.52 I broke sys_sync() for ext2 in subtle ways. sys_sync() will set mapping->dirtied_when non-zero against a clean inode. Later, in (say) __iget(), that inode gets moved over to inode_unused or inode_in_use. But because it has non-zero ->dirtied_when, __mark_inode_dirty() thinks that the inode must still be on sb->s_dirty. But it isn't. It's on inode_in_use. It (and its pages) never get written out and the data gets thrown away on unmount. The patch ceases to use ->dirtied_when as an indicator of inode dirtiness. Not sure why I even did that :(
-
http://linux-sound.bkbits.net/linux-soundLinus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
Linus Torvalds authored
-
Linus Torvalds authored
sense now that we can dump all threads in one core-dump. Fix from MAEDA Naoaki <maeda.naoaki@jp.fujitsu.com>
-
bk://kernel.bkbits.net/davem/sparc-2.5Linus Torvalds authored
into home.transmeta.com:/home/torvalds/v2.5/linux
-
- 01 Feb, 2003 3 commits
-
-
Russell King authored
-
Russell King authored
-
Russell King authored
ARM GCC 2.95 generates frame pointers by default. GCC 3.2.x seems to require some persuasion to generate them, despite being required for debugging.
-