<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/kernel, branch v3.0.5</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/kernel?h=v3.0.5</id>
<link rel='self' href='https://git.amat.us/linux/atom/kernel?h=v3.0.5'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-10-03T18:40:31Z</updated>
<entry>
<title>workqueue: lock cwq access in drain_workqueue</title>
<updated>2011-10-03T18:40:31Z</updated>
<author>
<name>Thomas Tuttle</name>
<email>ttuttle@chromium.org</email>
</author>
<published>2011-09-14T23:22:28Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d5b1a08d0d0a73c716766275eb0c5648e143ca85'/>
<id>urn:sha1:d5b1a08d0d0a73c716766275eb0c5648e143ca85</id>
<content type='text'>
commit fa2563e41c3d6d6e8af437643981ed28ae0cb56d upstream.

Take cwq-&gt;gcwq-&gt;lock to avoid racing between drain_workqueue checking to
make sure the workqueues are empty and cwq_dec_nr_in_flight decrementing
and then incrementing nr_active when it activates a delayed work.

We discovered this when a corner case in one of our drivers resulted in
us trying to destroy a workqueue in which the remaining work would
always requeue itself again in the same workqueue.  We would hit this
race condition and trip the BUG_ON on workqueue.c:3080.

Signed-off-by: Thomas Tuttle &lt;ttuttle@chromium.org&gt;
Acked-by: Tejun Heo &lt;tj@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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>genirq: Make irq_shutdown() symmetric vs. irq_startup again</title>
<updated>2011-10-03T18:40:27Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2011-09-11T11:59:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=79e72e1b97162d5f4d4ac320238b5cc82e97f040'/>
<id>urn:sha1:79e72e1b97162d5f4d4ac320238b5cc82e97f040</id>
<content type='text'>
commit ed585a651681e822089087b426e6ebfb6d3d9873 upstream.

If an irq_chip provides .irq_shutdown(), but neither of .irq_disable() or
.irq_mask(), free_irq() crashes when jumping to NULL.
Fix this by only trying .irq_disable() and .irq_mask() if there's no
.irq_shutdown() provided.

This revives the symmetry with irq_startup(), which tries .irq_startup(),
.irq_enable(), and irq_unmask(), and makes it consistent with the comment for
irq_chip.irq_shutdown() in &lt;linux/irq.h&gt;, which says:

 * @irq_shutdown:	shut down the interrupt (defaults to -&gt;disable if NULL)

This is also how __free_irq() behaved before the big overhaul, cfr. e.g.
3b56f0585fd4c02d047dc406668cb40159b2d340 ("genirq: Remove bogus conditional"),
where the core interrupt code always overrode .irq_shutdown() to
.irq_disable() if .irq_shutdown() was NULL.

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Cc: linux-m68k@lists.linux-m68k.org
Link: http://lkml.kernel.org/r/1315742394-16036-2-git-send-email-geert@linux-m68k.org
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>sched: Fix a memory leak in __sdt_free()</title>
<updated>2011-10-03T18:40:09Z</updated>
<author>
<name>WANG Cong</name>
<email>amwang@redhat.com</email>
</author>
<published>2011-08-18T12:36:57Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=70a4888b98f8fe19323a7a33d8d55be5d22513e8'/>
<id>urn:sha1:70a4888b98f8fe19323a7a33d8d55be5d22513e8</id>
<content type='text'>
commit feff8fa0075bdfd43c841e9d689ed81adda988d6 upstream.

This patch fixes the following memory leak:

unreferenced object 0xffff880107266800 (size 512):
  comm "sched-powersave", pid 3718, jiffies 4323097853 (age 27495.450s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [&lt;ffffffff81133940&gt;] create_object+0x187/0x28b
    [&lt;ffffffff814ac103&gt;] kmemleak_alloc+0x73/0x98
    [&lt;ffffffff811232ba&gt;] __kmalloc_node+0x104/0x159
    [&lt;ffffffff81044b98&gt;] kzalloc_node.clone.97+0x15/0x17
    [&lt;ffffffff8104cb90&gt;] build_sched_domains+0xb7/0x7f3
    [&lt;ffffffff8104d4df&gt;] partition_sched_domains+0x1db/0x24a
    [&lt;ffffffff8109ee4a&gt;] do_rebuild_sched_domains+0x3b/0x47
    [&lt;ffffffff810a00c7&gt;] rebuild_sched_domains+0x10/0x12
    [&lt;ffffffff8104d5ba&gt;] sched_power_savings_store+0x6c/0x7b
    [&lt;ffffffff8104d5df&gt;] sched_mc_power_savings_store+0x16/0x18
    [&lt;ffffffff8131322c&gt;] sysdev_class_store+0x20/0x22
    [&lt;ffffffff81193876&gt;] sysfs_write_file+0x108/0x144
    [&lt;ffffffff81135b10&gt;] vfs_write+0xaf/0x102
    [&lt;ffffffff81135d23&gt;] sys_write+0x4d/0x74
    [&lt;ffffffff814c8a42&gt;] system_call_fastpath+0x16/0x1b
    [&lt;ffffffffffffffff&gt;] 0xffffffffffffffff

Signed-off-by: WANG Cong &lt;amwang@redhat.com&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Link: http://lkml.kernel.org/r/1313671017-4112-1-git-send-email-amwang@redhat.com
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>sched: Move blk_schedule_flush_plug() out of __schedule()</title>
<updated>2011-10-03T18:40:09Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-22T17:47:01Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f4e97b682ac92d2aed3db68f396b022113d9ad30'/>
<id>urn:sha1:f4e97b682ac92d2aed3db68f396b022113d9ad30</id>
<content type='text'>
commit 9c40cef2b799f9b5e7fa5de4d2ad3a0168ba118c upstream.

There is no real reason to run blk_schedule_flush_plug() with
interrupts and preemption disabled.

Move it into schedule() and call it when the task is going voluntarily
to sleep. There might be false positives when the task is woken
between that call and actually scheduling, but that's not really
different from being woken immediately after switching away.

This fixes a deadlock in the scheduler where the
blk_schedule_flush_plug() callchain enables interrupts and thereby
allows a wakeup to happen of the task that's going to sleep.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/n/tip-dwfxtra7yg1b5r65m32ywtct@git.kernel.org
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>sched: Separate the scheduler entry for preemption</title>
<updated>2011-10-03T18:40:08Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-22T17:47:00Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=edbb7ce79e62d1028781b58337100108dc41471e'/>
<id>urn:sha1:edbb7ce79e62d1028781b58337100108dc41471e</id>
<content type='text'>
commit c259e01a1ec90063042f758e409cd26b2a0963c8 upstream.

Block-IO and workqueues call into notifier functions from the
scheduler core code with interrupts and preemption disabled. These
calls should be made before entering the scheduler core.

To simplify this, separate the scheduler core code into
__schedule(). __schedule() is directly called from the places which
set PREEMPT_ACTIVE and from schedule(). This allows us to add the work
checks into schedule(), so they are only called when a task voluntary
goes to sleep.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/r/20110622174918.813258321@linutronix.de
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>alarmtimers: Avoid possible denial of service with high freq periodic timers</title>
<updated>2011-10-03T18:40:07Z</updated>
<author>
<name>John Stultz</name>
<email>john.stultz@linaro.org</email>
</author>
<published>2011-08-10T17:26:09Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c3a44b4d23f4cb1b3eafb8c2c74d88f452d50a6d'/>
<id>urn:sha1:c3a44b4d23f4cb1b3eafb8c2c74d88f452d50a6d</id>
<content type='text'>
commit 6af7e471e5a7746b8024d70b4363d3dfe41d36b8 upstream.

Its possible to jam up the alarm timers by setting very small interval
timers, which will cause the alarmtimer subsystem to spend all of its time
firing and restarting timers. This can effectivly lock up a box.

A deeper fix is needed, closely mimicking the hrtimer code, but for now
just cap the interval to 100us to avoid userland hanging the system.

CC: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: John Stultz &lt;john.stultz@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>alarmtimers: Memset itimerspec passed into alarm_timer_get</title>
<updated>2011-10-03T18:40:07Z</updated>
<author>
<name>John Stultz</name>
<email>john.stultz@linaro.org</email>
</author>
<published>2011-08-04T14:51:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=0898dd1603e1dec711217b85329c031b30f81710'/>
<id>urn:sha1:0898dd1603e1dec711217b85329c031b30f81710</id>
<content type='text'>
commit ea7802f630d356acaf66b3c0b28c00a945fc35dc upstream.

Following common_timer_get, zero out the itimerspec passed in.

CC: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: John Stultz &lt;john.stultz@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>alarmtimers: Avoid possible null pointer traversal</title>
<updated>2011-10-03T18:40:06Z</updated>
<author>
<name>John Stultz</name>
<email>john.stultz@linaro.org</email>
</author>
<published>2011-08-04T14:25:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=26cf1a7ba1a6cc19d48c993bebd3be94c48af74a'/>
<id>urn:sha1:26cf1a7ba1a6cc19d48c993bebd3be94c48af74a</id>
<content type='text'>
commit 971c90bfa2f0b4fe52d6d9002178d547706f1343 upstream.

We don't check if old_setting is non null before assigning it, so
correct this.

CC: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: John Stultz &lt;john.stultz@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>kernel/printk: do not turn off bootconsole in printk_late_init() if keep_bootcon</title>
<updated>2011-10-03T18:39:46Z</updated>
<author>
<name>Nishanth Aravamudan</name>
<email>nacc@us.ibm.com</email>
</author>
<published>2011-08-25T22:59:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7f4e15693062aa1afcfc8f05f6790baf29bacfa3'/>
<id>urn:sha1:7f4e15693062aa1afcfc8f05f6790baf29bacfa3</id>
<content type='text'>
commit 4c30c6f566c0989ddaee3407da44751e340a63ed upstream.

It seems that 7bf693951a8e ("console: allow to retain boot console via
boot option keep_bootcon") doesn't always achieve what it aims, as when
printk_late_init() runs it unconditionally turns off all boot consoles.
With this patch, I am able to see more messages on the boot console in
KVM guests than I can without, when keep_bootcon is specified.

I think it is appropriate for the relevant -stable trees.  However, it's
more of an annoyance than a serious bug (ideally you don't need to keep
the boot console around as console handover should be working -- I was
encountering a situation where the console handover wasn't working and
not having the boot console available meant I couldn't see why).

Signed-off-by: Nishanth Aravamudan &lt;nacc@us.ibm.com&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Greg KH &lt;gregkh@suse.de&gt;
Acked-by: Fabio M. Di Nitto &lt;fdinitto@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;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>Add a personality to report 2.6.x version numbers</title>
<updated>2011-08-29T20:29:16Z</updated>
<author>
<name>Andi Kleen</name>
<email>ak@linux.intel.com</email>
</author>
<published>2011-08-19T23:15:10Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=512228f0be3af44bf5cf6cc5750ddd279bbedaf3'/>
<id>urn:sha1:512228f0be3af44bf5cf6cc5750ddd279bbedaf3</id>
<content type='text'>
commit be27425dcc516fd08245b047ea57f83b8f6f0903 upstream.

I ran into a couple of programs which broke with the new Linux 3.0
version.  Some of those were binary only.  I tried to use LD_PRELOAD to
work around it, but it was quite difficult and in one case impossible
because of a mix of 32bit and 64bit executables.

For example, all kind of management software from HP doesnt work, unless
we pretend to run a 2.6 kernel.

  $ uname -a
  Linux svivoipvnx001 3.0.0-08107-g97cd98f #1062 SMP Fri Aug 12 18:11:45 CEST 2011 i686 i686 i386 GNU/Linux

  $ hpacucli ctrl all show

  Error: No controllers detected.

  $ rpm -qf /usr/sbin/hpacucli
  hpacucli-8.75-12.0

Another notable case is that Python now reports "linux3" from
sys.platform(); which in turn can break things that were checking
sys.platform() == "linux2":

  https://bugzilla.mozilla.org/show_bug.cgi?id=664564

It seems pretty clear to me though it's a bug in the apps that are using
'==' instead of .startswith(), but this allows us to unbreak broken
programs.

This patch adds a UNAME26 personality that makes the kernel report a
2.6.40+x version number instead.  The x is the x in 3.x.

I know this is somewhat ugly, but I didn't find a better workaround, and
compatibility to existing programs is important.

Some programs also read /proc/sys/kernel/osrelease.  This can be worked
around in user space with mount --bind (and a mount namespace)

To use:

  wget ftp://ftp.kernel.org/pub/linux/kernel/people/ak/uname26/uname26.c
  gcc -o uname26 uname26.c
  ./uname26 program

Signed-off-by: Andi Kleen &lt;ak@linux.intel.com&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>
</feed>
