05 Nov, 2006
3 commits
-
Commit 5a06a363ef48444186f18095ae1b932dddbbfa89 ("[PATCH] ipc/msg.c:
clean up coding style") breaks fakeroot on Alpha (variously hangs or
oopses), according to a report by Falk Hueffner.The fact that the code seems to rely on compiler access ordering through
the use of "volatile" is a pretty certain sign that the code has locking
problems, and we should fix those properly and then remove the whole
"volatile" entirely.But in the meantime, the movement of "volatile" was unintentional, and
should be reverted.Cc: Falk Hueffner
Cc: Andrew Morton
Acked-by: Ingo Molnar
Signed-off-by: Linus Torvalds -
After the inode slimming patch that unionised i_pipe/i_bdev/i_cdev, it's
no longer enough to check for existance of ->i_pipe to verify that this
is a pipe.Original patch from Eric Dumazet
Final solution suggested by Linus.Signed-off-by: Jens Axboe
Signed-off-by: Linus Torvalds -
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/shaggy/jfs-2.6:
JFS: Remove redundant xattr permission checking
04 Nov, 2006
37 commits
-
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6:
PCI: Let PCI_MULTITHREAD_PROBE depend on BROKEN
PCI: Revert "PCI: i386/x86_84: disable PCI resource decode on device disable" -
* master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6:
USB: use MII hooks only if CONFIG_MII is enabled
USB Storage: unusual_devs.h entry for Sony Ericsson P990i
USB: xpad: additional USB id's added
USB: fix compiler issues with newer gcc versions
USB: HID: add blacklist AIRcable USB, little beautification
USB: usblp: fix system suspend for some systems
USB: failure in usblp's error path
usbtouchscreen: use endpoint address from endpoint descriptor
USB: sierra: Fix id for Sierra Wireless MC8755 in new table
USB: new VID/PID-combos for cp2101
hid-core: big-endian fix fix
USB: usb-storage: Unusual_dev update
USB: add another sierra wireless device id -
The user.* extended attributes are only allowed on regular files and
directories. Sticky directories further restrict write access to the owner
and privileged users. (See the attr(5) man page for an explanation.)The original check in ext2/ext3 when user.* xattrs were merged was more
restrictive than intended, and when the xattr permission checks were moved
into the VFS, read access to user.* attributes on sticky directores ended
up being denied in addition.Originally-from: Gerard Neil
Signed-off-by: Andreas Gruenbacher
Cc: Dave Kleikamp
Cc: Jan Engelhardt
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
sys_move_pages() uses vmalloc() to allocate an array of structures that is
fills with information passed from user mode and then passes to
do_stat_pages() (in the case the node list is NULL). do_stat_pages()
depends on a marker in the node field of the structure to decide how large
the array is and this marker is correctly inserted into the last element of
the array. However, vmalloc() doesn't zero the memory it allocates and if
the user passes NULL for the node list, then the node fields are not filled
in (except for the end marker). If the memory the vmalloc() returned
happend to have a word with the marker value in it in just the right place,
do_pages_stat will fail to fill the status field of part of the array and
we will return (random) kernel data to user mode.Signed-off-by: Stephen Rothwell
Cc: Christoph Lameter
Cc:
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add support for PATA controllers of MCP67 to amd74xx.c.
Signed-off-by: Peer Chen
Cc: Jeff Garzik
Acked-by: Alan Cox
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
getdelays reports a "fatal reply error, errno 258". We don't have enough room
for multi-threaded exit (PID + TGID).Signed-off-by: Oleg Nesterov
Cc: Balbir Singh
Cc: Shailabh Nagar
Cc: Jay Lan
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
spin_lock_irq{save,restore} is incorrectly called here (the function can
sleep after acquring the lock).done the necessary corrections and removed unwanted cli/sti.
Signed-off-by: Amol Lad
Signed-off-by: Karsten Keil
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Signed-off-by: Stephen Rothwell
Cc: Christoph Lameter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This is needed on bigendian 64bit architectures.
Signed-off-by: Stephen Rothwell
Acked-by: Christoph Lameter
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
In order to get the __NR_* constants, we need sys/syscall.h.
linux/unistd.h works as well since it includes syscall.h, however syscall.h
is more parsimonious. We were inconsistent in this, and this patch adds
syscall.h includes where necessary and removes linux/unistd.h includes
where they are not needed.asm/unistd.h also includes the __NR_* constants, but these are not the
glibc-sanctioned ones, so this also removes one such inclusion.Signed-off-by: Jeff Dike
Cc: Paolo 'Blaisorblade' Giarrusso
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Fix a UML hang in which everything would just stop until some I/O happened
- a ping, someone whacking the keyboard - at which point everything would
start up again as though nothing had happened.The cause was gcc reordering some code which absolutely needed to be
executed in the order in the source. When unblock_signals switches signals
from off to on, it needs to see if any interrupts had happened in the
critical section. The interrupt handlers check signals_enabled - if it is
zero, then the handler adds a bit to the "pending" bitmask and returns.
unblock_signals checks this mask to see if any signals need to be
delivered.The crucial part is this:
signals_enabled = 1;
save_pending = pending;
if(save_pending == 0)
return;
pending = 0;In order to avoid an interrupt arriving between reading pending and setting
it to zero, in which case, the record of the interrupt would be erased,
signals are enabled.What happened was that gcc reordered this so that 'save_pending = pending'
came before 'signals_enabled = 1', creating a one-instruction window within
which an interrupt could arrive, set its bit in pending, and have it be
immediately erased.When the I/O workload is purely disk-based, the loss of a block device
interrupt stops the entire I/O system because the next block request will
wait for the current one to finish. Thus the system hangs until something
else causes some I/O to arrive, such as a network packet or console input.The fix to this particular problem is a memory barrier between enabling
signals and reading the pending signal mask. An xchg would also probably
work.Looking over this code for similar problems led me to do a few more
things:- make signals_enabled and pending volatile so that they don't get cached
in registers- add an mb() to the return paths of block_signals and unblock_signals so
that the modification of signals_enabled doesn't get shuffled into the
caller in the event that these are inlined in the future.Signed-off-by: Jeff Dike
Cc: Paolo 'Blaisorblade' Giarrusso
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Callers after reiserfs_init_bitmap_cache() expect errval to contain -EINVAL
until much later. If a condition fails before errval is reset later,
reiserfs_fill_super() will mistakenly return 0, causing an Oops in
do_add_mount(). This patch resets errval to -EINVAL after the call.I view this as a temporary fix and real error codes should be used
throughout reiserfs_fill_super().Signed-off-by: Jeff Mahoney
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
WARNING: vmlinux - Section mismatch: reference to .init.text:spi_register_board_info from __ksymtab_gpl between '__ksymtab_spi_register_board_info' (at offset 0xc032f7d0) and '__ksymtab_spi_alloc_master'
Fix this by removing the export.
Acked-by: David Brownell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Add a swsusp debugging mode. This does everything that's needed for a suspend
except for actually suspending. So we can look in the log messages and work
out a) what code is being slow and b) which drivers are misbehaving.(1)
# echo testproc > /sys/power/disk
# echo disk > /sys/power/stateThis should turn off the non-boot CPU, freeze all processes, wait for 5
seconds and then thaw the processes and the CPU.(2)
# echo test > /sys/power/disk
# echo disk > /sys/power/stateThis should turn off the non-boot CPU, freeze all processes, shrink
memory, suspend all devices, wait for 5 seconds, resume the devices etc.Cc: Pavel Machek
Cc: Stefan Seyfried
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
WARNING: vmlinux - Section mismatch: reference to .init.data:acpi_noirq from .text between 'pcibios_penalize_isa_irq' (at offset 0xc026ffa1) and 'pirq_serverworks_get'
Acked-by: "Brown, Len"
Cc: Andi Kleen
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Apparently FUTEX_FD is unfixably racy and nothing uses it (or if it does, it
shouldn't).Add a warning printk, give any remaining users six months to migrate off it.
Cc: Ulrich Drepper
Cc: Ingo Molnar
Acked-by: Thomas Gleixner
Cc: Rusty Russell
Cc: Alan Cox
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
printk_ratelimit() has global state which makes it not useful for callers
which wish to perform ratelimiting at a particular frequency.Add a printk_timed_ratelimit() which utilises caller-provided state storage to
permit more flexibility.This function can in fact be used for things other than printk ratelimiting
and is perhaps poorly named.Cc: Ulrich Drepper
Cc: Ingo Molnar
Cc: Thomas Gleixner
Cc: Rusty Russell
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
It looks like there is a bug in init_reap_node() in slab.c that can cause
multiple oops's on certain ES7000 configurations. The variable reap_node
is defined per cpu, but only initialized on a single CPU. This causes an
oops in next_reap_node() when __get_cpu_var(reap_node) returns the wrong
value. Fix is below.Signed-off-by: Dan Yeisley
Cc: Andi Kleen
Acked-by: Christoph Lameter
Cc: Pekka Enberg
Cc: Manfred Spraul
Cc:
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Taken from http://bugzilla.kernel.org/show_bug.cgi?id=7439
It looks like device registration in drivers/char/ipmi/ipmi_si_intf.c was
cleaned up and a small error was made when setting the class_mask. The fix
is simple as the correct mask value is defined in the code but is not used.Acked-by: Corey Minyard
Cc:
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
When I was performing some operations on NFS, I got below error on server
side.=============================================
[ INFO: possible recursive locking detected ]
2.6.19-prep #1
---------------------------------------------
nfsd4/3525 is trying to acquire lock:
(&inode->i_mutex){--..}, at: [] mutex_lock+0x21/0x24but task is already holding lock:
(&inode->i_mutex){--..}, at: [] mutex_lock+0x21/0x24other info that might help us debug this:
2 locks held by nfsd4/3525:
#0: (client_mutex){--..}, at: [] mutex_lock+0x21/0x24
#1: (&inode->i_mutex){--..}, at: [] mutex_lock+0x21/0x24stack backtrace:
[] show_trace_log_lvl+0x58/0x16a
[] show_trace+0xd/0x10
[] dump_stack+0x19/0x1b
[] __lock_acquire+0x778/0x99c
[] lock_acquire+0x4b/0x6d
[] __mutex_lock_slowpath+0xbc/0x20a
[] mutex_lock+0x21/0x24
[] vfs_rmdir+0x76/0xf8
[] nfsd4_clear_clid_dir+0x2c/0x41 [nfsd]
[] nfsd4_remove_clid_dir+0xb1/0xe8 [nfsd]
[] laundromat_main+0x9b/0x1c3 [nfsd]
[] run_workqueue+0x7a/0xbb
[] worker_thread+0xd2/0x107
[] kthread+0xc3/0xf2
[] kernel_thread_helper+0x5/0xb
===================================================================Cause for this problem was,2 successive mutex_lock calls on 2 diffrent inodes ,as shown below
static int
nfsd4_clear_clid_dir(struct dentry *dir, struct dentry *dentry)
{
int status;/* For now this directory should already be empty, but we empty it of
* any regular files anyway, just in case the directory was created by
* a kernel from the future.... */
nfsd4_list_rec_dir(dentry, nfsd4_remove_clid_file);
mutex_lock(&dir->d_inode->i_mutex);
status = vfs_rmdir(dir->d_inode, dentry);
...int vfs_rmdir(struct inode *dir, struct dentry *dentry)
{
int error = may_delete(dir, dentry, 1);if (error)
return error;if (!dir->i_op || !dir->i_op->rmdir)
return -EPERM;DQUOT_INIT(dir);
mutex_lock(&dentry->d_inode->i_mutex);
...So I have developed the patch to overcome this problem.
Signed-off-by: Srinivasa DS
Cc: Neil Brown
Cc: Peter Zijlstra
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Call sysdev_class_unregister() on failure in edac_sysfs_memctrl_setup()
and decrease identation level for clear logic.Acked-by: Doug Thompson
Signed-off-by: Akinobu Mita
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This just ignore the remaining pages, and remove unneeded unlock_pages().
Signed-off-by: OGAWA Hirofumi
Cc: Steven French
Cc: Miklos Szeredi
Acked-by: Steven Whitehouse
Cc: Trond Myklebust
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This just ignore the remaining pages.
Signed-off-by: OGAWA Hirofumi
Cc: Steven French
Cc: Miklos Szeredi
Cc: Steven Whitehouse
Cc: Trond Myklebust
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This just ignore the remaining pages, and will fix a forgot put_pages_list().
Signed-off-by: OGAWA Hirofumi
Cc: Steven French
Cc: Miklos Szeredi
Cc: Steven Whitehouse
Cc: Trond Myklebust
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Current read_pages() assume ->readpages() frees the passed pages.
This patch free the pages in ->read_pages(), if those were remaining in the
pages_list. So, readpages() just can ignore the remaining pages in
pages_list.Signed-off-by: OGAWA Hirofumi
Cc: Steven French
Cc: Miklos Szeredi
Cc: Steven Whitehouse
Cc: Trond Myklebust
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Fix module_param/sysfs file permission typo.
Clean up MODULE_PARM_DESC strings to avoid fancy (and incorrect)
formatting.Fix header includes for lkdtm; add some needed ones, remove unused ones;
and fix this gcc warning:
drivers/misc/lkdtm.c:150: warning: 'struct buffer_head' declared inside parameter list
drivers/misc/lkdtm.c:150: warning: its scope is only this definition or declaration, which is probably not what you wantSigned-off-by: Randy Dunlap
Cc: Ankita Garg
Cc: Vivek Goyal
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
ufs2 fails to mount on x86_64, claiming bad magic. This is because
ufs_super_block_third's fs_un1 member is padded out by 4 bytes for 8-byte
alignment, pushing down the rest of the struct.Forcing this to be packed solves it. I took a quick look over other
on-disk structures and didn't immediately find other problems. I was able
to mount & ls a populated ufs2 filesystem w/ this change.Signed-off-by: Eric Sandeen
Cc: Evgeniy Dushistov
Cc:
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Un-needed add-store operation wastes a few bytes.
8 bytes wasted with -O2, on a ppc.Signed-off-by: nkalmala
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Fix two issuses related to ipc_ids->entries freeing.
1. When freeing ipc namespace we need to free entries allocated
with ipc_init_ids().2. When removing old entries in grow_ary() ipc_rcu_putref()
may be called on entries set to &ids->nullentry earlier in
ipc_init_ids().
This is almost impossible without namespaces, but with
them this situation becomes possible.Found during OpenVZ testing after obvious leaks in beancounters.
Signed-off-by: Pavel Emelianov
Cc: Kirill Korotaev
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Move journal-api into filesystems.tmpl as a Chapter. Applies on top of the
previous docbook: make a filesystems book patch.Remove trailing whitespace from journal-api chapter. Align some of the
tags.Signed-off-by: Randy Dunlap
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Correct a few comments in kernel-doc Doc and source files.
(akpm: note: the patch removes a non-ascii character and might have to be
applied by hand..)Signed-off-by: Randy Dunlap
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
758333458aa719bfc26ec16eafd4ad3a9e96014d fixes the not checked copy_to_user
return value of compat_sys_pselect7. I ran into this too because of an old
source tree, but my fix would look quite a bit different to Andi's fix.The reason is that the compat function IMHO should behave the very same as
the non-compat function if possible. Since sys_pselect7 does not return
-EFAULT in this specific case, change the compat code so it behaves like
sys_pselect7.Cc: David Woodhouse
Cc: Andi Kleen
Signed-off-by: Heiko Carstens
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
This allows udev to do something intelligent when an array becomes
available.Acked-by: Greg KH
Signed-off-by: Neil Brown
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Neil's xterms are too wide.
Cc: Neil Brown
Cc: Jens Axboe
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
I missed a pointer dereference in this kmalloc result check.
Signed-off-by: Michael Halcrow
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Fix mcs7830 patch
The recent mcs7830 update to make the MII support sharable goofed various
pre-existing configurations in two ways:- it made the usbnet infrastructure reference MII symbols even
when they're not needed in the kernel being built- it didn't enable MII along with the mcs7830 minidriver
This patch fixes these two problems.
However, there does seem to be a Kconfig reverse dependency bug in that MII
gets wrongly enabled in some cases (like USBNET=y and USBNET_MII=n); I think
I've noticed that same problem in other situations too. So the result can
mean kernels being bloated by stuff that's needlessly enabled ... better
than wrongly being disabled, but contributing to bloat.Signed-off-by: David Brownell
Signed-off-by: Greg Kroah-Hartman -
USB Storage: this patch adds support for Sony Ericsson P990i
Signed-off-by: Jan Mate
Signed-off-by: Andrew Morton
Signed-off-by: Greg Kroah-Hartman