Wenji Huang [Wed, 24 Feb 2010 07:40:22 +0000 (15:40 +0800)]
tracing: Fix typo in prof_sysexit_enable()
Signed-off-by: Wenji Huang <wenji.huang@oracle.com>
LKML-Reference: <
1266997226-6833-1-git-send-email-wenji.huang@oracle.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Li Zefan [Wed, 24 Feb 2010 07:28:14 +0000 (15:28 +0800)]
tracing: Remove CONFIG_TRACE_POWER from kernel config
The power tracer has been converted to power trace events.
Acked-by: Frederic Weisbecker <fweisbec@gmail.com>
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <
4B84D50E.
4070806@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Jeff Mahoney [Wed, 24 Feb 2010 18:59:23 +0000 (13:59 -0500)]
tracing: Fix ftrace_event_call alignment for use with gcc 4.5
GCC 4.5 introduces behavior that forces the alignment of structures to
use the largest possible value. The default value is 32 bytes, so if
some structures are defined with a 4-byte alignment and others aren't
declared with an alignment constraint at all - it will align at 32-bytes.
For things like the ftrace events, this results in a non-standard array.
When initializing the ftrace subsystem, we traverse the _ftrace_events
section and call the initialization callback for each event. When the
structures are misaligned, we could be treating another part of the
structure (or the zeroed out space between them) as a function pointer.
This patch forces the alignment for all the ftrace_event_call structures
to 4 bytes.
Without this patch, the kernel fails to boot very early when built with
gcc 4.5.
It's trivial to check the alignment of the members of the array, so it
might be worthwhile to add something to the build system to do that
automatically. Unfortunately, that only covers this case. I've asked one
of the gcc developers about adding a warning when this condition is seen.
Cc: stable@kernel.org
Signed-off-by: Jeff Mahoney <jeffm@suse.com>
LKML-Reference: <
4B85770B.
6010901@suse.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Steven Rostedt [Thu, 25 Feb 2010 13:42:06 +0000 (08:42 -0500)]
ftrace: Remove memory barriers from NMI code when not needed
The code in stop_machine that modifies the kernel text has a bit
of logic to handle the case of NMIs. stop_machine does not prevent
NMIs from executing, and if an NMI were to trigger on another CPU
as the modifying CPU is changing the NMI text, a GPF could result.
To prevent the GPF, the NMI calls ftrace_nmi_enter() which may
modify the code first, then any other NMIs will just change the
text to the same content which will do no harm. The code that
stop_machine called must wait for NMIs to finish while it changes
each location in the kernel. That code may also change the text
to what the NMI changed it to. The key is that the text will never
change content while another CPU is executing it.
To make the above work, the call to ftrace_nmi_enter() must also
do a smp_mb() as well as atomic_inc(). But for applications like
perf that require a high number of NMIs for profiling, this can have
a dramatic effect on the system. Not only is it doing a full memory
barrier on both nmi_enter() as well as nmi_exit() it is also
modifying a global variable with an atomic operation. This kills
performance on large SMP machines.
Since the memory barriers are only needed when ftrace is in the
process of modifying the text (which is seldom), this patch
adds a "modifying_code" variable that gets set before stop machine
is executed and cleared afterwards.
The NMIs will check this variable and store it in a per CPU
"save_modifying_code" variable that it will use to check if it
needs to do the memory barriers and atomic dec on NMI exit.
Acked-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Steven Rostedt [Tue, 16 Feb 2010 15:38:47 +0000 (10:38 -0500)]
tracing: Add notrace to TRACE_EVENT implementation functions
The functions used to implement the TRACE_EVENT macro show up in
function tracing. This is considered a distraction, and these should
not be displayed. For example:
<idle>-0 [000] 57.202149: task_of <-update_stats_wait_end
<idle>-0 [000] 57.202149: ftrace_raw_event_sched_stat_wait <-update_stats_wait_end
<idle>-0 [000] 57.202150: ftrace_raw_event_id_sched_stat_template <-ftrace_raw_event_sched_stat_wait
<idle>-0 [000] 57.202150: sched_stat_wait: comm=sshd pid=2735 delay=19207 [ns]
The "ftrace_raw_event_*" traces are just the utility functions used
by TRACE_EVENT tracepoints.
Cc: Thomas Gleixner <tglx@linutronix.de>
Requested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Li Zefan [Wed, 10 Feb 2010 07:43:04 +0000 (15:43 +0800)]
ftrace: Allow to remove a single function from function graph filter
I don't see why we can only clear all functions from the filter.
After patching:
# echo sys_open > set_graph_function
# echo sys_close >> set_graph_function
# cat set_graph_function
sys_open
sys_close
# echo '!sys_close' >> set_graph_function
# cat set_graph_function
sys_open
Signed-off-by: Li Zefan <lizf@cn.fujitsu.com>
LKML-Reference: <
4B726388.
2000408@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Steven Rostedt [Wed, 27 Jan 2010 16:25:54 +0000 (11:25 -0500)]
tracing: Add correct/incorrect to sort keys for branch annotation output
The branch annotation is a bit difficult to see the worst offenders
because it only sorts by percentage:
correct incorrect % Function File Line
------- --------- - -------- ---- ----
0 163 100 qdisc_restart sch_generic.c 179
0 163 100 pfifo_fast_dequeue sch_generic.c 447
0 4 100 pskb_trim_rcsum skbuff.h 1689
0 4 100 llc_rcv llc_input.c 170
0 18 100 psmouse_interrupt psmouse-base.c 304
0 3 100 atkbd_interrupt atkbd.c 389
0 5 100 usb_alloc_dev usb.c 437
0 11 100 vsscanf vsprintf.c 1897
0 2 100 IS_ERR err.h 34
0 23 100 __rmqueue_fallback page_alloc.c 865
0 4 100 probe_wakeup_sched_switch trace_sched_wakeup.c 142
0 3 100 move_masked_irq migration.c 11
Adding the incorrect and correct values as sort keys makes this file a
bit more informative:
correct incorrect % Function File Line
------- --------- - -------- ---- ----
0 366541 100 audit_syscall_entry auditsc.c 1637
0 366538 100 audit_syscall_exit auditsc.c 1685
0 115839 100 sched_info_switch sched_stats.h 269
0 74567 100 sched_info_queued sched_stats.h 222
0 66578 100 sched_info_dequeued sched_stats.h 177
0 15113 100 trace_workqueue_insertion workqueue.h 38
0 15107 100 trace_workqueue_execution workqueue.h 45
0 3622 100 syscall_trace_leave ptrace.c 1772
0 2750 100 sched_move_task sched.c 10100
0 2750 100 sched_move_task sched.c 10110
0 1815 100 pre_schedule_rt sched_rt.c 1462
0 837 100 audit_alloc auditsc.c 879
0 814 100 tcp_mss_split_point tcp_output.c 1302
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Wed, 13 Jan 2010 11:38:30 +0000 (19:38 +0800)]
tracing: Simplify test for function_graph tracing start point
In the function graph tracer, a calling function is to be traced
only when it is enabled through the set_graph_function file,
or when it is nested in an enabled function.
Current code uses TSK_TRACE_FL_GRAPH to test whether it is nested
or not. Looking at the code, we can get this:
(trace->depth > 0) <==> (TSK_TRACE_FL_GRAPH is set)
trace->depth is more explicit to tell that it is nested.
So we use trace->depth directly and simplify the code.
No functionality is changed.
TSK_TRACE_FL_GRAPH is not removed yet, it is left for future usage.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Steven Rostedt <rostedt@goodmis.org>
LKML-Reference: <
4B4DB0B6.
7040607@cn.fujitsu.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Frederic Weisbecker [Thu, 14 Jan 2010 07:23:15 +0000 (08:23 +0100)]
tracing: Drop the tr check from the graph tracing path
Each time we save a function entry from the function graph
tracer, we check if the trace array is set, which is wasteful
because it is set anyway before we start the tracer. All we need
is to ensure we have good read and write orderings. When we set
the trace array, we just need to guarantee it to be visible
before starting tracing.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
LKML-Reference: <
1263453795-7496-1-git-send-regression-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Steven Rostedt [Wed, 6 Jan 2010 22:27:11 +0000 (17:27 -0500)]
tracing: Add stack dump to trace_printk if stacktrace option is set
If the ftrace stacktrace option is set, then add the stack dumps to
trace_printk.
Requested-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Wolfram Sang [Tue, 5 Jan 2010 20:41:22 +0000 (21:41 +0100)]
tracing: Use appropriate perl constructs in recordmcount.pl
Modified recordmcount.pl to use perl constructs that are still
understandable by C hackers that are not perl programmers.
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
LKML-Reference: <
1262724082-9517-1-git-send-email-w.sang@pengutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Wolfram Sang [Tue, 5 Jan 2010 18:27:51 +0000 (19:27 +0100)]
tracing: optimize recordmcount.pl for offsets-handling
- move check for open file in front of the writing loop
- use perl-constructs to access the array
Signed-off-by: Wolfram Sang <w.sang@pengutronix.de>
LKML-Reference: <
1262716072-14414-2-git-send-email-w.sang@pengutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Wed, 6 Jan 2010 12:08:50 +0000 (20:08 +0800)]
tracing: Consolidate protection of reader access to the ring buffer
At the beginning, access to the ring buffer was fully serialized
by trace_types_lock. Patch
d7350c3f4569 gives more freedom to readers,
and patch
b04cc6b1f6 adds code to protect trace_pipe and cpu#/trace_pipe.
But actually it is not enough, ring buffer readers are not always
read-only, they may consume data.
This patch makes accesses to trace, trace_pipe, trace_pipe_raw
cpu#/trace, cpu#/trace_pipe and cpu#/trace_pipe_raw serialized.
And removes tracing_reader_cpumask which is used to protect trace_pipe.
Details:
Ring buffer serializes readers, but it is low level protection.
The validity of the events (which returns by ring_buffer_peek() ..etc)
are not protected by ring buffer.
The content of events may become garbage if we allow another process to consume
these events concurrently:
A) the page of the consumed events may become a normal page
(not reader page) in ring buffer, and this page will be rewritten
by the events producer.
B) The page of the consumed events may become a page for splice_read,
and this page will be returned to system.
This patch adds trace_access_lock() and trace_access_unlock() primitives.
These primitives allow multi process access to different cpu ring buffers
concurrently.
These primitives don't distinguish read-only and read-consume access.
Multi read-only access is also serialized.
And we don't use these primitives when we open files,
we only use them when we read files.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B447D52.
1050602@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:57 +0000 (15:39 +0800)]
tracing: Remove show_format and related macros from TRACE_EVENT
The previous patches added the use of print_fmt string and changes
the trace_define_field() function to also create the fields and
format output for the event format files.
text data bss dec hex filename
5857201 1355780 9336808 16549789 fc879d vmlinux
5884589 1351684 9337896 16574169 fce6d9 vmlinux-orig
The above shows the size of the vmlinux after this patch set
compared to the vmlinux-orig which is before the patch set.
This saves us 27k on text, 1k on bss and adds just 4k of data.
The total savings of 24k in size.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D4D.40604@cn.fujitsu.com>
Acked-by: Masami Hiramatsu <mhiramat@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:53 +0000 (15:39 +0800)]
tracing: Use defined fields and print_fmt to print formats
The calls ftrace_format_##call() and ftrace_define_fields_##call()
are almost duplicate in functionality. With the addition of the
print_fmt in previous patches, these two functions can be merged
into one.
The trace_define_field() defines the fields and links them into
the struct ftrace_event_call. The previous patches introduced
the print_fmt field and this can now be used with the trace_define_field()
to create the event format file fields and print_fmt field.
The struct ftrace_event_call->fields are used to print the fields
The struct ftrace_event_call->print_fmt is used to print
the "print fmt: XXXXXXXXXXX" line.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D49.
5000006@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Steven Rostedt [Tue, 29 Dec 2009 02:13:59 +0000 (21:13 -0500)]
tracing: Have syscall tracing call its own init function
In the clean up of having all events call one specific function,
the syscall event init was changed to call this helper function.
With the new print_fmt updates, the syscalls need to do special
initializations. This patch converts the syscall events to call
its own init function again.
Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
Cc: Li Zefan <lizf@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:49 +0000 (15:39 +0800)]
tracing/kprobes: Init print_fmt for kprobe events
This is part of a patch set that removes the show_format method
in the ftrace event macros.
Add the print_fmt initialization to the kprobe events.
The print_fmt is still not used, but will be in the follow up
patches.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D45.
3080100@cn.fujitsu.com>
Acked-by: Masami Hiramatsu <mhiramat@redhat.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:45 +0000 (15:39 +0800)]
tracing/syscalls: Init print_fmt for syscall events
This is part of a patch set that removes the show_format method
in the ftrace event macros.
Add the print_fmt initialization to the syscall events.
The print_fmt is still not used, but will be in the follow up
patches.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D41.609@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:42 +0000 (15:39 +0800)]
tracing: Add print_fmt field
This is part of a patch set that removes the show_format method
in the ftrace event macros.
The print_fmt field is added to hold the string that shows
the print_fmt in the event format files. This patch only adds
the field but it is currently not used. Later patches will use
this field to enable us to remove the show_format field
and function.
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D3E.
2000704@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Lai Jiangshan [Tue, 15 Dec 2009 07:39:34 +0000 (15:39 +0800)]
tracing: Have __dynamic_array() define a field
This is part of a patch set that removes the show_format method
in the ftrace event macros.
This patch set requires that all fields are added to the
ftrace_event_call->fields. This patch changes __dynamic_array()
to call trace_define_field() to include fields that use __dynamic_array().
Signed-off-by: Lai Jiangshan <laijs@cn.fujitsu.com>
LKML-Reference: <
4B273D36.
8090100@cn.fujitsu.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
Linus Torvalds [Wed, 6 Jan 2010 00:02:46 +0000 (16:02 -0800)]
Linux 2.6.33-rc3
Linus Torvalds [Wed, 6 Jan 2010 00:01:58 +0000 (16:01 -0800)]
Merge git://git./linux/kernel/git/davem/sparc-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc64: Fix Niagara2 perf event handling.
sparc64: Fix NMI programming when perf events are active.
bbc_envctrl: Clean up properly if kthread_run() fails.
Rusty Russell [Tue, 5 Jan 2010 02:18:49 +0000 (12:48 +1030)]
Revert "x86: Side-step lguest problem by only building cmpxchg8b_emu for pre-Pentium"
This reverts commit
ae1b22f6e46c03cede7cea234d0bf2253b4261cf.
As Linus said in
982d007a6ee: "There was something really messy about
cmpxchg8b and clone CPU's, so if you enable it on other CPUs later, do it
carefully."
This breaks lguest for those configs, but we can fix that by emulating
if we have to.
Fixes: http://bugzilla.kernel.org/show_bug.cgi?id=14884
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Wed, 6 Jan 2010 00:01:04 +0000 (16:01 -0800)]
Merge branch 'upstream-linus' of git://git./linux/kernel/git/jlbec/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:
ocfs2: Handle O_DIRECT when writing to a refcounted cluster.
Linus Torvalds [Tue, 5 Jan 2010 23:59:56 +0000 (15:59 -0800)]
Merge branch 'for-2.6.33' of git://git./linux/kernel/git/broonie/sound-2.6
* 'for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound-2.6:
ASoC: fixup oops in generic AC97 codec glue
ASoC: fix params_rate() macro use in several codecs
ASoC: fsi-ak4642: Remove ak4642_add_i2c_device
David S. Miller [Tue, 5 Jan 2010 07:16:03 +0000 (23:16 -0800)]
sparc64: Fix Niagara2 perf event handling.
For chips like Niagara2 that have true overflow indications
in the %pcr (which we don't actually need and don't use)
the interrupt signal persists until the overflow bits are
cleared by an explicit %pcr write.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 4 Jan 2010 23:37:04 +0000 (15:37 -0800)]
sparc64: Fix NMI programming when perf events are active.
If perf events are active, we should not reset the %pcr to
PCR_PIC_PRIV. That perf events code does the management.
Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller [Mon, 4 Jan 2010 23:33:22 +0000 (15:33 -0800)]
Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
David S. Miller [Mon, 4 Jan 2010 23:31:10 +0000 (15:31 -0800)]
bbc_envctrl: Clean up properly if kthread_run() fails.
In bbc_envctrl_init() we have to unlink the fan and temp instances
from the lists because our caller is going to free up the 'bp' object
if we return an error.
We can't rely upon bbc_envctrl_cleanup() to do this work for us in
this case.
Reported-by: Patrick Finnegan <pat@computer-refuge.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Linus Torvalds [Mon, 4 Jan 2010 20:36:54 +0000 (12:36 -0800)]
Merge branch 'limits_cleanup' of git://decibel.fi.muni.cz/~xslaby/linux
* 'limits_cleanup' of git://decibel.fi.muni.cz/~xslaby/linux:
resource: add helpers for fetching rlimits
resource: move kernel function inside __KERNEL__
SECURITY: selinux, fix update_rlimit_cpu parameter
Linus Torvalds [Mon, 4 Jan 2010 20:35:18 +0000 (12:35 -0800)]
Merge branch 'for-linus/samsung' of git://git.fluff.org/bjdooks/linux
* 'for-linus/samsung' of git://git.fluff.org/bjdooks/linux:
ARM: S3C: Fix NAND device registration by s3c_nand_set_platdata().
ARM: S3C24XX: touchscreen device definition
ARM: mach-bast: add NAND_SCAN_SILENT_NODEV to optional devices
ARM: mach-osiris: add NAND_SCAN_SILENT_NODEV to optional devices
ARM: S3C24XX: touchscreen device definition
Eric W. Biederman [Sat, 2 Jan 2010 21:37:12 +0000 (13:37 -0800)]
sysfs: Add lockdep annotations for the sysfs active reference
Holding locks over device_del -> kobject_del -> sysfs_deactivate can
cause deadlocks if those same locks are grabbed in sysfs show or store
methods.
The I model s_active count + completion as a sleeping read/write lock.
I describe to lockdep sysfs_get_active as a read_trylock,
sysfs_put_active as a read_unlock, and sysfs_deactivate as a
write_lock and write_unlock pair. This seems to capture the essence
for purposes of finding deadlocks, and in my testing gives finds real
issues and ignores non-issues.
This brings us back to holding locks over kobject_del is a problem
that ideally we should find a way of addressing, but at least lockdep
can tell us about the problems instead of requiring developers to debug
rare strange system deadlocks, that happen when sysfs files are removed
while being written to.
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Acked-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Rusty Russell [Mon, 4 Jan 2010 08:56:14 +0000 (19:26 +1030)]
lguest: fix bug in setting guest GDT entry
We kill the guest, but then we blatt random stuff.
Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
Cc: stable@kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Mon, 4 Jan 2010 20:32:42 +0000 (12:32 -0800)]
Merge branch 'for-linus' of git://git390.marist.edu/linux-2.6
* 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6:
[S390] Update default configuration.
[S390] Have param.h simply include <asm-generic/param.h>.
[S390] qdio: convert global statistics to per-device stats
Linus Torvalds [Mon, 4 Jan 2010 20:32:09 +0000 (12:32 -0800)]
Merge branch 'sh/for-2.6.33' of git://git./linux/kernel/git/lethal/sh-2.6
* 'sh/for-2.6.33' of git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6:
binfmt_elf_fdpic: Fix build breakage introduced by coredump changes.
sh: update defconfigs.
sh: Don't default enable PMB support.
sh: Disable PMB for SH4AL-DSP CPUs.
sh: Only provide a PCLK definition for legacy CPG CPUs.
Linus Torvalds [Mon, 4 Jan 2010 20:31:52 +0000 (12:31 -0800)]
Merge branch 'for_linus' of git://git./linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: Calculate metadata requirements more accurately
ext4: Fix accounting of reserved metadata blocks
Alan Cox [Mon, 4 Jan 2010 16:19:55 +0000 (16:19 +0000)]
tosh: Use non bkl ioctl
We wrap the smm calls and other bits with the BKL push down as a
precaution but they can probably go
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Alan Cox [Mon, 4 Jan 2010 16:18:27 +0000 (16:18 +0000)]
i2o: propogate the BKL down into the ioctl method
Nobody seems to want to own I2O patches so sending this one directly.
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
John Kacur [Sun, 18 Oct 2009 21:49:49 +0000 (23:49 +0200)]
sony_pi: Remove the BKL from open and ioctl
The BKL is in this function because of the BKL pushdown (see commit
f8f2c79d594463427f7114cedb1555110d547d89)
It is not needed here because the mutex_lock sonypi_device.lock provides
the necessary locking.
sonypi_misc_ioctl can be converted to unlocked ioctls since it relies on
its own locking (the mutex sonypi_device.lock) and not the bkl
Document that llseek is not needed by explictly setting it to no_llseek
LKML-Reference: <alpine.LFD.2.00.
0910192019420.3563@localhost.localdomain>
Signed-off-by: John Kacur <jkacur@redhat.com>
Acked-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Mon, 4 Jan 2010 20:28:26 +0000 (12:28 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ryusuke/nilfs2
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:
nilfs2: update mailing list address
nilfs2: Storage class should be before const qualifier
nilfs2: trivial coding style fix
Manuel Lauss [Mon, 4 Jan 2010 15:29:49 +0000 (16:29 +0100)]
ASoC: fixup oops in generic AC97 codec glue
Initialize the glue by calling snd_soc_new_ac97_codec() as is done
in other ASoC AC97 codecs. Fixes an oops caused by dereferencing
uninitialized members in snd_soc_new_pcms().
Run-tested on Au1250.
Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com>
Acked-by: Liam Girdwood <lrg@slimlogic.co.uk>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Jiri Slaby [Thu, 19 Nov 2009 16:16:37 +0000 (17:16 +0100)]
resource: add helpers for fetching rlimits
We want to be sure that compiler fetches the limit variable only
once, so add helpers for fetching current and maximal resource
limits which do that.
Add them to sched.h (instead of resource.h) due to circular dependency
sched.h->resource.h->task_struct
Alternative would be to create a separate res_access.h or similar.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Cc: James Morris <jmorris@namei.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@elte.hu>
Jiri Slaby [Fri, 20 Nov 2009 13:16:33 +0000 (14:16 +0100)]
resource: move kernel function inside __KERNEL__
It is an internal function. Move it inside __KERNEL__ ifdef, along
with task_struct declaration.
Then we get:
--- /usr/include/linux/resource.h 2009-09-14 15:09:29.
000000000 +0200
+++ usr/include/linux/resource.h 2010-01-04 11:30:54.
000000000 +0100
@@ -3,8 +3,6 @@
#include <linux/time.h>
-struct task_struct;
-
/*
* Resource control/accounting header file for linux
*/
@@ -70,6 +68,5 @@
*/
#include <asm/resource.h>
-int getrusage(struct task_struct *p, int who, struct rusage *ru);
#endif
***********
include/linux/Kbuild is untouched, since unifdef is run even on
headers-y nowadays.
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
Jiri Slaby [Fri, 28 Aug 2009 08:47:16 +0000 (10:47 +0200)]
SECURITY: selinux, fix update_rlimit_cpu parameter
Don't pass current RLIMIT_RTTIME to update_rlimit_cpu() in
selinux_bprm_committing_creds, since update_rlimit_cpu expects
RLIMIT_CPU limit.
Use proper rlim[RLIMIT_CPU].rlim_cur instead to fix that.
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Acked-by: James Morris <jmorris@namei.org>
Cc: Stephen Smalley <sds@tycho.nsa.gov>
Cc: Eric Paris <eparis@parisplace.org>
Cc: David Howells <dhowells@redhat.com>
Martin Schwidefsky [Mon, 4 Jan 2010 08:05:44 +0000 (09:05 +0100)]
[S390] Update default configuration.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Robert P. J. Day [Mon, 4 Jan 2010 08:05:43 +0000 (09:05 +0100)]
[S390] Have param.h simply include <asm-generic/param.h>.
Since the files have identical content, might as well simplify.
Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Jan Glauber [Mon, 4 Jan 2010 08:05:42 +0000 (09:05 +0100)]
[S390] qdio: convert global statistics to per-device stats
Revamp the qdio performance statistics and move them from procfs to
debugfs using the seq_file interface. Since the statistics are not
intended for the general user the removal of /proc/qdio_perf should
not surprise anyone.
The per device statistics are disabled by default, writing 1 to
/<debugfs mountpoint>/qdio/<device bus ID>/statistics enables the
statistics for the given device.
Signed-off-by: Jan Glauber <jang@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Daisuke HATAYAMA [Mon, 4 Jan 2010 06:42:14 +0000 (15:42 +0900)]
binfmt_elf_fdpic: Fix build breakage introduced by coredump changes.
Commit
f6151dfea21496d43dbaba32cfcd9c9f404769bc introduces build
breakage, so this patch fixes it together with some printk formatting
cleanup.
Signed-off-by: Daisuke HATAYAMA <d.hatayama@jp.fujitsu.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Mon, 4 Jan 2010 06:38:50 +0000 (15:38 +0900)]
sh: update defconfigs.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Mon, 4 Jan 2010 02:16:33 +0000 (11:16 +0900)]
sh: Don't default enable PMB support.
This has the adverse effect of converting many 29bit configs to 32bit
mode, while this is a change that needs to be done manually for each
platform. Turn it off by default in order to cut down on spurious bug
reports.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Paul Mundt [Mon, 4 Jan 2010 02:13:54 +0000 (11:13 +0900)]
sh: Disable PMB for SH4AL-DSP CPUs.
While the PMB is available on SH-4A parts, SH4AL-DSP parts exclude it
altogether. As such, explicitly disable PMB support for these parts. If
this changes in the future for newer subtypes, this will have to be made
more fine-grained.
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Ben Dooks [Mon, 4 Jan 2010 00:32:54 +0000 (09:32 +0900)]
ARM: Merge s3c24xx-updates2
Merge branch 's3c24xx-updates2' into for-linus/samsung
Ben Dooks [Mon, 4 Jan 2010 00:32:37 +0000 (09:32 +0900)]
ARM: Merge next-simtec
Merge branch 'next-simtec' into for-linus/samsung
Linus Torvalds [Sat, 2 Jan 2010 19:17:05 +0000 (11:17 -0800)]
Merge branch 'reiserfs/kill-bkl' of git://git./linux/kernel/git/frederic/random-tracing
* 'reiserfs/kill-bkl' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:
reiserfs: Safely acquire i_mutex from xattr_rmdir
reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr
reiserfs: Fix journal mutex <-> inode mutex lock inversion
reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()
reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()
reiserfs: Relax reiserfs lock while freeing the journal
reiserfs: Fix reiserfs lock <-> i_mutex dependency inversion on xattr
reiserfs: Warn on lock relax if taken recursively
reiserfs: Fix reiserfs lock <-> i_xattr_sem dependency inversion
reiserfs: Fix remaining in-reclaim-fs <-> reclaim-fs-on locking inversion
reiserfs: Fix reiserfs lock <-> inode mutex dependency inversion
reiserfs: Fix reiserfs lock and journal lock inversion dependency
reiserfs: Fix possible recursive lock
Kusanagi Kouichi [Sat, 2 Jan 2010 04:36:09 +0000 (20:36 -0800)]
Documentation: Rename Documentation/DMA-mapping.txt
It seems that Documentation/DMA-mapping.txt was supposed to be renamed
to Documentation/PCI/PCI-DMA-mapping.txt.
Signed-off-by: Kusanagi Kouichi <slash@ac.auone-net.jp>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
H Hartley Sweeten [Sat, 2 Jan 2010 04:35:54 +0000 (20:35 -0800)]
DocBook: fix ioremap return type
ioremap() returns a void __iomem * not an unsigned long. Update the
Documentation file to reflect this.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
H Hartley Sweeten [Sat, 2 Jan 2010 04:35:41 +0000 (20:35 -0800)]
Documentation: fix ioremap return type
ioremap() returns a void __iomem * not a char *. Update the documentation
file to reflect this.
Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Jaswinder Singh Rajput [Sat, 2 Jan 2010 04:35:23 +0000 (20:35 -0800)]
writeback: add missing kernel-doc notation
Fix the following htmldocs warning:
Warning(fs/fs-writeback.c:255): No description found for parameter 'sb'
Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Jan Kara <jack@suse.cz>
Cc: Jens Axboe <jens.axboe@oracle.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Ryusuke Konishi [Sat, 2 Jan 2010 12:41:53 +0000 (21:41 +0900)]
nilfs2: update mailing list address
This replaces the list address for nilfs discussion to linux-nilfs at
vger.kernel.org from users at nilfs.org.
Signed-off-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Frederic Weisbecker [Wed, 30 Dec 2009 06:40:39 +0000 (07:40 +0100)]
reiserfs: Safely acquire i_mutex from xattr_rmdir
Relax the reiserfs lock before taking the inode mutex from
xattr_rmdir() to avoid the usual reiserfs lock <-> inode mutex
bad dependency.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 06:28:58 +0000 (07:28 +0100)]
reiserfs: Safely acquire i_mutex from reiserfs_for_each_xattr
Relax the reiserfs lock before taking the inode mutex from
reiserfs_for_each_xattr() to avoid the usual bad dependencies:
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-atom #179
-------------------------------------------------------
rm/3242 is trying to acquire lock:
(&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c11428ef>] reiserfs_for_each_xattr+0x23f/0x290
but task is already holding lock:
(&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c1143389>] reiserfs_write_lock+0x29/0x40
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&REISERFS_SB(s)->lock){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401aab>] mutex_lock_nested+0x5b/0x340
[<
c1143339>] reiserfs_write_lock_once+0x29/0x50
[<
c1117022>] reiserfs_lookup+0x62/0x140
[<
c10bd85f>] __lookup_hash+0xef/0x110
[<
c10bf21d>] lookup_one_len+0x8d/0xc0
[<
c1141e3a>] open_xa_dir+0xea/0x1b0
[<
c1142720>] reiserfs_for_each_xattr+0x70/0x290
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #0 (&sb->s_type->i_mutex_key#4/3){+.+.+.}:
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401aab>] mutex_lock_nested+0x5b/0x340
[<
c11428ef>] reiserfs_for_each_xattr+0x23f/0x290
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
other info that might help us debug this:
1 lock held by rm/3242:
#0: (&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c1143389>] reiserfs_write_lock+0x29/0x40
stack backtrace:
Pid: 3242, comm: rm Not tainted 2.6.32-atom #179
Call Trace:
[<
c13ffa13>] ? printk+0x18/0x1a
[<
c105d33a>] print_circular_bug+0xca/0xd0
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105c932>] ? mark_held_locks+0x62/0x80
[<
c105cc3b>] ? trace_hardirqs_on+0xb/0x10
[<
c1401098>] ? mutex_unlock+0x8/0x10
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c11428ef>] ? reiserfs_for_each_xattr+0x23f/0x290
[<
c11428ef>] ? reiserfs_for_each_xattr+0x23f/0x290
[<
c1401aab>] mutex_lock_nested+0x5b/0x340
[<
c11428ef>] ? reiserfs_for_each_xattr+0x23f/0x290
[<
c11428ef>] reiserfs_for_each_xattr+0x23f/0x290
[<
c1143180>] ? delete_one_xattr+0x0/0x100
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c1143339>] ? reiserfs_write_lock_once+0x29/0x50
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c11b0d4f>] ? _atomic_dec_and_lock+0x4f/0x70
[<
c111e990>] ? reiserfs_delete_inode+0x0/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c1401098>] ? mutex_unlock+0x8/0x10
[<
c10c3e0d>] ? vfs_readdir+0x7d/0xb0
[<
c10c3af0>] ? filldir64+0x0/0xf0
[<
c1002ef3>] ? sysenter_exit+0xf/0x16
[<
c105cbe4>] ? trace_hardirqs_on_caller+0x124/0x170
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 06:26:28 +0000 (07:26 +0100)]
reiserfs: Fix journal mutex <-> inode mutex lock inversion
We need to relax the reiserfs lock before locking the inode mutex
from xattr_unlink(), otherwise we'll face the usual bad dependencies:
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-atom #178
-------------------------------------------------------
rm/3202 is trying to acquire lock:
(&journal->j_mutex){+.+...}, at: [<
c113c234>] do_journal_begin_r+0x94/0x360
but task is already holding lock:
(&sb->s_type->i_mutex_key#4/2){+.+...}, at: [<
c1142a67>] xattr_unlink+0x57/0xb0
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #2 (&sb->s_type->i_mutex_key#4/2){+.+...}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a7b>] mutex_lock_nested+0x5b/0x340
[<
c1142a67>] xattr_unlink+0x57/0xb0
[<
c1143179>] delete_one_xattr+0x29/0x100
[<
c11427bb>] reiserfs_for_each_xattr+0x10b/0x290
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #1 (&REISERFS_SB(s)->lock){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a7b>] mutex_lock_nested+0x5b/0x340
[<
c1143359>] reiserfs_write_lock+0x29/0x40
[<
c113c23c>] do_journal_begin_r+0x9c/0x360
[<
c113c680>] journal_begin+0x80/0x130
[<
c1127363>] reiserfs_remount+0x223/0x4e0
[<
c10b6dd6>] do_remount_sb+0xa6/0x140
[<
c10ce6a0>] do_mount+0x560/0x750
[<
c10ce914>] sys_mount+0x84/0xb0
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #0 (&journal->j_mutex){+.+...}:
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a7b>] mutex_lock_nested+0x5b/0x340
[<
c113c234>] do_journal_begin_r+0x94/0x360
[<
c113c680>] journal_begin+0x80/0x130
[<
c1116d63>] reiserfs_unlink+0x83/0x2e0
[<
c1142a74>] xattr_unlink+0x64/0xb0
[<
c1143179>] delete_one_xattr+0x29/0x100
[<
c11427bb>] reiserfs_for_each_xattr+0x10b/0x290
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
other info that might help us debug this:
2 locks held by rm/3202:
#0: (&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c114274b>] reiserfs_for_each_xattr+0x9b/0x290
#1: (&sb->s_type->i_mutex_key#4/2){+.+...}, at: [<
c1142a67>] xattr_unlink+0x57/0xb0
stack backtrace:
Pid: 3202, comm: rm Not tainted 2.6.32-atom #178
Call Trace:
[<
c13ff9e3>] ? printk+0x18/0x1a
[<
c105d33a>] print_circular_bug+0xca/0xd0
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c1142a67>] ? xattr_unlink+0x57/0xb0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c113c234>] ? do_journal_begin_r+0x94/0x360
[<
c113c234>] ? do_journal_begin_r+0x94/0x360
[<
c1401a7b>] mutex_lock_nested+0x5b/0x340
[<
c113c234>] ? do_journal_begin_r+0x94/0x360
[<
c113c234>] do_journal_begin_r+0x94/0x360
[<
c10411b6>] ? run_timer_softirq+0x1a6/0x220
[<
c103cb00>] ? __do_softirq+0x50/0x140
[<
c113c680>] journal_begin+0x80/0x130
[<
c103cba2>] ? __do_softirq+0xf2/0x140
[<
c104f72f>] ? hrtimer_interrupt+0xdf/0x220
[<
c1116d63>] reiserfs_unlink+0x83/0x2e0
[<
c105c932>] ? mark_held_locks+0x62/0x80
[<
c11b8d08>] ? trace_hardirqs_on_thunk+0xc/0x10
[<
c1002fd8>] ? restore_all_notrace+0x0/0x18
[<
c1142a67>] ? xattr_unlink+0x57/0xb0
[<
c1142a74>] xattr_unlink+0x64/0xb0
[<
c1143179>] delete_one_xattr+0x29/0x100
[<
c11427bb>] reiserfs_for_each_xattr+0x10b/0x290
[<
c1143150>] ? delete_one_xattr+0x0/0x100
[<
c1401cb9>] ? mutex_lock_nested+0x299/0x340
[<
c11429ba>] reiserfs_delete_xattrs+0x1a/0x60
[<
c1143309>] ? reiserfs_write_lock_once+0x29/0x50
[<
c111ea2f>] reiserfs_delete_inode+0x9f/0x150
[<
c11b0d1f>] ? _atomic_dec_and_lock+0x4f/0x70
[<
c111e990>] ? reiserfs_delete_inode+0x0/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c1401068>] ? mutex_unlock+0x8/0x10
[<
c10c3e0d>] ? vfs_readdir+0x7d/0xb0
[<
c10c3af0>] ? filldir64+0x0/0xf0
[<
c1002ef3>] ? sysenter_exit+0xf/0x16
[<
c105cbe4>] ? trace_hardirqs_on_caller+0x124/0x170
[<
c10c0b13>] sys_unlinkat+0x23/0x40
[<
c1002ec4>] sysenter_do_call+0x12/0x32
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 06:12:03 +0000 (07:12 +0100)]
reiserfs: Fix unwanted recursive reiserfs lock in reiserfs_unlink()
reiserfs_unlink() may or may not be called under the reiserfs
lock.
But it also takes the reiserfs lock and can then acquire it
recursively which leads to do_journal_begin_r() that fails to
relax the reiserfs lock before grabbing the journal mutex,
creating an unexpected lock inversion.
We need to ensure reiserfs_unlink() won't get the reiserfs lock
recursively using reiserfs_write_lock_once().
This fixes the following warning that precedes a lock inversion
report (reiserfs lock <-> journal mutex).
------------[ cut here ]------------
WARNING: at fs/reiserfs/lock.c:95 reiserfs_lock_check_recursive+0x3a/0x50()
Hardware name: MS-7418
Unwanted recursive reiserfs lock!
Pid: 3208, comm: dbench Not tainted 2.6.32-atom #177
Call Trace:
[<
c114327a>] ? reiserfs_lock_check_recursive+0x3a/0x50
[<
c114327a>] ? reiserfs_lock_check_recursive+0x3a/0x50
[<
c10373a7>] warn_slowpath_common+0x67/0xc0
[<
c114327a>] ? reiserfs_lock_check_recursive+0x3a/0x50
[<
c1037446>] warn_slowpath_fmt+0x26/0x30
[<
c114327a>] reiserfs_lock_check_recursive+0x3a/0x50
[<
c113c213>] do_journal_begin_r+0x83/0x360
[<
c105eb16>] ? __lock_acquire+0x1296/0x19e0
[<
c1142a57>] ? xattr_unlink+0x57/0xb0
[<
c113c670>] journal_begin+0x80/0x130
[<
c1116d5d>] reiserfs_unlink+0x7d/0x2d0
[<
c1142a57>] ? xattr_unlink+0x57/0xb0
[<
c1142a57>] ? xattr_unlink+0x57/0xb0
[<
c1142a57>] ? xattr_unlink+0x57/0xb0
[<
c1142a64>] xattr_unlink+0x64/0xb0
[<
c1143169>] delete_one_xattr+0x29/0x100
[<
c11427ab>] reiserfs_for_each_xattr+0x10b/0x290
[<
c1143140>] ? delete_one_xattr+0x0/0x100
[<
c1401ca9>] ? mutex_lock_nested+0x299/0x340
[<
c11429aa>] reiserfs_delete_xattrs+0x1a/0x60
[<
c11432f9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c111ea1f>] reiserfs_delete_inode+0x9f/0x150
[<
c11b0d0f>] ? _atomic_dec_and_lock+0x4f/0x70
[<
c111e980>] ? reiserfs_delete_inode+0x0/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10505c6>] ? up_read+0x16/0x30
[<
c1022ab7>] ? do_page_fault+0x187/0x330
[<
c1002fd8>] ? restore_all_notrace+0x0/0x18
[<
c1022930>] ? do_page_fault+0x0/0x330
[<
c105cbe4>] ? trace_hardirqs_on_caller+0x124/0x170
[<
c10c0a00>] sys_unlink+0x10/0x20
[<
c1002ec4>] sysenter_do_call+0x12/0x32
---[ end trace
2e35d71a6cc69d0c ]---
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 06:03:53 +0000 (07:03 +0100)]
reiserfs: Relax lock before open xattr dir in reiserfs_xattr_set_handle()
We call xattr_lookup() from reiserfs_xattr_get(). We then hold
the reiserfs lock when we grab the i_mutex. But later, we may
relax the reiserfs lock, creating dependency inversion between
both locks.
The lookups and creation jobs ar already protected by the
inode mutex, so we can safely relax the reiserfs lock, dropping
the unwanted reiserfs lock -> i_mutex dependency, as shown
in the following lockdep report:
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-atom #173
-------------------------------------------------------
cp/3204 is trying to acquire lock:
(&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
but task is already holding lock:
(&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c1141e18>] open_xa_dir+0xd8/0x1b0
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&sb->s_type->i_mutex_key#4/3){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c1141d83>] open_xa_dir+0x43/0x1b0
[<
c1142722>] reiserfs_for_each_xattr+0x62/0x260
[<
c114299a>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea1f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0a00>] sys_unlink+0x10/0x20
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #0 (&REISERFS_SB(s)->lock){+.+.+.}:
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
[<
c1117012>] reiserfs_lookup+0x62/0x140
[<
c10bd85f>] __lookup_hash+0xef/0x110
[<
c10bf21d>] lookup_one_len+0x8d/0xc0
[<
c1141e2a>] open_xa_dir+0xea/0x1b0
[<
c1141fe5>] xattr_lookup+0x15/0x160
[<
c1142476>] reiserfs_xattr_get+0x56/0x2a0
[<
c1144042>] reiserfs_get_acl+0xa2/0x360
[<
c114461a>] reiserfs_cache_default_acl+0x3a/0x160
[<
c111789c>] reiserfs_mkdir+0x6c/0x2c0
[<
c10bea96>] vfs_mkdir+0xd6/0x180
[<
c10c0c10>] sys_mkdirat+0xc0/0xd0
[<
c10c0c40>] sys_mkdir+0x20/0x30
[<
c1002ec4>] sysenter_do_call+0x12/0x32
other info that might help us debug this:
2 locks held by cp/3204:
#0: (&sb->s_type->i_mutex_key#4/1){+.+.+.}, at: [<
c10bd8d6>] lookup_create+0x26/0xa0
#1: (&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c1141e18>] open_xa_dir+0xd8/0x1b0
stack backtrace:
Pid: 3204, comm: cp Not tainted 2.6.32-atom #173
Call Trace:
[<
c13ff993>] ? printk+0x18/0x1a
[<
c105d33a>] print_circular_bug+0xca/0xd0
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105d3aa>] ? check_usage+0x6a/0x460
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
[<
c1117012>] reiserfs_lookup+0x62/0x140
[<
c105ccca>] ? debug_check_no_locks_freed+0x8a/0x140
[<
c105cbe4>] ? trace_hardirqs_on_caller+0x124/0x170
[<
c10bd85f>] __lookup_hash+0xef/0x110
[<
c10bf21d>] lookup_one_len+0x8d/0xc0
[<
c1141e2a>] open_xa_dir+0xea/0x1b0
[<
c1141fe5>] xattr_lookup+0x15/0x160
[<
c1142476>] reiserfs_xattr_get+0x56/0x2a0
[<
c1144042>] reiserfs_get_acl+0xa2/0x360
[<
c10ca2e7>] ? new_inode+0x27/0xa0
[<
c114461a>] reiserfs_cache_default_acl+0x3a/0x160
[<
c1402eb7>] ? _spin_unlock+0x27/0x40
[<
c111789c>] reiserfs_mkdir+0x6c/0x2c0
[<
c10c7cb8>] ? __d_lookup+0x108/0x190
[<
c105c932>] ? mark_held_locks+0x62/0x80
[<
c1401c8d>] ? mutex_lock_nested+0x2bd/0x340
[<
c10bd17a>] ? generic_permission+0x1a/0xa0
[<
c11788fe>] ? security_inode_permission+0x1e/0x20
[<
c10bea96>] vfs_mkdir+0xd6/0x180
[<
c10c0c10>] sys_mkdirat+0xc0/0xd0
[<
c10505c6>] ? up_read+0x16/0x30
[<
c1002fd8>] ? restore_all_notrace+0x0/0x18
[<
c10c0c40>] sys_mkdir+0x20/0x30
[<
c1002ec4>] sysenter_do_call+0x12/0x32
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 04:56:08 +0000 (05:56 +0100)]
reiserfs: Relax reiserfs lock while freeing the journal
Keeping the reiserfs lock while freeing the journal on
umount path triggers a lock inversion between bdev->bd_mutex
and the reiserfs lock.
We don't need the reiserfs lock at this stage. The filesystem
is not usable anymore, and there are no more pending commits,
everything got flushed (even this operation was done in parallel
and didn't required the reiserfs lock from the current process).
This fixes the following lockdep report:
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-atom #172
-------------------------------------------------------
umount/3904 is trying to acquire lock:
(&bdev->bd_mutex){+.+.+.}, at: [<
c10de2c2>] __blkdev_put+0x22/0x160
but task is already holding lock:
(&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c1143279>] reiserfs_write_lock+0x29/0x40
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (&REISERFS_SB(s)->lock){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c140199b>] mutex_lock_nested+0x5b/0x340
[<
c1143229>] reiserfs_write_lock_once+0x29/0x50
[<
c111c485>] reiserfs_get_block+0x85/0x1620
[<
c10e1040>] do_mpage_readpage+0x1f0/0x6d0
[<
c10e1640>] mpage_readpages+0xc0/0x100
[<
c1119b89>] reiserfs_readpages+0x19/0x20
[<
c108f1ec>] __do_page_cache_readahead+0x1bc/0x260
[<
c108f2b8>] ra_submit+0x28/0x40
[<
c1087e3e>] filemap_fault+0x40e/0x420
[<
c109b5fd>] __do_fault+0x3d/0x430
[<
c109d47e>] handle_mm_fault+0x12e/0x790
[<
c1022a65>] do_page_fault+0x135/0x330
[<
c1403663>] error_code+0x6b/0x70
[<
c10ef9ca>] load_elf_binary+0x82a/0x1a10
[<
c10ba130>] search_binary_handler+0x90/0x1d0
[<
c10bb70f>] do_execve+0x1df/0x250
[<
c1001746>] sys_execve+0x46/0x70
[<
c1002fa5>] syscall_call+0x7/0xb
-> #2 (&mm->mmap_sem){++++++}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c109b1ab>] might_fault+0x8b/0xb0
[<
c11b8f52>] copy_to_user+0x32/0x70
[<
c10c3b94>] filldir64+0xa4/0xf0
[<
c1109116>] sysfs_readdir+0x116/0x210
[<
c10c3e1d>] vfs_readdir+0x8d/0xb0
[<
c10c3ea9>] sys_getdents64+0x69/0xb0
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #1 (sysfs_mutex){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c140199b>] mutex_lock_nested+0x5b/0x340
[<
c110951c>] sysfs_addrm_start+0x2c/0xb0
[<
c1109aa0>] create_dir+0x40/0x90
[<
c1109b1b>] sysfs_create_dir+0x2b/0x50
[<
c11b2352>] kobject_add_internal+0xc2/0x1b0
[<
c11b2531>] kobject_add_varg+0x31/0x50
[<
c11b25ac>] kobject_add+0x2c/0x60
[<
c1258294>] device_add+0x94/0x560
[<
c11036ea>] add_partition+0x18a/0x2a0
[<
c110418a>] rescan_partitions+0x33a/0x450
[<
c10de5bf>] __blkdev_get+0x12f/0x2d0
[<
c10de76a>] blkdev_get+0xa/0x10
[<
c11034b8>] register_disk+0x108/0x130
[<
c11a87a9>] add_disk+0xd9/0x130
[<
c12998e5>] sd_probe_async+0x105/0x1d0
[<
c10528af>] async_thread+0xcf/0x230
[<
c104bfd4>] kthread+0x74/0x80
[<
c1003aab>] kernel_thread_helper+0x7/0x3c
-> #0 (&bdev->bd_mutex){+.+.+.}:
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c140199b>] mutex_lock_nested+0x5b/0x340
[<
c10de2c2>] __blkdev_put+0x22/0x160
[<
c10de40a>] blkdev_put+0xa/0x10
[<
c113ce22>] free_journal_ram+0xd2/0x130
[<
c113ea18>] do_journal_release+0x98/0x190
[<
c113eb2a>] journal_release+0xa/0x10
[<
c1128eb6>] reiserfs_put_super+0x36/0x130
[<
c10b776f>] generic_shutdown_super+0x4f/0xe0
[<
c10b7825>] kill_block_super+0x25/0x40
[<
c11255df>] reiserfs_kill_sb+0x7f/0x90
[<
c10b7f4a>] deactivate_super+0x7a/0x90
[<
c10cccd8>] mntput_no_expire+0x98/0xd0
[<
c10ccfcc>] sys_umount+0x4c/0x310
[<
c10cd2a9>] sys_oldumount+0x19/0x20
[<
c1002ec4>] sysenter_do_call+0x12/0x32
other info that might help us debug this:
2 locks held by umount/3904:
#0: (&type->s_umount_key#30){+++++.}, at: [<
c10b7f45>] deactivate_super+0x75/0x90
#1: (&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c1143279>] reiserfs_write_lock+0x29/0x40
stack backtrace:
Pid: 3904, comm: umount Not tainted 2.6.32-atom #172
Call Trace:
[<
c13ff903>] ? printk+0x18/0x1a
[<
c105d33a>] print_circular_bug+0xca/0xd0
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c108b66f>] ? free_pcppages_bulk+0x1f/0x250
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c10de2c2>] ? __blkdev_put+0x22/0x160
[<
c10de2c2>] ? __blkdev_put+0x22/0x160
[<
c140199b>] mutex_lock_nested+0x5b/0x340
[<
c10de2c2>] ? __blkdev_put+0x22/0x160
[<
c105c932>] ? mark_held_locks+0x62/0x80
[<
c10afe12>] ? kfree+0x92/0xd0
[<
c10de2c2>] __blkdev_put+0x22/0x160
[<
c105cc3b>] ? trace_hardirqs_on+0xb/0x10
[<
c10de40a>] blkdev_put+0xa/0x10
[<
c113ce22>] free_journal_ram+0xd2/0x130
[<
c113ea18>] do_journal_release+0x98/0x190
[<
c113eb2a>] journal_release+0xa/0x10
[<
c1128eb6>] reiserfs_put_super+0x36/0x130
[<
c1050596>] ? up_write+0x16/0x30
[<
c10b776f>] generic_shutdown_super+0x4f/0xe0
[<
c10b7825>] kill_block_super+0x25/0x40
[<
c10f41e0>] ? vfs_quota_off+0x0/0x20
[<
c11255df>] reiserfs_kill_sb+0x7f/0x90
[<
c10b7f4a>] deactivate_super+0x7a/0x90
[<
c10cccd8>] mntput_no_expire+0x98/0xd0
[<
c10ccfcc>] sys_umount+0x4c/0x310
[<
c10cd2a9>] sys_oldumount+0x19/0x20
[<
c1002ec4>] sysenter_do_call+0x12/0x32
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 04:06:21 +0000 (05:06 +0100)]
reiserfs: Fix reiserfs lock <-> i_mutex dependency inversion on xattr
While deleting the xattrs of an inode, we hold the reiserfs lock
and grab the inode->i_mutex of the targeted inode and the root
private xattr directory.
Later on, we may relax the reiserfs lock for various reasons, this
creates inverted dependencies.
We can remove the reiserfs lock -> i_mutex dependency by relaxing
the former before calling open_xa_dir(). This is fine because the
lookup and creation of xattr private directories done in
open_xa_dir() are covered by the targeted inode mutexes. And deeper
operations in the tree are still done under the write lock.
This fixes the following lockdep report:
=======================================================
[ INFO: possible circular locking dependency detected ]
2.6.32-atom #173
-------------------------------------------------------
cp/3204 is trying to acquire lock:
(&REISERFS_SB(s)->lock){+.+.+.}, at: [<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
but task is already holding lock:
(&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c1141e18>] open_xa_dir+0xd8/0x1b0
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #1 (&sb->s_type->i_mutex_key#4/3){+.+.+.}:
[<
c105ea7f>] __lock_acquire+0x11ff/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c1141d83>] open_xa_dir+0x43/0x1b0
[<
c1142722>] reiserfs_for_each_xattr+0x62/0x260
[<
c114299a>] reiserfs_delete_xattrs+0x1a/0x60
[<
c111ea1f>] reiserfs_delete_inode+0x9f/0x150
[<
c10c9c32>] generic_delete_inode+0xa2/0x170
[<
c10c9d4f>] generic_drop_inode+0x4f/0x70
[<
c10c8b07>] iput+0x47/0x50
[<
c10c0965>] do_unlinkat+0xd5/0x160
[<
c10c0a00>] sys_unlink+0x10/0x20
[<
c1002ec4>] sysenter_do_call+0x12/0x32
-> #0 (&REISERFS_SB(s)->lock){+.+.+.}:
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
[<
c1117012>] reiserfs_lookup+0x62/0x140
[<
c10bd85f>] __lookup_hash+0xef/0x110
[<
c10bf21d>] lookup_one_len+0x8d/0xc0
[<
c1141e2a>] open_xa_dir+0xea/0x1b0
[<
c1141fe5>] xattr_lookup+0x15/0x160
[<
c1142476>] reiserfs_xattr_get+0x56/0x2a0
[<
c1144042>] reiserfs_get_acl+0xa2/0x360
[<
c114461a>] reiserfs_cache_default_acl+0x3a/0x160
[<
c111789c>] reiserfs_mkdir+0x6c/0x2c0
[<
c10bea96>] vfs_mkdir+0xd6/0x180
[<
c10c0c10>] sys_mkdirat+0xc0/0xd0
[<
c10c0c40>] sys_mkdir+0x20/0x30
[<
c1002ec4>] sysenter_do_call+0x12/0x32
other info that might help us debug this:
2 locks held by cp/3204:
#0: (&sb->s_type->i_mutex_key#4/1){+.+.+.}, at: [<
c10bd8d6>] lookup_create+0x26/0xa0
#1: (&sb->s_type->i_mutex_key#4/3){+.+.+.}, at: [<
c1141e18>] open_xa_dir+0xd8/0x1b0
stack backtrace:
Pid: 3204, comm: cp Not tainted 2.6.32-atom #173
Call Trace:
[<
c13ff993>] ? printk+0x18/0x1a
[<
c105d33a>] print_circular_bug+0xca/0xd0
[<
c105f176>] __lock_acquire+0x18f6/0x19e0
[<
c105d3aa>] ? check_usage+0x6a/0x460
[<
c105f2c8>] lock_acquire+0x68/0x90
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c1401a2b>] mutex_lock_nested+0x5b/0x340
[<
c11432b9>] ? reiserfs_write_lock_once+0x29/0x50
[<
c11432b9>] reiserfs_write_lock_once+0x29/0x50
[<
c1117012>] reiserfs_lookup+0x62/0x140
[<
c105ccca>] ? debug_check_no_locks_freed+0x8a/0x140
[<
c105cbe4>] ? trace_hardirqs_on_caller+0x124/0x170
[<
c10bd85f>] __lookup_hash+0xef/0x110
[<
c10bf21d>] lookup_one_len+0x8d/0xc0
[<
c1141e2a>] open_xa_dir+0xea/0x1b0
[<
c1141fe5>] xattr_lookup+0x15/0x160
[<
c1142476>] reiserfs_xattr_get+0x56/0x2a0
[<
c1144042>] reiserfs_get_acl+0xa2/0x360
[<
c10ca2e7>] ? new_inode+0x27/0xa0
[<
c114461a>] reiserfs_cache_default_acl+0x3a/0x160
[<
c1402eb7>] ? _spin_unlock+0x27/0x40
[<
c111789c>] reiserfs_mkdir+0x6c/0x2c0
[<
c10c7cb8>] ? __d_lookup+0x108/0x190
[<
c105c932>] ? mark_held_locks+0x62/0x80
[<
c1401c8d>] ? mutex_lock_nested+0x2bd/0x340
[<
c10bd17a>] ? generic_permission+0x1a/0xa0
[<
c11788fe>] ? security_inode_permission+0x1e/0x20
[<
c10bea96>] vfs_mkdir+0xd6/0x180
[<
c10c0c10>] sys_mkdirat+0xc0/0xd0
[<
c10505c6>] ? up_read+0x16/0x30
[<
c1002fd8>] ? restore_all_notrace+0x0/0x18
[<
c10c0c40>] sys_mkdir+0x20/0x30
[<
c1002ec4>] sysenter_do_call+0x12/0x32
v2: Don't drop reiserfs_mutex_lock_nested_safe() as we'll still
need it later
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Tested-by: Christian Kujau <lists@nerdbynature.de>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Wed, 30 Dec 2009 02:20:19 +0000 (03:20 +0100)]
reiserfs: Warn on lock relax if taken recursively
When we relax the reiserfs lock to avoid creating unwanted
dependencies against others locks while grabbing these,
we want to ensure it has not been taken recursively, otherwise
the lock won't be really relaxed. Only its depth will be decreased.
The unwanted dependency would then actually happen.
To prevent from that, add a reiserfs_lock_check_recursive() call
in the places that need it.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Tue, 29 Dec 2009 23:39:22 +0000 (00:39 +0100)]
reiserfs: Fix reiserfs lock <-> i_xattr_sem dependency inversion
i_xattr_sem depends on the reiserfs lock. But after we grab
i_xattr_sem, we may relax/relock the reiserfs lock while waiting
on a freezed filesystem, creating a dependency inversion between
the two locks.
In order to avoid the i_xattr_sem -> reiserfs lock dependency, let's
create a reiserfs_down_read_safe() that acts like
reiserfs_mutex_lock_safe(): relax the reiserfs lock while grabbing
another lock to avoid undesired dependencies induced by the
heivyweight reiserfs lock.
This fixes the following warning:
[ 990.005931] =======================================================
[ 990.012373] [ INFO: possible circular locking dependency detected ]
[ 990.013233] 2.6.33-rc1 #1
[ 990.013233] -------------------------------------------------------
[ 990.013233] dbench/1891 is trying to acquire lock:
[ 990.013233] (&REISERFS_SB(s)->lock){+.+.+.}, at: [<
ffffffff81159505>] reiserfs_write_lock+0x35/0x50
[ 990.013233]
[ 990.013233] but task is already holding lock:
[ 990.013233] (&REISERFS_I(inode)->i_xattr_sem){+.+.+.}, at: [<
ffffffff8115899a>] reiserfs_xattr_set_handle+0x8a/0x470
[ 990.013233]
[ 990.013233] which lock already depends on the new lock.
[ 990.013233]
[ 990.013233]
[ 990.013233] the existing dependency chain (in reverse order) is:
[ 990.013233]
[ 990.013233] -> #1 (&REISERFS_I(inode)->i_xattr_sem){+.+.+.}:
[ 990.013233] [<
ffffffff81063afc>] __lock_acquire+0xf9c/0x1560
[ 990.013233] [<
ffffffff8106414f>] lock_acquire+0x8f/0xb0
[ 990.013233] [<
ffffffff814ac194>] down_write+0x44/0x80
[ 990.013233] [<
ffffffff8115899a>] reiserfs_xattr_set_handle+0x8a/0x470
[ 990.013233] [<
ffffffff81158e30>] reiserfs_xattr_set+0xb0/0x150
[ 990.013233] [<
ffffffff8115a6aa>] user_set+0x8a/0x90
[ 990.013233] [<
ffffffff8115901a>] reiserfs_setxattr+0xaa/0xb0
[ 990.013233] [<
ffffffff810e2596>] __vfs_setxattr_noperm+0x36/0xa0
[ 990.013233] [<
ffffffff810e26bc>] vfs_setxattr+0xbc/0xc0
[ 990.013233] [<
ffffffff810e2780>] setxattr+0xc0/0x150
[ 990.013233] [<
ffffffff810e289d>] sys_fsetxattr+0x8d/0xa0
[ 990.013233] [<
ffffffff81002dab>] system_call_fastpath+0x16/0x1b
[ 990.013233]
[ 990.013233] -> #0 (&REISERFS_SB(s)->lock){+.+.+.}:
[ 990.013233] [<
ffffffff81063e30>] __lock_acquire+0x12d0/0x1560
[ 990.013233] [<
ffffffff8106414f>] lock_acquire+0x8f/0xb0
[ 990.013233] [<
ffffffff814aba77>] __mutex_lock_common+0x47/0x3b0
[ 990.013233] [<
ffffffff814abebe>] mutex_lock_nested+0x3e/0x50
[ 990.013233] [<
ffffffff81159505>] reiserfs_write_lock+0x35/0x50
[ 990.013233] [<
ffffffff811340e5>] reiserfs_prepare_write+0x45/0x180
[ 990.013233] [<
ffffffff81158bb6>] reiserfs_xattr_set_handle+0x2a6/0x470
[ 990.013233] [<
ffffffff81158e30>] reiserfs_xattr_set+0xb0/0x150
[ 990.013233] [<
ffffffff8115a6aa>] user_set+0x8a/0x90
[ 990.013233] [<
ffffffff8115901a>] reiserfs_setxattr+0xaa/0xb0
[ 990.013233] [<
ffffffff810e2596>] __vfs_setxattr_noperm+0x36/0xa0
[ 990.013233] [<
ffffffff810e26bc>] vfs_setxattr+0xbc/0xc0
[ 990.013233] [<
ffffffff810e2780>] setxattr+0xc0/0x150
[ 990.013233] [<
ffffffff810e289d>] sys_fsetxattr+0x8d/0xa0
[ 990.013233] [<
ffffffff81002dab>] system_call_fastpath+0x16/0x1b
[ 990.013233]
[ 990.013233] other info that might help us debug this:
[ 990.013233]
[ 990.013233] 2 locks held by dbench/1891:
[ 990.013233] #0: (&sb->s_type->i_mutex_key#12){+.+.+.}, at: [<
ffffffff810e2678>] vfs_setxattr+0x78/0xc0
[ 990.013233] #1: (&REISERFS_I(inode)->i_xattr_sem){+.+.+.}, at: [<
ffffffff8115899a>] reiserfs_xattr_set_handle+0x8a/0x470
[ 990.013233]
[ 990.013233] stack backtrace:
[ 990.013233] Pid: 1891, comm: dbench Not tainted 2.6.33-rc1 #1
[ 990.013233] Call Trace:
[ 990.013233] [<
ffffffff81061639>] print_circular_bug+0xe9/0xf0
[ 990.013233] [<
ffffffff81063e30>] __lock_acquire+0x12d0/0x1560
[ 990.013233] [<
ffffffff8115899a>] ? reiserfs_xattr_set_handle+0x8a/0x470
[ 990.013233] [<
ffffffff8106414f>] lock_acquire+0x8f/0xb0
[ 990.013233] [<
ffffffff81159505>] ? reiserfs_write_lock+0x35/0x50
[ 990.013233] [<
ffffffff8115899a>] ? reiserfs_xattr_set_handle+0x8a/0x470
[ 990.013233] [<
ffffffff814aba77>] __mutex_lock_common+0x47/0x3b0
[ 990.013233] [<
ffffffff81159505>] ? reiserfs_write_lock+0x35/0x50
[ 990.013233] [<
ffffffff81159505>] ? reiserfs_write_lock+0x35/0x50
[ 990.013233] [<
ffffffff81062592>] ? mark_held_locks+0x72/0xa0
[ 990.013233] [<
ffffffff814ab81d>] ? __mutex_unlock_slowpath+0xbd/0x140
[ 990.013233] [<
ffffffff810628ad>] ? trace_hardirqs_on_caller+0x14d/0x1a0
[ 990.013233] [<
ffffffff814abebe>] mutex_lock_nested+0x3e/0x50
[ 990.013233] [<
ffffffff81159505>] reiserfs_write_lock+0x35/0x50
[ 990.013233] [<
ffffffff811340e5>] reiserfs_prepare_write+0x45/0x180
[ 990.013233] [<
ffffffff81158bb6>] reiserfs_xattr_set_handle+0x2a6/0x470
[ 990.013233] [<
ffffffff81158e30>] reiserfs_xattr_set+0xb0/0x150
[ 990.013233] [<
ffffffff814abcb4>] ? __mutex_lock_common+0x284/0x3b0
[ 990.013233] [<
ffffffff8115a6aa>] user_set+0x8a/0x90
[ 990.013233] [<
ffffffff8115901a>] reiserfs_setxattr+0xaa/0xb0
[ 990.013233] [<
ffffffff810e2596>] __vfs_setxattr_noperm+0x36/0xa0
[ 990.013233] [<
ffffffff810e26bc>] vfs_setxattr+0xbc/0xc0
[ 990.013233] [<
ffffffff810e2780>] setxattr+0xc0/0x150
[ 990.013233] [<
ffffffff81056018>] ? sched_clock_cpu+0xb8/0x100
[ 990.013233] [<
ffffffff8105eded>] ? trace_hardirqs_off+0xd/0x10
[ 990.013233] [<
ffffffff810560a3>] ? cpu_clock+0x43/0x50
[ 990.013233] [<
ffffffff810c6820>] ? fget+0xb0/0x110
[ 990.013233] [<
ffffffff810c6770>] ? fget+0x0/0x110
[ 990.013233] [<
ffffffff81002ddc>] ? sysret_check+0x27/0x62
[ 990.013233] [<
ffffffff810e289d>] sys_fsetxattr+0x8d/0xa0
[ 990.013233] [<
ffffffff81002dab>] system_call_fastpath+0x16/0x1b
Reported-and-tested-by: Christian Kujau <lists@nerdbynature.de>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Alexander Beregalov <a.beregalov@gmail.com>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Ingo Molnar <mingo@elte.hu>
Theodore Ts'o [Fri, 1 Jan 2010 07:41:30 +0000 (02:41 -0500)]
ext4: Calculate metadata requirements more accurately
In the past, ext4_calc_metadata_amount(), and its sub-functions
ext4_ext_calc_metadata_amount() and ext4_indirect_calc_metadata_amount()
badly over-estimated the number of metadata blocks that might be
required for delayed allocation blocks. This didn't matter as much
when functions which managed the reserved metadata blocks were more
aggressive about dropping reserved metadata blocks as delayed
allocation blocks were written, but unfortunately they were too
aggressive. This was fixed in commit
0637c6f, but as a result the
over-estimation by ext4_calc_metadata_amount() would lead to reserving
2-3 times the number of pending delayed allocation blocks as
potentially required metadata blocks. So if there are 1 megabytes of
blocks which have been not yet been allocation, up to 3 megabytes of
space would get reserved out of the user's quota and from the file
system free space pool until all of the inode's data blocks have been
allocated.
This commit addresses this problem by much more accurately estimating
the number of metadata blocks that will be required. It will still
somewhat over-estimate the number of blocks needed, since it must make
a worst case estimate not knowing which physical blocks will be
needed, but it is much more accurate than before.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Theodore Ts'o [Fri, 1 Jan 2010 07:36:15 +0000 (02:36 -0500)]
ext4: Fix accounting of reserved metadata blocks
Commit
0637c6f had a typo which caused the reserved metadata blocks to
not be released correctly. Fix this.
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Linus Torvalds [Fri, 1 Jan 2010 01:26:05 +0000 (17:26 -0800)]
twl4030-irq.c: fix compiler warning due to raw-spinlock conversion
Commit
239007b844 ("genirq: Convert irq_desc.lock to raw_spinlock")
seems to have missed this driver, leaving it to use the normal spin-lock
functions for the irq descriptor lock, which is now a raw lock.
Reported-and-compile-tested-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Fri, 1 Jan 2010 00:44:43 +0000 (16:44 -0800)]
pci: avoid compiler warning in quirks.c
Introduced by commit
5b889bf23 ("PCI: Fix build if quirks are not
enabled"), which made the pci_dev_reset_methods[] array static and
'const', but didn't then change the code to match, and use a const
pointer when moving it to quirks.c.
Trivially fixed by just adding the required 'const' to the iterator
variable.
Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Thu, 31 Dec 2009 23:17:26 +0000 (15:17 -0800)]
Merge git://git./linux/kernel/git/sfrench/cifs-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
[CIFS] Enable mmap on forcedirectio mounts
cifs: NULL out tcon, pSesInfo, and srvTcp pointers when chasing DFS referrals
Linus Torvalds [Thu, 31 Dec 2009 20:01:24 +0000 (12:01 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ieee1394/linux1394-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6:
firewire, ieee1394: update Kconfig help
firewire, ieee1394: update MAINTAINERS entries
firewire: ohci: always use packet-per-buffer mode for isochronous reception
firewire: cdev: fix another memory leak in an error path
firewire: fix use of multiple AV/C devices, allow multiple FCP listeners
Comments from Stefan:
Distributors who still ship the old stack (ieee1394, ohci1394,
raw1394, sbp2, eth1394 and more) should now switch to the new one
(firewire-core, firewire-ohci, firewire-sbp2, firewire-net). In the
first iteration, those distributors might want to ship the old stack
also (but blacklisted) as a fallback for their users if unforeseen
problems with the newer replacement drivers are encountered.
The older FireWire stack contains several known problems which are
not going to be fixed; instead, those issues are addressed by the new
stack. An incomplete list of these issues is kept in bugzilla:
http://bugzilla.kernel.org/show_bug.cgi?id=10046
We have a guide on migration from the older to the newer stack:
http://ieee1394.wiki.kernel.org/index.php/Juju_Migration
Rafael J. Wysocki [Thu, 31 Dec 2009 18:06:35 +0000 (19:06 +0100)]
PCI: Fix build if quirks are not enabled
After commit
b9c3b266411d27f1a6466c19d146d08db576bfea ("PCI: support
device-specific reset methods") the kernel build is broken if
CONFIG_PCI_QUIRKS is unset.
Fix this by moving pci_dev_specific_reset() to drivers/pci/quirks.c and
providing an empty replacement for !CONFIG_PCI_QUIRKS builds.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Reported-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Thu, 31 Dec 2009 19:57:35 +0000 (11:57 -0800)]
Merge branch 'x86-fixes-for-linus-2' of git://git./linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
dma-debug: Fix bug causing build warning
Linus Torvalds [Thu, 31 Dec 2009 19:56:24 +0000 (11:56 -0800)]
Merge branch 'perf-fixes-for-linus-2' of git://git./linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf: Fix NULL deref in inheritance code
perf: Pass appropriate frame pointer to dump_trace()
Linus Torvalds [Thu, 31 Dec 2009 19:54:13 +0000 (11:54 -0800)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip
* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86/agp: Fix agp_amd64_init() initialization with CONFIG_GART_IOMMU enabled
x86: SGI UV: Fix writes to led registers on remote uv hubs
x86, kmemcheck: Use KERN_WARNING for error reporting
x86: Use KERN_DEFAULT log-level in __show_regs()
x86, compress: Force i386 instructions for the decompressor
x86/amd-iommu: Fix initialization failure panic
dma-debug: Do not add notifier when dma debugging is disabled.
x86: Fix objdump version check in chkobjdump.awk for different formats.
Trivial conflicts in arch/x86/include/asm/uv/uv_hub.h due to me having
applied an earlier version of an SGI UV fix.
Linus Torvalds [Thu, 31 Dec 2009 19:52:24 +0000 (11:52 -0800)]
Merge branch 'perf-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
perf kmem: Fix statistics typo
kprobes: Fix distinct type warning
perf: Rename perf_event_hw_event in design document
perf tools: Add missing header files to LIB_H Makefile variable
perf record: We should fork only if a program was specified to run
perf diff: Fix usage array, it must end with a NULL entry
Linus Torvalds [Thu, 31 Dec 2009 19:52:01 +0000 (11:52 -0800)]
Merge branch 'tracing-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip
* 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
tracing: Fix sign fields in ftrace_define_fields_##call()
tracing/syscalls: Fix typo in SYSCALL_DEFINE0
tracing/kprobe: Show sign of fields in trace_kprobe format files
ksym_tracer: Remove trace_stat
ksym_tracer: Fix race when incrementing count
ksym_tracer: Fix to allow writing newline to ksym_trace_filter
ksym_tracer: Fix to make the tracer work
tracing: Kconfig spelling fixes and cleanups
tracing: Fix setting tracer specific options
Documentation: Update ftrace-design.txt
Documentation: Update tracepoint-analysis.txt
Documentation: Update mmiotrace.txt
Linus Torvalds [Thu, 31 Dec 2009 19:12:35 +0000 (11:12 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: iforce - wait for command completion when closing the device
Input: twl4030-pwrbutton - switch to using threaded IRQ
Input: twl4030_keypad - switch to using threaded IRQ
Input: lifebook - add CONFIG_DMI dependency
Input: wistron - fix test for CONFIG_PM
Input: psmouse - fix compile warning in hgpk module
Input: matrix-keypad - handle cases when GPIOs can't be wakeup sources
Input: iforce - fix oops on device disconnect
Input: ff-memless - add notion of direction to for rumble effects
Input: ff-memless - another fix for signed to unsigned overflow
Input: ff-memless - start playing FF effects immediately
Input: serio - do not mark kseriod freezable anymore
Input: speed up suspend/shutdown for PS/2 mice and keyboards
Ingo Molnar [Thu, 31 Dec 2009 14:16:23 +0000 (15:16 +0100)]
dma-debug: Fix bug causing build warning
Stephen Rothwell reported the following build warning:
lib/dma-debug.c: In function 'dma_debug_device_change':
lib/dma-debug.c:680: warning: 'return' with no value, in function returning non-void
Introduced by commit
f797d9881b62c2ddb1d2e7bd80d87141949c84aa
("dma-debug: Do not add notifier when dma debugging is disabled").
Return 0 [notify-done] when disabled. (this is standard bus notifier behavior.)
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: <stable@kernel.org>
LKML-Reference: <
20091231125624.GA14666@liondog.tnic>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Peter Zijlstra [Wed, 30 Dec 2009 15:00:35 +0000 (16:00 +0100)]
perf: Fix NULL deref in inheritance code
Liming found a NULL deref when a task has a perf context but no
counters when it forks.
This can occur in two cases, a race during construction where
the fork hits after installing the context but before the first
counter gets inserted, or more reproducably, a fork after the
last counter is closed (which leaves the context around).
Reported-by: Wang Liming <liming.wang@windriver.com>
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
CC: <stable@kernel.org>
LKML-Reference: <
1262185684.7135.222.camel@laptop>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Frederic Weisbecker [Thu, 31 Dec 2009 04:53:02 +0000 (05:53 +0100)]
perf: Pass appropriate frame pointer to dump_trace()
Pass the frame pointer from the regs of the interrupted path
to dump_trace() while processing the stack trace.
Currently, dump_trace() takes the current bp and starts the
callchain from dump_trace() itself. This is wasteful because
we need to walk through the entire NMI/DEBUG stack before
retrieving the interrupted point.
We can fix that by just using the frame pointer from the
captured regs. It points exactly where we want to start.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <
1262235183-5320-1-git-send-regression-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Tao Ma [Thu, 3 Dec 2009 13:55:05 +0000 (21:55 +0800)]
ocfs2: Handle O_DIRECT when writing to a refcounted cluster.
In case of writing to a refcounted cluster with O_DIRECT,
we need to fall back to buffer write. And when it is finished,
we need to flush the page and the journal as we did for other
O_DIRECT writes.
This patch fix oss bug 1191.
http://oss.oracle.com/bugzilla/show_bug.cgi?id=1191
Signed-off-by: Tao Ma <tao.ma@oracle.com>
Tested-by: Tristan Ye <tristan.ye@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Linus Torvalds [Thu, 31 Dec 2009 00:00:24 +0000 (16:00 -0800)]
Merge branch 'release' of git://git./linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6:
ACPI: introduce kernel parameter acpi_sleep=sci_force_enable
ACPI: WMI: Survive BIOS with duplicate GUIDs
dell-wmi - fix condition to abort driver loading
wmi: check find_guid() return value to prevent oops
dell-wmi, hp-wmi, msi-wmi: check wmi_get_event_data() return value
ACPI: hp-wmi, msi-wmi: clarify that wmi_install_notify_handler() returns an acpi_status
dell-wmi: sys_init_module: 'dell_wmi'->init suspiciously returned 21, it should
ACPI video: correct error-handling code
ACPI video: no warning message if "acpi_backlight=vendor" is used
ACPI: fix ACPI=n allmodconfig build
thinkpad-acpi: improve Kconfig help text
thinkpad-acpi: update volume subdriver documentation
thinkpad-acpi: make volume subdriver optional
thinkpad-acpi: don't fail to load the entire module due to ALSA problems
thinkpad-acpi: don't take the first ALSA slot by default
Len Brown [Wed, 30 Dec 2009 23:32:32 +0000 (18:32 -0500)]
Merge branch 'resume-sci-force-bootparam' into release
Zhang Rui [Wed, 30 Dec 2009 07:36:42 +0000 (15:36 +0800)]
ACPI: introduce kernel parameter acpi_sleep=sci_force_enable
Introduce kernel parameter acpi_sleep=sci_force_enable
some laptop requires SCI_EN being set directly on resume,
or else they hung somewhere in the resume code path.
We already have a blacklist for these laptops but we still need
this option, especially when debugging some suspend/resume problems,
in case there are systems that need this workaround and are not yet
in the blacklist.
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
Acked-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Len Brown <len.brown@intel.com>
Linus Torvalds [Wed, 30 Dec 2009 21:46:29 +0000 (13:46 -0800)]
Merge branch 'fixes' of git://git./linux/kernel/git/djbw/async_tx
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/djbw/async_tx:
drivers/dma: Correct use after free
drivers/dma: drop unnecesary memset
ioat2,3: put channel hardware in known state at init
async_tx: expand async raid6 test to cover ioatdma corner case
ioat3: fix p-disabled q-continuation
sh: fix DMA driver's descriptor chaining and cookie assignment
dma: at_hdmac: correct incompatible type for argument 1 of 'spin_lock_bh'
Linus Torvalds [Wed, 30 Dec 2009 21:25:56 +0000 (13:25 -0800)]
Merge branch 'for_linus' of git://git./linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: Patch up how we claim metadata blocks for quota purposes
ext4: Ensure zeroout blocks have no dirty metadata
ext4: return correct wbc.nr_to_write in ext4_da_writepages
ext4: Update documentation to correct the inode_readahead_blks option name
jbd2: don't use __GFP_NOFAIL in journal_init_common()
ext4: flush delalloc blocks when space is low
fs-writeback: Add helper function to start writeback if idle
ext4: Eliminate potential double free on error path
ext4: fix unsigned long long printk warning in super.c
ext4, jbd2: Add barriers for file systems with exernal journals
ext4: replace BUG() with return -EIO in ext4_ext_get_blocks
ext4: add module aliases for ext2 and ext3
ext4: Don't ask about supporting ext2/3 in ext4 if ext4 is not configured
ext4: remove unused #include <linux/version.h>
Linus Torvalds [Wed, 30 Dec 2009 21:14:25 +0000 (13:14 -0800)]
Merge branch 'slab/urgent' of git://git./linux/kernel/git/penberg/slab-2.6
* 'slab/urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/slab-2.6:
SLAB: Fix lockdep annotation breakage
Linus Torvalds [Wed, 30 Dec 2009 21:13:24 +0000 (13:13 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/jbarnes/pci-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
PCI/cardbus: Add a fixup hook and fix powerpc
PCI: change PCI nomenclature in drivers/pci/ (non-comment changes)
PCI: change PCI nomenclature in drivers/pci/ (comment changes)
PCI: fix section mismatch on update_res()
PCI: add Intel 82599 Virtual Function specific reset method
PCI: add Intel USB specific reset method
PCI: support device-specific reset methods
PCI: Handle case when no pci device can provide cache line size hint
PCI/PM: Propagate wake-up enable for PCIe devices too
vgaarbiter: fix a typo in the vgaarbiter Documentation
Linus Torvalds [Wed, 30 Dec 2009 20:56:17 +0000 (12:56 -0800)]
Merge branch 'kvm-updates/2.6.33' of git://git./virt/kvm/kvm
* 'kvm-updates/2.6.33' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
KVM: get rid of kvm_create_vm() unused label warning on s390
KVM: powerpc: Fix mtsrin in book3s_64 mmu
KVM: ia64: fix build breakage due to host spinlock change
KVM: x86: Extend KVM_SET_VCPU_EVENTS with selective updates
KVM: LAPIC: make sure IRR bitmap is scanned after vm load
KVM: Fix possible circular locking in kvm_vm_ioctl_assign_device()
KVM: MMU: remove prefault from invlpg handler
Linus Torvalds [Wed, 30 Dec 2009 20:55:10 +0000 (12:55 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
ALSA: hda - Fix Oops at reloading beep devices
ALSA: hda - Don't cache beep controls
ALSA: Fix a typo in Procfile.txt
ALSA: sound/arm: Fix build failure caused by missing struct aaci definition
ALSA: hda - use snd_hda_jack_detect() again in patch_sigmatel.c
ALSA: hda - Disable tigger at pin-sensing on AD codecs
ALSA: hda - HDMI sticky stream tag support
ALSA: Fix indentation in pcm_native.c
Rolf Eike Beer [Sat, 26 Dec 2009 16:58:11 +0000 (17:58 +0100)]
kfifo: Fix typo in comment
It's DECLARE_KFIFO, not DECLARED_KFIFO.
Signed-off-by: Rolf Eike Beer <eike-kernel@sf-tec.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Wed, 30 Dec 2009 20:43:21 +0000 (12:43 -0800)]
Merge branch 'for-linus' of git://git.kernel.dk/linux-2.6-block
* 'for-linus' of git://git.kernel.dk/linux-2.6-block:
block: blk_rq_err_sectors cleanup
block: Honor the gfp_mask for alloc_page() in blkdev_issue_discard()
block: Fix incorrect alignment offset reporting and update documentation
cfq-iosched: don't regard requests with long distance as close
aoe: switch to the new bio_flush_dcache_pages() interface
drivers/block/mg_disk.c: use resource_size()
drivers/block/DAC960.c: use DAC960_V2_Controller
block: Fix topology stacking for data and discard alignment
drbd: remove unused #include <linux/version.h>
drbd: remove duplicated #include
drbd: Fix test of unsigned in _drbd_fault_random()
drbd: Constify struct file_operations
cfq-iosched: Remove prio_change logic for workload selection
cfq-iosched: Get rid of nr_groups
cfq-iosched: Remove the check for same cfq group from allow_merge
drbd: fix test of unsigned in _drbd_fault_random()
block: remove Documentation/block/as-iosched.txt
Len Brown [Wed, 30 Dec 2009 06:21:42 +0000 (01:21 -0500)]
dell-wmi: sys_init_module: 'dell_wmi'->init suspiciously returned 21, it should follow 0/-E convention
wmi_install_notify_handler() returns an acpi_error,
but dell_wmi_init() needs return a -errno style error.
Signed-off-by: Len Brown <len.brown@intel.com>
Tested-by: Paul Rolland <rol@as2917.net>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Paul Rolland [Wed, 30 Dec 2009 06:19:12 +0000 (01:19 -0500)]
wmi: check find_guid() return value to prevent oops
Signed-off-by: rol@as2917.net <Paul Rolland>
Signed-off-by: Len Brown <len.brown@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Linus Torvalds [Wed, 30 Dec 2009 20:39:19 +0000 (12:39 -0800)]
Merge branch 'for-linus' of git://neil.brown.name/md
* 'for-linus' of git://neil.brown.name/md:
md: allow a resync that is waiting for other resync to complete, to be aborted.
md: remove unnecessary code from do_md_run
md: make recovery started by do_md_run() visible via sync_action
md: fix small irregularity with start_ro module parameter
md: Fix unfortunate interaction with evms
Linus Torvalds [Wed, 30 Dec 2009 20:37:35 +0000 (12:37 -0800)]
Merge git://git./linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (74 commits)
Revert "b43: Enforce DMA descriptor memory constraints"
iwmc3200wifi: fix array out-of-boundary access
wl1251: timeout one too soon in wl1251_boot_run_firmware()
mac80211: fix propagation of failed hardware reconfigurations
mac80211: fix race with suspend and dynamic_ps_disable_work
ath9k: fix missed error codes in the tx status check
ath9k: wake hardware during AMPDU TX actions
ath9k: wake hardware for interface IBSS/AP/Mesh removal
ath9k: fix suspend by waking device prior to stop
cfg80211: fix error path in cfg80211_wext_siwscan
wl1271_cmd.c: cleanup char => u8
iwlwifi: Storage class should be before const qualifier
ath9k: Storage class should be before const qualifier
cfg80211: fix race between deauth and assoc response
wireless: remove remaining qual code
rt2x00: Add USB ID for Linksys WUSB 600N rev 2.
ath5k: fix SWI calibration interrupt storm
mac80211: fix ibss join with fixed-bssid
libertas: Remove carrier signaling from the scan code
orinoco: fix GFP_KERNEL in orinoco_set_key with interrupts disabled
...