<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/kernel, branch v2.6.23.3</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.23.3</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v2.6.23.3'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2007-11-16T16:12:44Z</updated>
<entry>
<title>Fix compat futex hangs.</title>
<updated>2007-11-16T16:12:44Z</updated>
<author>
<name>David Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2007-11-13T07:59:05Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=59ddd4607313e7ee20b9ad36cd3b00f83068189a'/>
<id>urn:sha1:59ddd4607313e7ee20b9ad36cd3b00f83068189a</id>
<content type='text'>
[FUTEX]: Fix address computation in compat code.

[ Upstream commit: 3c5fd9c77d609b51c0bab682c9d40cbb496ec6f1 ]

compat_exit_robust_list() computes a pointer to the
futex entry in userspace as follows:

	(void __user *)entry + futex_offset

'entry' is a 'struct robust_list __user *', and
'futex_offset' is a 'compat_long_t' (typically a 's32').

Things explode if the 32-bit sign bit is set in futex_offset.

Type promotion sign extends futex_offset to a 64-bit value before
adding it to 'entry'.

This triggered a problem on sparc64 running 32-bit applications which
would lock up a cpu looping forever in the fault handling for the
userspace load in handle_futex_death().

Compat userspace runs with address masking (wherein the cpu zeros out
the top 32-bits of every effective address given to a memory operation
instruction) so the sparc64 fault handler accounts for this by
zero'ing out the top 32-bits of the fault address too.

Since the kernel properly uses the compat_uptr interfaces, kernel side
accesses to compat userspace work too since they will only use
addresses with the top 32-bit clear.

Because of this compat futex layer bug we get into the following loop
when executing the get_user() load near the top of handle_futex_death():

1) load from address '0xfffffffff7f16bd8', FAULT
2) fault handler clears upper 32-bits, processes fault
   for address '0xf7f16bd8' which succeeds
3) goto #1

I want to thank Bernd Zeimetz, Josip Rodin, and Fabio Massimo Di Nitto
for their tireless efforts helping me track down this bug.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>sched: keep utime/stime monotonic</title>
<updated>2007-11-16T16:12:44Z</updated>
<author>
<name>Frans Pop</name>
<email>elendil@planet.nl</email>
</author>
<published>2007-11-14T00:18:19Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e823c33c6f670beba3c14f4a451fd2b34c3eb40c'/>
<id>urn:sha1:e823c33c6f670beba3c14f4a451fd2b34c3eb40c</id>
<content type='text'>
sched: keep utime/stime monotonic

cpustats use utime/stime as a ratio against sum_exec_runtime, as a
consequence it can happen - when the ratio changes faster than time
accumulates - that either can be appear to go backwards.

Combined backport for 2.6.23 of the following patches from mainline:
commit 73a2bcb0edb9ffb0b007b3546b430e2c6e415eee
Author: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
  sched: keep utime/stime monotonic

commit 9301899be75b464ef097f0b5af7af6d9bd8f68a7
Author: Balbir Singh &lt;balbir@linux.vnet.ibm.com&gt;
  sched: fix /proc/&lt;PID&gt;/stat stime/utime monotonicity, part 2

Signed-off-by: Frans Pop &lt;elendil@planet.nl&gt;
CC: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
CC: Balbir Singh &lt;balbir@linux.vnet.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>fix the softlockup watchdog to actually work</title>
<updated>2007-11-16T16:12:43Z</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2007-10-17T06:18:38Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=436e61d93605a3a36902c9ee510b0ecba0d7d361'/>
<id>urn:sha1:436e61d93605a3a36902c9ee510b0ecba0d7d361</id>
<content type='text'>
patch a115d5caca1a2905ba7a32b408a6042b20179aaa in mainline.

this Xen related commit:

   commit 966812dc98e6a7fcdf759cbfa0efab77500a8868
   Author: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
   Date:   Tue May 8 00:28:02 2007 -0700

       Ignore stolen time in the softlockup watchdog

broke the softlockup watchdog to never report any lockups. (!)

print_timestamp defaults to 0, this makes the following condition
always true:

	if (print_timestamp &lt; (touch_timestamp + 1) ||

and we'll in essence never report soft lockups.

apparently the functionality of the soft lockup watchdog was never
actually tested with that patch applied ...

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>fix param_sysfs_builtin name length check</title>
<updated>2007-11-16T16:12:43Z</updated>
<author>
<name>Jan Kiszka</name>
<email>jan.kiszka@web.de</email>
</author>
<published>2007-11-15T01:00:08Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e8af293bb2f8cc44868a67e2af8010feaa7c309b'/>
<id>urn:sha1:e8af293bb2f8cc44868a67e2af8010feaa7c309b</id>
<content type='text'>
patch 22800a2830ec07e7cc5c837999890ac47cc7f5de in mainline.

Commit faf8c714f4508207a9c81cc94dafc76ed6680b44 caused a regression:
parameter names longer than MAX_KBUILD_MODNAME will now be rejected,
although we just need to keep the module name part that short.  This patch
restores the old behaviour while still avoiding that memchr is called with
its length parameter larger than the total string length.

Signed-off-by: Jan Kiszka &lt;jan.kiszka@web.de&gt;
Cc: Dave Young &lt;hidave.darkstar@gmail.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>param_sysfs_builtin memchr argument fix</title>
<updated>2007-11-16T16:12:42Z</updated>
<author>
<name>Dave Young</name>
<email>hidave.darkstar@gmail.com</email>
</author>
<published>2007-10-18T10:05:07Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=2b5ee2866a4a4781158986f21fdaa3395bc27d13'/>
<id>urn:sha1:2b5ee2866a4a4781158986f21fdaa3395bc27d13</id>
<content type='text'>
patch faf8c714f4508207a9c81cc94dafc76ed6680b44 in mainline.

If memchr argument is longer than strlen(kp-&gt;name), there will be some
weird result.

It will casuse duplicate filenames in sysfs for the "nousb".  kernel
warning messages are as bellow:

sysfs: duplicate filename 'usbcore' can not be created
WARNING: at fs/sysfs/dir.c:416 sysfs_add_one()
 [&lt;c01c4750&gt;] sysfs_add_one+0xa0/0xe0
 [&lt;c01c4ab8&gt;] create_dir+0x48/0xb0
 [&lt;c01c4b69&gt;] sysfs_create_dir+0x29/0x50
 [&lt;c024e0fb&gt;] create_dir+0x1b/0x50
 [&lt;c024e3b6&gt;] kobject_add+0x46/0x150
 [&lt;c024e2da&gt;] kobject_init+0x3a/0x80
 [&lt;c053b880&gt;] kernel_param_sysfs_setup+0x50/0xb0
 [&lt;c053b9ce&gt;] param_sysfs_builtin+0xee/0x130
 [&lt;c053ba33&gt;] param_sysfs_init+0x23/0x60
 [&lt;c024d062&gt;] __next_cpu+0x12/0x20
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052a856&gt;] do_initcalls+0x46/0x1e0
 [&lt;c01bdb12&gt;] create_proc_entry+0x52/0x90
 [&lt;c0158d4c&gt;] register_irq_proc+0x9c/0xc0
 [&lt;c01bda94&gt;] proc_mkdir_mode+0x34/0x50
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052aa92&gt;] kernel_init+0x62/0xb0
 [&lt;c0104f83&gt;] kernel_thread_helper+0x7/0x14
 =======================
kobject_add failed for usbcore with -EEXIST, don't try to register things with the same name in the same directory.
 [&lt;c024e466&gt;] kobject_add+0xf6/0x150
 [&lt;c053b880&gt;] kernel_param_sysfs_setup+0x50/0xb0
 [&lt;c053b9ce&gt;] param_sysfs_builtin+0xee/0x130
 [&lt;c053ba33&gt;] param_sysfs_init+0x23/0x60
 [&lt;c024d062&gt;] __next_cpu+0x12/0x20
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052a856&gt;] do_initcalls+0x46/0x1e0
 [&lt;c01bdb12&gt;] create_proc_entry+0x52/0x90
 [&lt;c0158d4c&gt;] register_irq_proc+0x9c/0xc0
 [&lt;c01bda94&gt;] proc_mkdir_mode+0x34/0x50
 [&lt;c052aa30&gt;] kernel_init+0x0/0xb0
 [&lt;c052aa92&gt;] kernel_init+0x62/0xb0
 [&lt;c0104f83&gt;] kernel_thread_helper+0x7/0x14
 =======================
Module 'usbcore' failed to be added to sysfs, error number -17
The system will be unstable now.

Signed-off-by: Dave Young &lt;hidave.darkstar@gmail.com&gt;
Cc: Greg KH &lt;greg@kroah.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>lockdep: fix mismatched lockdep_depth/curr_chain_hash</title>
<updated>2007-11-16T16:12:42Z</updated>
<author>
<name>Gregory Haskins</name>
<email>ghaskins@novell.com</email>
</author>
<published>2007-10-11T20:11:11Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=e354b801daa5649ae32e04b6e83d7f35fbde3490'/>
<id>urn:sha1:e354b801daa5649ae32e04b6e83d7f35fbde3490</id>
<content type='text'>
patch 3aa416b07f0adf01c090baab26fb70c35ec17623 in mainline.


 It is possible for the current-&gt;curr_chain_key to become inconsistent with the
 current index if the chain fails to validate.  The end result is that future
 lock_acquire() operations may inadvertently fail to find a hit in the cache
 resulting in a new node being added to the graph for every acquire.

Signed-off-by: Gregory Haskins &lt;ghaskins@novell.com&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Chuck Ebbert &lt;cebbert@redhat.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>fix bogus reporting of signals by audit</title>
<updated>2007-10-07T23:28:43Z</updated>
<author>
<name>Al Viro</name>
<email>viro@ftp.linux.org.uk</email>
</author>
<published>2007-10-07T07:24:36Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=291041e935e6d0513f2b7e4a300aa9f02ec1d925'/>
<id>urn:sha1:291041e935e6d0513f2b7e4a300aa9f02ec1d925</id>
<content type='text'>
Async signals should not be reported as sent by current in audit log.  As
it is, we call audit_signal_info() too early in check_kill_permission().
Note that check_kill_permission() has that test already - it needs to know
if it should apply current-based permission checks.  So the solution is to
move the call of audit_signal_info() between those.

Bogosity in question is easily reproduced - add a rule watching for e.g.
kill(2) from specific process (so that audit_signal_info() would not
short-circuit to nothing), say load_policy, watch the bogus OBJ_PID entry
in audit logs claiming that write(2) on selinuxfs file issued by
load_policy(8) had somehow managed to send a signal to syslogd...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
Acked-by: Steve Grubb &lt;sgrubb@redhat.com&gt;
Acked-by: Eric Paris &lt;eparis@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Fix timer_stats printout of events/sec</title>
<updated>2007-10-07T23:28:43Z</updated>
<author>
<name>Anton Blanchard</name>
<email>anton@samba.org</email>
</author>
<published>2007-10-07T07:24:31Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=74922be1485818ed368c4cf4f0b100f70bf01e08'/>
<id>urn:sha1:74922be1485818ed368c4cf4f0b100f70bf01e08</id>
<content type='text'>
When using /proc/timer_stats on ppc64 I noticed the events/sec field wasnt
accurate.  Sometimes the integer part was incorrect due to rounding (we
werent taking the fractional seconds into consideration).

The fraction part is also wrong, we need to pad the printf statement and
take the bottom three digits of 1000 times the value.

Signed-off-by: Anton Blanchard &lt;anton@samba.org&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>sched: fix profile=sleep</title>
<updated>2007-10-02T12:13:08Z</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2007-10-02T12:13:08Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=30084fbd1caa4b2e1a336fcdef60b68129d1d8f8'/>
<id>urn:sha1:30084fbd1caa4b2e1a336fcdef60b68129d1d8f8</id>
<content type='text'>
fix sleep profiling - we lost this chunk in the CFS merge.

Found-by: Mel Gorman &lt;mel@csn.ul.ie&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>robust futex thread exit race</title>
<updated>2007-10-01T14:52:23Z</updated>
<author>
<name>Martin Schwidefsky</name>
<email>schwidefsky@de.ibm.com</email>
</author>
<published>2007-10-01T08:20:13Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=9f96cb1e8bca179a92afa40dfc3c49990f1cfc71'/>
<id>urn:sha1:9f96cb1e8bca179a92afa40dfc3c49990f1cfc71</id>
<content type='text'>
Calling handle_futex_death in exit_robust_list for the different robust
mutexes of a thread basically frees the mutex.  Another thread might grab
the lock immediately which updates the next pointer of the mutex.
fetch_robust_entry over the next pointer might therefore branch into the
robust mutex list of a different thread.  This can cause two problems: 1)
some mutexes held by the dead thread are not getting freed and 2) some
mutexs held by a different thread are freed.

The next point need to be read before calling handle_futex_death.

Signed-off-by: Martin Schwidefsky &lt;schwidefsky@de.ibm.com&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Acked-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
</feed>
