13 years agoMerge branch 'i2c-fix' of git://
Linus Torvalds [Thu, 3 Jul 2008 02:26:38 +0000 (19:26 -0700)]
Merge branch 'i2c-fix' of git://

* 'i2c-fix' of git://
  I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device.
  I2C: S3C2410: Fixup error codes returned rom a transfer.
  I2C: S3C2410: Check ACK on byte transmission

13 years agoMerge branch 'for-2.6.26' of git://
Linus Torvalds [Thu, 3 Jul 2008 02:25:36 +0000 (19:25 -0700)]
Merge branch 'for-2.6.26' of git://

* 'for-2.6.26' of git://
  Properly notify block layer of sync writes
  block: Fix the starving writes bug in the anticipatory IO scheduler

13 years agoMerge branch 'release' of git://
Linus Torvalds [Thu, 3 Jul 2008 02:24:48 +0000 (19:24 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/aegl/linux-2.6

* 'release' of git://
  [IA64] export account_system_vtime
  [IA64] Bugfix for system with 32 cpus

13 years agoMerge git://
Linus Torvalds [Thu, 3 Jul 2008 02:23:52 +0000 (19:23 -0700)]
Merge git://git./linux/kernel/git/mchehab/v4l-dvb

* git://
  V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if uvc is selected
  V4L/DVB (8145a): USB Video Class driver

13 years agoMerge git://
Linus Torvalds [Thu, 3 Jul 2008 02:22:54 +0000 (19:22 -0700)]
Merge git://git./linux/kernel/git/bart/ide-2.6

* git://
  ide: fix /proc/ide/ide?/mate reporting
  Revert "BAST: Remove old IDE driver"

13 years agoMerge
Linus Torvalds [Thu, 3 Jul 2008 02:22:25 +0000 (19:22 -0700)]

  [ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off
  [ARM] 5117/1: pxafb: fix __devinit/exit annotations
  [ARM] Export dma_sync_sg_for_device()
  [ARM] 5109/1: Mark rtc sa1100 driver as wakeup source before registering it
  [ARM] 5116/1: pxafb: cleanup and fix order of failure handling
  [ARM] 5115/1: pxafb: fix ifdef for command line option handling
  ARM: OMAP: Correcting the gpmc prefetch control register address
  ARM: OMAP: DMA: Don't mark channel active in omap_enable_channel_irq

13 years agotty: Fix inverted logic in send_break
Alan Cox [Mon, 30 Jun 2008 16:40:08 +0000 (17:40 +0100)]
tty: Fix inverted logic in send_break

Not sure how this came to get inverted but it appears to have been my
mess up.

Signed-off-by: Alan Cox <>
Signed-off-by: Linus Torvalds <>
13 years agoMerge branch 'sched-fixes-for-linus' of git://
Linus Torvalds [Thu, 3 Jul 2008 02:12:53 +0000 (19:12 -0700)]
Merge branch 'sched-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'sched-fixes-for-linus' of git://
  sched: fix divide error when trying to configure rt_period to zero

13 years agoMerge branch 'i2c-for-linus' of git://
Linus Torvalds [Thu, 3 Jul 2008 02:00:29 +0000 (19:00 -0700)]
Merge branch 'i2c-for-linus' of git://

* 'i2c-for-linus' of git://
  i2c: Fix bad hint about irqs in i2c.h
  i2c: Documentation: fix device matching description

13 years agoMerge branch 'core-fixes-for-linus' of git://
Linus Torvalds [Thu, 3 Jul 2008 01:59:45 +0000 (18:59 -0700)]
Merge branch 'core-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://
  rcu: fix hotplug vs rcu race

13 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Thu, 3 Jul 2008 01:58:56 +0000 (18:58 -0700)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://
  x86: fix NODES_SHIFT Kconfig range

13 years agoMerge git://
Linus Torvalds [Thu, 3 Jul 2008 01:57:33 +0000 (18:57 -0700)]
Merge git://git./linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git://
  [SCSI] esp: tidy up target reference counting
  [SCSI] esp: Fix OOPS in esp_reset_cleanup().
  [SCSI] ses: Fix timeout

13 years agoMerge git://
Linus Torvalds [Thu, 3 Jul 2008 01:55:17 +0000 (18:55 -0700)]
Merge git://git./linux/kernel/git/agk/linux-2.6-dm

* git://
  dm crypt: use cond_resched

13 years agoMerge branch 'for-2.6.26' of git://
Linus Torvalds [Thu, 3 Jul 2008 01:47:10 +0000 (18:47 -0700)]
Merge branch 'for-2.6.26' of git://

* 'for-2.6.26' of git://
  Fix error paths if md_probe fails.
  Don't acknowlege that stripe-expand is complete until it really is.
  Ensure interrupted recovery completed properly (v1 metadata plus bitmap)

13 years agoMerge branch 'merge' of git://
Linus Torvalds [Thu, 3 Jul 2008 01:45:29 +0000 (18:45 -0700)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  powerpc/mpc5200: Fix lite5200b suspend/resume
  powerpc/legacy_serial: Bail if reg-offset/shift properties are present
  powerpc/bootwrapper: update for initrd with simpleImage

13 years agoMerge git://
Linus Torvalds [Thu, 3 Jul 2008 01:43:16 +0000 (18:43 -0700)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git:// (55 commits)
  net: fib_rules: fix error code for unsupported families
  netdevice: Fix wrong string handle in kernel command line parsing
  net: Tyop of sk_filter() comment
  netlink: Unneeded local variable
  net-sched: fix filter destruction in atm/hfsc qdisc destruction
  net-sched: change tcf_destroy_chain() to clear start of filter list
  ipv4: fix sysctl documentation of time related values
  mac80211: don't accept WEP keys other than WEP40 and WEP104
  hostap: fix sparse warnings
  hostap: don't report useless WDS frames by default
  textsearch: fix Boyer-Moore text search bug
  netfilter: nf_conntrack_tcp: fixing to check the lower bound of valid ACK
  ipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags.
  netlabel: Fix a problem when dumping the default IPv6 static labels
  net/inet_lro: remove setting skb->ip_summed when not LRO-able
  inet fragments: fix race between inet_frag_find and inet_frag_secret_rebuild
  CONNECTOR: add a proc entry to list connectors
  netlink: Fix some doc comments in net/netlink/attr.c
  tcp: /proc/net/tcp rto,ato values not scaled properly (v2)
  include/linux/netdevice.h: don't export MAX_HEADER to userspace

13 years agoDRM/i915: only use tiled blits on 965+
Jesse Barnes [Tue, 1 Jul 2008 19:32:52 +0000 (12:32 -0700)]
DRM/i915: only use tiled blits on 965+

When scheduled swaps occur, we need to blit between front & back
buffers.  If the buffers are tiled, we need to set the appropriate
XY_SRC_COPY tile bit, but only on 965 chips, since it will cause
corruption on pre-965 (e.g. 945).

Bug reported by and fix tested by Tomas Janousek <>.

Signed-off-by: Jesse Barnes <>
Acked-by: Dave Airlie <>
Signed-off-by: Linus Torvalds <>
13 years agodrivers/input/ff-core.c needs <linux/sched.h>
Geert Uytterhoeven [Tue, 1 Jul 2008 11:55:25 +0000 (13:55 +0200)]
drivers/input/ff-core.c needs <linux/sched.h>

Commit 656acd2bbc4ce7f224de499ee255698701396c48 ("Input: fix locking in
force-feedback core") causes the following regression on m68k:

| linux/drivers/input/ff-core.c: In function 'input_ff_upload':
| linux/drivers/input/ff-core.c:172: error: dereferencing pointer to incomplete type
| linux/drivers/input/ff-core.c: In function 'erase_effect':
| linux/drivers/input/ff-core.c:197: error: dereferencing pointer to incomplete type
| linux/drivers/input/ff-core.c:204: error: dereferencing pointer to incomplete type
| make[4]: *** [drivers/input/ff-core.o] Error 1

As the incomplete type is `struct task_struct', including <linux/sched.h> fixes

Signed-off-by: Geert Uytterhoeven <>
Acked-by: Dmitry Torokhov <>
Signed-off-by: Linus Torvalds <>
13 years agoMerge branch 'for-2.6.26' of git:// into merge
Paul Mackerras [Thu, 3 Jul 2008 00:05:59 +0000 (10:05 +1000)]
Merge branch 'for-2.6.26' of git:// into merge

13 years agoV4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if uvc is selected
Mauro Carvalho Chehab [Wed, 2 Jul 2008 14:03:33 +0000 (11:03 -0300)]
V4L/DVB (8178): uvc: Fix compilation breakage for the other drivers, if uvc is selected

UVC makefile defines obj as:
obj-$(CONFIG_USB_VIDEO_CLASS) := uvcvideo.o
Instead of:
obj-$(CONFIG_USB_VIDEO_CLASS) += uvcvideo.o

Due to that, if uvc is selected, all obj-y or obj-m that were added to
compilation were forget. This breaks a proper kernel build.

Acked-by: Laurent Pinchart <>
Signed-off-by: Mauro Carvalho Chehab <>
13 years agodm crypt: use cond_resched
Milan Broz [Wed, 2 Jul 2008 08:34:28 +0000 (09:34 +0100)]
dm crypt: use cond_resched

Add cond_resched() to prevent monopolising CPU when processing large bios.

dm-crypt processes encryption of bios in sector units.  If the bio request
is big it can spend a long time in the encryption call.

Signed-off-by: Milan Broz <>
Tested-by: Yan Li <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Alasdair G Kergon <>
13 years agonet: fib_rules: fix error code for unsupported families
Patrick McHardy [Wed, 2 Jul 2008 02:59:37 +0000 (19:59 -0700)]
net: fib_rules: fix error code for unsupported families

The errno code returned must be negative.

Fixes "RTNETLINK answers: Unknown error 18446744073709551519".

Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
13 years agonetdevice: Fix wrong string handle in kernel command line parsing
Wang Chen [Wed, 2 Jul 2008 02:57:19 +0000 (19:57 -0700)]
netdevice: Fix wrong string handle in kernel command line parsing

v1->v2: Use strlcpy() to ensure s[i].name be null-termination.

1. In netdev_boot_setup_add(), a long name will leak.
   ex. : dev=21,0x1234,0x1234,0x2345,eth123456789verylongname.........
2. In netdev_boot_setup_check(), mismatch will happen if s[i].name
   is a substring of dev->name.
   ex. : dev=...eth1 dev=...eth11

[ With feedback from Ben Hutchings. ]

Signed-off-by: Wang Chen <>
Signed-off-by: David S. Miller <>
13 years agonet: Tyop of sk_filter() comment
Wang Chen [Wed, 2 Jul 2008 02:55:40 +0000 (19:55 -0700)]
net: Tyop of sk_filter() comment

Parameter "needlock" no long exists.

Signed-off-by: Wang Chen <>
Signed-off-by: David S. Miller <>
13 years agonetlink: Unneeded local variable
Wang Chen [Wed, 2 Jul 2008 02:55:09 +0000 (19:55 -0700)]
netlink: Unneeded local variable

We already have a variable, which has the same capability.

Signed-off-by: Wang Chen <>
Signed-off-by: David S. Miller <>
13 years agonet-sched: fix filter destruction in atm/hfsc qdisc destruction
Patrick McHardy [Wed, 2 Jul 2008 02:53:09 +0000 (19:53 -0700)]
net-sched: fix filter destruction in atm/hfsc qdisc destruction

Filters need to be destroyed before beginning to destroy classes
since the destination class needs to still be alive to unbind the

Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
13 years agonet-sched: change tcf_destroy_chain() to clear start of filter list
Patrick McHardy [Wed, 2 Jul 2008 02:52:38 +0000 (19:52 -0700)]
net-sched: change tcf_destroy_chain() to clear start of filter list

Pass double tcf_proto pointers to tcf_destroy_chain() to make it
clear the start of the filter list for more consistency.

Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
13 years agoipv4: fix sysctl documentation of time related values
Stephen Hemminger [Wed, 2 Jul 2008 00:22:48 +0000 (17:22 -0700)]
ipv4: fix sysctl documentation of time related values

These sysctl values are time related and all use the same routine
(proc_dointvec_jiffies) that internally converts from seconds to jiffies.
The code is fine, the documentation is just wrong.

Signed-off-by: Stephen Hemminger <>
Signed-off-by: David S. Miller <>
13 years agopowerpc/mpc5200: Fix lite5200b suspend/resume
Tim Yamin [Tue, 17 Jun 2008 08:33:14 +0000 (09:33 +0100)]
powerpc/mpc5200: Fix lite5200b suspend/resume

Suspend/resume ("echo mem > /sys/power/state") does not work with
vanilla kernels -- the system does not suspend correctly and just
hangs. This patch fixes this so suspend/resume works:

1) of_iomap does not map the whole 0xC000 of the MPC5200 immr so
saving registers does not work.
2) PCI registers need to be saved and restored.

Signed-off-by: Tim Yamin <>
Signed-off-by: Grant Likely <>
13 years agopowerpc/legacy_serial: Bail if reg-offset/shift properties are present
John Linn [Tue, 1 Jul 2008 17:52:41 +0000 (10:52 -0700)]
powerpc/legacy_serial: Bail if reg-offset/shift properties are present

The legacy serial driver does not work with an 8250 type UART that is
described in the device tree with the reg-offset and reg-shift
properties.  This change makes legacy_serial ignore these devices.

Signed-off-by: John Linn <>
Signed-off-by: Grant Likely <>
13 years agoi2c: Fix bad hint about irqs in i2c.h
Wolfram Sang [Tue, 1 Jul 2008 20:38:18 +0000 (22:38 +0200)]
i2c: Fix bad hint about irqs in i2c.h

i2c.h mentions -1 as a not-issued irq. This false hint was taken by
of_i2c and caused crashes. Don't give any advice as 'no irq' is not
consistent across all architectures yet and it is not needed internally
by the i2c-core.

Signed-off-by: Wolfram Sang <>
Signed-off-by: Jean Delvare <>
13 years agoi2c: Documentation: fix device matching description
Ben Dooks [Tue, 1 Jul 2008 20:38:18 +0000 (22:38 +0200)]
i2c: Documentation: fix device matching description

The matching process described for new style clients in
Documentation/i2c/writing-clients is classed as out-of-date
as it requires the presence of an .id_table entry in the
driver's i2c_driver entry.

Signed-off-by: Ben Dooks <>
Signed-off-by: Jean Delvare <>
13 years agopowerpc/bootwrapper: update for initrd with simpleImage
John Linn [Tue, 1 Jul 2008 20:17:18 +0000 (14:17 -0600)]
powerpc/bootwrapper: update for initrd with simpleImage

This change to the makefile corrects the build of a simpleImage with initrd.

Signed-off-by: John Linn <john.linn@xilinx>
Signed-off-by: Grant Likely <>
13 years agoI2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device.
Ben Dooks [Tue, 1 Jul 2008 10:59:43 +0000 (11:59 +0100)]
I2C: S3C2410: Add MODULE_ALIAS() for s3c2440 device.

Add a MODULE_ALIAS() statement for the i2c-s3c2410 controller
to ensure that it can be autoloaded on the S3C2440 systems that
we support.

Signed-off-by: Ben Dooks <>
13 years agoI2C: S3C2410: Fixup error codes returned rom a transfer.
Ben Dooks [Tue, 1 Jul 2008 10:59:42 +0000 (11:59 +0100)]
I2C: S3C2410: Fixup error codes returned rom a transfer.

The driver should be returning -ENXIO for transfers that do not
pass the initial address byte stage.

Note, also small tidyups to the driver comments in the area.

Signed-off-by: Ben Dooks <>
13 years agoI2C: S3C2410: Check ACK on byte transmission
Ben Dooks [Tue, 1 Jul 2008 10:59:41 +0000 (11:59 +0100)]
I2C: S3C2410: Check ACK on byte transmission

We should check for the reception of an ACK after transmitting each
data byte. The address send has been correctly checking this, but the
data write byte state should have also been checking for these failures.

As part of the same fix, we remove the ACK checking from the receive
path where it should not have been checking for an ACK which our hardware
was sending.

Signed-off-by: Ben Dooks <>
13 years agorcu: fix hotplug vs rcu race
Gautham R Shenoy [Fri, 27 Jun 2008 04:47:38 +0000 (10:17 +0530)]
rcu: fix hotplug vs rcu race

Dhaval Giani reported this warning during cpu hotplug stress-tests:

| On running kernel compiles in parallel with cpu hotplug:
| WARNING: at arch/x86/kernel/smp.c:118
| native_smp_send_reschedule+0x21/0x36()
| Modules linked in:
| Pid: 27483, comm: cc1 Not tainted 2.6.26-rc7 #1
| [...]
|  [<c0110355>] native_smp_send_reschedule+0x21/0x36
|  [<c014fe8f>] force_quiescent_state+0x47/0x57
|  [<c014fef0>] call_rcu+0x51/0x6d
|  [<c01713b3>] __fput+0x130/0x158
|  [<c0171231>] fput+0x17/0x19
|  [<c016fd99>] filp_close+0x4d/0x57
|  [<c016fdff>] sys_close+0x5c/0x97

IMHO the warning is a spurious one.

cpu_online_map is updated by the _cpu_down() using stop_machine_run().
Since force_quiescent_state is invoked from irqs disabled section,
stop_machine_run() won't be executing while a cpu is executing
force_quiescent_state(). Hence the cpu_online_map is stable while we're
in the irq disabled section.

However, a cpu might have been offlined _just_ before we disabled irqs
while entering force_quiescent_state(). And rcu subsystem might not yet
have handled the CPU_DEAD notification, leading to the offlined cpu's
bit being set in the rcp->cpumask.

Hence cpumask = (rcp->cpumask & cpu_online_map) to prevent sending
smp_reschedule() to an offlined CPU.

Here's the timeline:

cpu_down(): .
.     .
. .
stop_machine(): /* disables preemption, .
 * and irqs */ .
. .
. .
take_cpu_down(); .
. .
. .
. .
cpu_disable(); /*this removes cpu  .
*from cpu_online_map  .
*/ .
. .
. .
restart_machine(); /* enables irqs */ .
------WINDOW DURING WHICH rcp->cpumask is stale ---------------
. call_rcu();
. /* disables irqs here */
. .force_quiescent_state();
.CPU_DEAD: .for_each_cpu(rcp->cpumask)
. .   smp_send_reschedule();
. .
. .   WARN_ON() for offlined CPU!
-------- WINDOW ENDS ------------------------------------------
rcu_offline_cpu() /* Which calls cpu_quiet()
   * which removes
   * cpu from rcp->cpumask.

If a new batch was started just before calling stop_machine_run(), the
"tobe-offlined" cpu is still present in rcp-cpumask.

During a cpu-offline, from take_cpu_down(), we queue an rt-prio idle
task as the next task to be picked by the scheduler. We also call
cpu_disable() which will disable any further interrupts and remove the
cpu's bit from the cpu_online_map.

Once the stop_machine_run() successfully calls take_cpu_down(), it calls
schedule(). That's the last time a schedule is called on the offlined
cpu, and hence the last time when rdp->passed_quiesc will be set to 1
through rcu_qsctr_inc().

But the cpu_quiet() will be on this cpu will be called only when the
next RCU_SOFTIRQ occurs on this CPU. So at this time, the offlined CPU
is still set in rcp->cpumask.

Now coming back to the idle_task which truely offlines the CPU, it does
check for a pending RCU and raises the softirq, since it will find
rdp->passed_quiesc to be 0 in this case. However, since the cpu is
offline I am not sure if the softirq will trigger on the CPU.

Even if it doesn't the rcu_offline_cpu() will find that rcp->completed
is not the same as rcp->cur, which means that our cpu could be holding
up the grace period progression. Hence we call cpu_quiet() and move

But because of the window explained in the timeline, we could still have
a call_rcu() before the RCU subsystem executes it's CPU_DEAD
notification, and we send smp_send_reschedule() to offlined cpu while
trying to force the quiescent states. The appended patch adds comments
and prevents checking for offlined cpu everytime.

cpu_online_map is updated by the _cpu_down() using stop_machine_run().
Since force_quiescent_state is invoked from irqs disabled section,
stop_machine_run() won't be executing while a cpu is executing
force_quiescent_state(). Hence the cpu_online_map is stable while we're
in the irq disabled section.

Reported-by: Dhaval Giani <>
Signed-off-by: Gautham R Shenoy <>
Acked-by: Dhaval Giani <>
Cc: Dipankar Sarma <>
Cc: Peter Zijlstra <>
Cc: Rusty Russel <>
Cc: "Paul E. McKenney" <>
Signed-off-by: Ingo Molnar <>
13 years agoProperly notify block layer of sync writes
Jens Axboe [Tue, 1 Jul 2008 07:07:34 +0000 (09:07 +0200)]
Properly notify block layer of sync writes

fsync_buffers_list() and sync_dirty_buffer() both issue async writes and
then immediately wait on them. Conceptually, that makes them sync writes
and we should treat them as such so that the IO schedulers can handle
them appropriately.

This patch fixes a write starvation issue that Lin Ming reported, where
xx is stuck for more than 2 minutes because of a large number of
synchronous IO in the system:

INFO: task kjournald:20558 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this
kjournald     D ffff810010820978  6712 20558      2
ffff81022ddb1d10 0000000000000046 ffff81022e7baa10 ffffffff803ba6f2
ffff81022ecd0000 ffff8101e6dc9160 ffff81022ecd0348 000000008048b6cb
0000000000000086 ffff81022c4e8d30 0000000000000000 ffffffff80247537
Call Trace:
[<ffffffff803ba6f2>] kobject_get+0x12/0x17
[<ffffffff80247537>] getnstimeofday+0x2f/0x83
[<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
[<ffffffff8066d195>] io_schedule+0x5d/0x9f
[<ffffffff8029c1e7>] sync_buffer+0x3b/0x3f
[<ffffffff8066d3f0>] __wait_on_bit+0x40/0x6f
[<ffffffff8029c1ac>] sync_buffer+0x0/0x3f
[<ffffffff8066d48b>] out_of_line_wait_on_bit+0x6c/0x78
[<ffffffff80243909>] wake_bit_function+0x0/0x23
[<ffffffff8029e3ad>] sync_dirty_buffer+0x98/0xcb
[<ffffffff8030056b>] journal_commit_transaction+0x97d/0xcb6
[<ffffffff8023a676>] lock_timer_base+0x26/0x4b
[<ffffffff8030300a>] kjournald+0xc1/0x1fb
[<ffffffff802438db>] autoremove_wake_function+0x0/0x2e
[<ffffffff80302f49>] kjournald+0x0/0x1fb
[<ffffffff802437bb>] kthread+0x47/0x74
[<ffffffff8022de51>] schedule_tail+0x28/0x5d
[<ffffffff8020cac8>] child_rip+0xa/0x12
[<ffffffff80243774>] kthread+0x0/0x74
[<ffffffff8020cabe>] child_rip+0x0/0x12

Lin Ming confirms that this patch fixes the issue. I've run tests with
it for the past week and no ill effects have been observed, so I'm
proposing it for inclusion into 2.6.26.

Signed-off-by: Jens Axboe <>
13 years agoblock: Fix the starving writes bug in the anticipatory IO scheduler
Divyesh Shah [Mon, 16 Jun 2008 16:37:08 +0000 (18:37 +0200)]
block: Fix the starving writes bug in the anticipatory IO scheduler

AS scheduler alternates between issuing read and write batches. It does
the batch switch only after all requests from the previous batch are

When switching to a write batch, if there is an on-going read request,
it waits for its completion and indicates its intention of switching by
setting ad->changed_batch and the new direction but does not update the
batch_expire_time for the new write batch which it does in the case of
no previous pending requests.
On completion of the read request, it sees that we were waiting for the
switch and schedules work for kblockd right away and resets the
ad->changed_data flag.
Now when kblockd enters dispatch_request where it is expected to pick
up a write request, it in turn ends the write batch because the
batch_expire_timer was not updated and shows the expire timestamp for
the previous batch.

This results in the write starvation for all the cases where there is
the intention for switching to a write batch, but there is a previous
in-flight read request and the batch gets reverted to a read_batch
right away.

This also holds true in the reverse case (switching from a write batch
to a read batch with an in-flight write request).

I've checked that this bug exists on 2.6.11, 2.6.18, 2.6.24 and
linux-2.6-block git HEAD. I've tested the fix on x86 platforms with
SCSI drives where the driver asks for the next request while a current
request is in-flight.

This patch is based off linux-2.6-block git HEAD.

Bug reproduction:
A simple scenario which reproduces this bug is:
- dd if=/dev/hda3 of=/dev/null &
- lilo
   The lilo takes forever to complete.

This can also be reproduced fairly easily with the earlier dd and
another test
program doing msync().

The example test program below should print out a message after every
but it simply hangs forever. With this bugfix it makes forward progress.

Example test program using msync() (thanks to suleiman AT google DOT

inline uint64_t
         int64_t tsc;

         __asm __volatile("rdtsc" : "=A" (tsc));
         return (tsc);

main(int argc, char **argv)
         struct stat st;
         uint64_t e, s, t;
         char *p, q;
         long i;
         int fd;

         if (argc < 2) {
                 printf("Usage: %s <file>\n", argv[0]);
                 return (1);

         if ((fd = open(argv[1], O_RDWR | O_NOATIME)) < 0)
                 err(1, "open");

         if (fstat(fd, &st) < 0)
                 err(1, "fstat");

         p = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE,
MAP_SHARED, fd, 0);

         t = 0;
         for (i = 0; i < 1000; i++) {
                 *p = 0;
                 msync(p, 4096, MS_SYNC);
                 s = rdtsc();
                *p = 0;
                 __asm __volatile(""::: "memory");
                 e = rdtsc();
                 if (argc > 2)
                         printf("%d: %lld cycles %jd %jd\n",
                                i, e - s, (intmax_t)s, (intmax_t)e);
                 t += e - s;
         printf("average time: %lld cycles\n", t / 1000);
         return (0);

Cc: <>
Acked-by: Nick Piggin <>
Signed-off-by: Jens Axboe <>
13 years agox86: fix NODES_SHIFT Kconfig range
Thomas Gleixner [Tue, 1 Jul 2008 06:56:32 +0000 (08:56 +0200)]
x86: fix NODES_SHIFT Kconfig range

commit 4323838215184f5a2f081e0d17b8d60731b03164
       x86: change size of node ids from u8 to s16

set the range for NODES_SHIFT to 1..15.

The possible range is 1..9

Fixes Bugzilla #10726

Reported-by: Dave Jones <>
Signed-off-by: Thomas Gleixner <>
13 years agosched: fix divide error when trying to configure rt_period to zero
Raistlin [Thu, 26 Jun 2008 16:54:09 +0000 (18:54 +0200)]
sched: fix divide error when trying to configure rt_period to zero

Here it is another little Oops we found while configuring invalid values
via cgroups:

echo 0 > /dev/cgroups/0/cpu.rt_period_us
echo 4294967296 > /dev/cgroups/0/cpu.rt_period_us

[  205.509825] divide error: 0000 [#1]
[  205.510151] Modules linked in:
[  205.510151]
[  205.510151] Pid: 2339, comm: bash Not tainted (2.6.26-rc8 #33)
[  205.510151] EIP: 0060:[<c030c6ef>] EFLAGS: 00000293 CPU: 0
[  205.510151] EIP is at div64_u64+0x5f/0x70
[  205.510151] EAX: 0000389f EBX: 00000000 ECX: 00000000 EDX: 00000000
[  205.510151] ESI: d9800000 EDI: 00000000 EBP: c6cede60 ESP: c6cede50
[  205.510151]  DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068
[  205.510151] Process bash (pid: 2339, ti=c6cec000 task=c79be370 task.ti=c6cec000)
[  205.510151] Stack: d9800000 0000389f c05971a0 d9800000 c6cedeb4 c0214dbd 00000000 00000000
[  205.510151]        c6cede88 c0242bd8 c05377c0 c7a41b40 00000000 00000000 00000000 c05971a0
[  205.510151]        c780ed20 c7508494 c7a41b40 00000000 00000002 c6cedebc c05971a0 ffffffea
[  205.510151] Call Trace:
[  205.510151]  [<c0214dbd>] ? __rt_schedulable+0x1cd/0x240
[  205.510151]  [<c0242bd8>] ? cgroup_file_open+0x18/0xe0
[  205.510151]  [<c0214fe4>] ? tg_set_bandwidth+0xa4/0xf0
[  205.510151]  [<c0215066>] ? sched_group_set_rt_period+0x36/0x50
[  205.510151]  [<c021508e>] ? cpu_rt_period_write_uint+0xe/0x10
[  205.510151]  [<c0242dc5>] ? cgroup_file_write+0x125/0x160
[  205.510151]  [<c0232c15>] ? hrtimer_interrupt+0x155/0x190
[  205.510151]  [<c02f047f>] ? security_file_permission+0xf/0x20
[  205.510151]  [<c0277ad8>] ? rw_verify_area+0x48/0xc0
[  205.510151]  [<c0283744>] ? dupfd+0x104/0x130
[  205.510151]  [<c027838c>] ? vfs_write+0x9c/0x160
[  205.510151]  [<c0242ca0>] ? cgroup_file_write+0x0/0x160
[  205.510151]  [<c027850d>] ? sys_write+0x3d/0x70
[  205.510151]  [<c0203019>] ? sysenter_past_esp+0x6a/0x91
[  205.510151]  =======================
[  205.510151] Code: 0f 45 de 31 f6 0f ad d0 d3 ea f6 c1 20 0f 45 c2 0f 45 d6 89 45 f0 89 55 f4 8b 55 f4 31 c9 8b 45 f0 39 d3 89 c6 77 08 89 d0 31 d2 <f7> f3 89 c1 83 c4 08 89 f0 f7 f3 89 ca 5b 5e 5d c3 55 89 e5 56
[  205.510151] EIP: [<c030c6ef>] div64_u64+0x5f/0x70 SS:ESP 0068:c6cede50

The attached patch solves the issue for me.

I'm checking as soon as possible for the period not being zero since, if
it is, going ahead is useless. This way we also save a mutex_lock() and
a read_lock() wrt doing it inside tg_set_bandwidth() or

Signed-off-by: Dario Faggioli <>
Signed-off-by: Michael Trimarchi <>
Signed-off-by: Ingo Molnar <>
13 years ago[IA64] export account_system_vtime
Doug Chapman [Mon, 30 Jun 2008 22:06:48 +0000 (15:06 -0700)]
[IA64] export account_system_vtime

The symbol account_system_vtime is used by the kvm module but
not exported.  This breaks building with CONFIG_VIRT_CPU_ACCOUNTING

Signed-off-by: Doug Chapman <>
Acked-by: Hidetosho Seto <>
Signed-off-by: Tony Luck <>
13 years ago[IA64] Bugfix for system with 32 cpus
Tony Luck [Mon, 30 Jun 2008 22:03:14 +0000 (15:03 -0700)]
[IA64] Bugfix for system with 32 cpus

On a system where there are no hot pluggable cpus "additional_cpus"
is still set to -1 at the point where we call per_cpu_scan_finalize().
If we didn't find an SRAT table and so pick the default "32" for the
number of cpus, when we get to:
high_cpu = min(high_cpu + reserve_cpus, NR_CPUS);
we will end up initializing for just 31 cpus ... and so we will
die horribly when bringing up cpu#32.

Problem introduced by: 2c6e6db41f01b6b4eb98809350827c9678996698
"Minimize per_cpu reservations."

Acked-by: Robin Holt <>
Signed-off-by: Tony Luck <>
13 years agoV4L/DVB (8145a): USB Video Class driver
Laurent Pinchart [Mon, 30 Jun 2008 18:04:50 +0000 (15:04 -0300)]
V4L/DVB (8145a): USB Video Class driver

This driver supports video input devices compliant with the USB Video Class
specification. This means lots of currently manufactured webcams, and probably
most of the future ones.

Signed-off-by: Laurent Pinchart <>
Signed-off-by: Mauro Carvalho Chehab <>
13 years agoMerge branch 'master' of
David S. Miller [Mon, 30 Jun 2008 20:18:53 +0000 (13:18 -0700)]
Merge branch 'master' of /linux/kernel/git/linville/wireless-2.6

13 years agomac80211: don't accept WEP keys other than WEP40 and WEP104
Emmanuel Grumbach [Fri, 27 Jun 2008 23:50:13 +0000 (02:50 +0300)]
mac80211: don't accept WEP keys other than WEP40 and WEP104

This patch makes mac80211 refuse a WEP key whose length is not WEP40 nor

Signed-off-by: Emmanuel Grumbach <>
Signed-off-by: Tomas Winkler <>
Signed-off-by: John W. Linville <>
13 years agohostap: fix sparse warnings
Pavel Roskin [Fri, 27 Jun 2008 20:19:58 +0000 (16:19 -0400)]
hostap: fix sparse warnings

Rewrite AID calculation in handle_pspoll() to avoid truncating bits.
Make hostap_80211_header_parse() static, don't export it.  Avoid
shadowing variables.

Signed-off-by: Pavel Roskin <>
Signed-off-by: John W. Linville <>
13 years agohostap: don't report useless WDS frames by default
Pavel Roskin [Fri, 27 Jun 2008 20:19:52 +0000 (16:19 -0400)]
hostap: don't report useless WDS frames by default

DEBUG_EXTRA is reported to the kernel log by default, but DEBUG_EXTRA2
is not.  Unrelated WDS frames pollute the log unnecessarily.

Signed-off-by: Pavel Roskin <>
Signed-off-by: John W. Linville <>
13 years agotextsearch: fix Boyer-Moore text search bug
Joonwoo Park [Mon, 30 Jun 2008 19:42:23 +0000 (12:42 -0700)]
textsearch: fix Boyer-Moore text search bug

The current logic has a bug which cannot find matching pattern, if the
pattern is matched from the first character of target string.
for example:
pattern=abc, string=abcdefg
pattern=a,   string=abcdefg
Searching algorithm should return 0 for those things.

Signed-off-by: Joonwoo Park <>
Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
13 years agonetfilter: nf_conntrack_tcp: fixing to check the lower bound of valid ACK
Jozsef Kadlecsik [Mon, 30 Jun 2008 19:41:30 +0000 (12:41 -0700)]
netfilter: nf_conntrack_tcp: fixing to check the lower bound of valid ACK

Lost connections was reported by Thomas Bätzler (running 2.6.25 kernel) on
the netfilter mailing list (see the thread "Weird nat/conntrack Problem
with PASV FTP upload"). He provided tcpdump recordings which helped to
find a long lingering bug in conntrack.

In TCP connection tracking, checking the lower bound of valid ACK could
lead to mark valid packets as INVALID because:

 - We have got a "higher or equal" inequality, but the test checked
   the "higher" condition only; fixed.
 - If the packet contains a SACK option, it could occur that the ACK
   value was before the left edge of our (S)ACK "window": if a previous
   packet from the other party intersected the right edge of the window
   of the receiver, we could move forward the window parameters beyond
   accepting a valid ack. Therefore in this patch we check the rightmost
   SACK edge instead of the ACK value in the lower bound of valid (S)ACK

Signed-off-by: Jozsef Kadlecsik <>
Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
13 years agoide: fix /proc/ide/ide?/mate reporting
Bartlomiej Zolnierkiewicz [Mon, 30 Jun 2008 18:14:45 +0000 (20:14 +0200)]
ide: fix /proc/ide/ide?/mate reporting

Now that we support warm-plug mate port will be registered
even if there are no devices attached to it.

Signed-off-by: Bartlomiej Zolnierkiewicz <>
13 years agoRevert "BAST: Remove old IDE driver"
Bartlomiej Zolnierkiewicz [Mon, 30 Jun 2008 18:13:31 +0000 (20:13 +0200)]
Revert "BAST: Remove old IDE driver"

This reverts commit ac1623625c5818bbdf5c68973098ba386ba7a004.

It was premature to remove it now, we will do it post-2.6.26.

Thanks to Russell King for noticing the issue.

Signed-off-by: Bartlomiej Zolnierkiewicz <>
13 years ago[ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off
Catalin Marinas [Fri, 27 Jun 2008 14:15:12 +0000 (15:15 +0100)]
[ARM] 5131/1: Annotate platform_secondary_init with trace_hardirqs_off

This patch annotates the platform_secondary_init function in
arch/arm/mach-realview/platsmp.c with trace_hardirqs_off to avoid a
warning when LOCKDEP and TRACE_IRQFLAGS are enabled.

Signed-off-by: Catalin Marinas <>
Signed-off-by: Russell King <>
13 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Mon, 30 Jun 2008 15:58:09 +0000 (08:58 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/dtor/input

* 'for-linus' of git://
  Input: fix locking in force-feedback core
  Input: add KEY_MEDIA_REPEAT definition

13 years agoMerge branch 'core-fixes-for-linus' of git://
Linus Torvalds [Mon, 30 Jun 2008 15:57:43 +0000 (08:57 -0700)]
Merge branch 'core-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'core-fixes-for-linus' of git://
  debugobjects: fix lockdep warning

13 years agoMerge branch 'sched-fixes-for-linus' of git://
Linus Torvalds [Mon, 30 Jun 2008 15:57:19 +0000 (08:57 -0700)]
Merge branch 'sched-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'sched-fixes-for-linus' of git://
  sched: fix cpu hotplug

13 years agoMerge branch 'x86-fixes-for-linus' of git://
Linus Torvalds [Mon, 30 Jun 2008 15:56:57 +0000 (08:56 -0700)]
Merge branch 'x86-fixes-for-linus' of git://git./linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://
  ptrace GET/SET FPXREGS broken
  x86: fix cpu hotplug crash
  x86: section/warning fixes
  x86: shift bits the right way in native_read_tscp

13 years agoInput: fix locking in force-feedback core
Dmitry Torokhov [Thu, 26 Jun 2008 15:30:02 +0000 (11:30 -0400)]
Input: fix locking in force-feedback core

The newly added event_lock spinlock in the input core disallows sleeping
and therefore using mutexes in event handlers. Convert force-feedback
core to rely on event_lock instead of mutex to protect slots allocated
for fore-feedback effects. The original mutex is still used to serialize
uploading and erasing of effects.

Reported-by: Anssi Hannula <>
Signed-off-by: Dmitry Torokhov <>
13 years agoInput: add KEY_MEDIA_REPEAT definition
Bastien Nocera [Thu, 26 Jun 2008 13:13:48 +0000 (09:13 -0400)]
Input: add KEY_MEDIA_REPEAT definition

This patch adds the Repeat key to the input layer. The usage
in the HUT is 0xBC (listed under "15.7 Transport Controls").

Signed-off-by: Dmitry Torokhov <>
13 years agoptrace GET/SET FPXREGS broken
TAKADA Yoshihito [Mon, 30 Jun 2008 04:44:45 +0000 (13:44 +0900)]
ptrace GET/SET FPXREGS broken

When I update kernel 2.6.25 from 2.6.24, gdb does not work.
On 2.6.25, ptrace(PTRACE_GETFPXREGS, ...) returns ENODEV.

But 2.6.24 kernel's ptrace() returns EIO.
It is issue of compatibility.

I attached test program as pt.c and patch for fix it.

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
#include <errno.h>
#include <sys/ptrace.h>
#include <sys/types.h>

struct user_fxsr_struct {
unsigned short cwd;
unsigned short swd;
unsigned short twd;
unsigned short fop;
long fip;
long fcs;
long foo;
long fos;
long mxcsr;
long reserved;
long st_space[32]; /* 8*16 bytes for each FP-reg = 128 bytes */
long xmm_space[32]; /* 8*16 bytes for each XMM-reg = 128 bytes */
long padding[56];

int main(void)
  pid_t pid;

  pid = fork();

  case -1:/*  error */
  case 0:/*  child */
  return 0;

int child(void)
  kill(getpid(), SIGSTOP);
  return 0;
int parent(pid_t pid)
  int ret;
  struct user_fxsr_struct fpxregs;

  ret = ptrace(PTRACE_GETFPXREGS, pid, 0, &fpxregs);
  if(ret < 0){
    printf("%d: %s.\n", errno, strerror(errno));
  kill(pid, SIGCONT);
  return 0;

/* in the kerel, at kernel/i387.c get_fpxregs() */

Signed-off-by: Ingo Molnar <>
13 years agox86: fix cpu hotplug crash
Zhang, Yanmin [Tue, 24 Jun 2008 08:06:23 +0000 (16:06 +0800)]
x86: fix cpu hotplug crash

Vegard Nossum reported crashes during cpu hotplug tests:

In function _cpu_up, the panic happens when calling
__raw_notifier_call_chain at the second time. Kernel doesn't panic when
calling it at the first time. If just say because of nr_cpu_ids, that's
not right.

By checking the source code, I found that function do_boot_cpu is the culprit.
Consider below call chain:

So do_boot_cpu is called in the end. In do_boot_cpu, if
boot_error==true, cpu_clear(cpu, cpu_possible_map) is executed. So later
on, when _cpu_up calls __raw_notifier_call_chain at the second time to
report CPU_UP_CANCELED, because this cpu is already cleared from
cpu_possible_map, get_cpu_sysdev returns NULL.

Many resources are related to cpu_possible_map, so it's better not to
change it.

Below patch against 2.6.26-rc7 fixes it by removing the bit clearing in

Signed-off-by: Zhang Yanmin <>
Tested-by: Vegard Nossum <>
Acked-by: Rusty Russell <>
Signed-off-by: Ingo Molnar <>
13 years agoMerge git://
Linus Torvalds [Sun, 29 Jun 2008 19:22:55 +0000 (12:22 -0700)]
Merge git://git./linux/kernel/git/mchehab/v4l-dvb

* git:// (42 commits)
  V4L/DVB (8108): Fix open/close race in saa7134
  V4L/DVB (8100): V4L/vivi: fix possible memory leak in vivi_fillbuff
  V4L/DVB (8097): xc5000: check device hardware state to determine if firmware download is needed
  V4L/DVB (8096): au8522: prevent false-positive lock status
  V4L/DVB (8092): videodev: simplify and fix standard enumeration
  V4L/DVB (8075): stv0299: Uncorrected block count and bit error rate fixed
  V4L/DVB (8074): av7110: OSD transfers should not be interrupted
  V4L/DVB (8073): av7110: Catch another type of ARM crash
  V4L/DVB (8071): tda10023: Fix possible kernel oops during initialisation
  V4L/DVB (8069): cx18: Fix S-Video and Compsite inputs for the Yuan MPC718 and enable card entry
  V4L/DVB (8068): cx18: Add I2C slave reset via GPIO upon initialization
  V4L/DVB (8067): cx18: Fix firmware load for case when digital capture happens first
  V4L/DVB (8066): cx18: Fix audio mux input definitions for HVR-1600 Line In 2 and FM radio
  V4L/DVB (8063): cx18: Fix unintended auto configurations in cx18-av-core
  V4L/DVB (8061): cx18: only select tuner / frontend modules if !DVB_FE_CUSTOMISE
  V4L/DVB (8048): saa7134: Fix entries for Avermedia A16d and Avermedia E506
  V4L/DVB (8044): au8522: tuning optimizations
  V4L/DVB (8043): au0828: add support for additional USB device id's
  V4L/DVB (8042): DVB-USB UMT-010 channel scan oops
  V4L/DVB (8040): soc-camera: remove soc_camera_host_class class

13 years agoMerge branch 'release' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:22:30 +0000 (12:22 -0700)]
Merge branch 'release' of git://git./linux/kernel/git/lenb/linux-acpi-2.6

* 'release' of git://
  dock: bay: Don't call acpi_walk_namespace() when ACPI is disabled.
  ACPI: don't walk tables if ACPI was disabled
  thermal: Create CONFIG_THERMAL_HWMON=n

13 years agoMerge git://
Linus Torvalds [Sun, 29 Jun 2008 19:21:02 +0000 (12:21 -0700)]
Merge git://git./linux/kernel/git/sam/kbuild-fixes

* git://
  kbuild: fix a.out.h export to userspace with O= build.

13 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:20:11 +0000 (12:20 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/ieee1394/linux1394-2.6

* 'for-linus' of git://
  firewire: fw-sbp2: fix parsing of logical unit directories

13 years agoMerge branch 'for_linus' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:19:02 +0000 (12:19 -0700)]
Merge branch 'for_linus' of git://git./linux/kernel/git/jack/linux-udf-2.6

* 'for_linus' of git://
  udf: Fix regression in UDF anchor block detection

13 years agoFix and clean top .gitignore
Eduard - Gabriel Munteanu [Thu, 26 Jun 2008 07:54:34 +0000 (10:54 +0300)]
Fix and clean top .gitignore

Removed vmlinux* rule because it matches too many useful files, replacing
it with rules matching filetype by filename (e.g. *.gz). Also unignored
.mailmap from the top directory. Added a comment telling the user how to
check for tracked files being ignored.

Signed-off-by: Eduard - Gabriel Munteanu <>
Signed-off-by: Linus Torvalds <>
13 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:16:07 +0000 (12:16 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/cooloney/blackfin-2.6

* 'for-linus' of git://
  Blackfin arch: fix up section mismatch warning
  Blackfin arch: fix bug - kernel boot fails when Spinlock and rw-lock debugging enabled

13 years agoMerge branch 'audit.b52' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:15:10 +0000 (12:15 -0700)]
Merge branch 'audit.b52' of git://git./linux/kernel/git/viro/audit-current

* 'audit.b52' of git://
  [PATCH] remove useless argument type in audit_filter_user()
  [PATCH] audit: fix kernel-doc parameter notation
  [PATCH] kernel/audit.c: nlh->nlmsg_type is gotten more than once

13 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Sun, 29 Jun 2008 19:14:37 +0000 (12:14 -0700)]
Merge branch 'for-linus' of git://git./linux/kernel/git/viro/vfs-2.6

* 'for-linus' of git://
  [patch 2/3] vfs: dcache cleanups
  [patch 1/3] vfs: dcache sparse fixes
  [patch 3/3] vfs: make d_path() consistent across mount operations
  [patch 4/4] flock: remove unused fields from file_lock_operations
  [patch 3/4] vfs: fix ERR_PTR abuse in generic_readlink
  [patch 2/4] fs: make struct file arg to d_path const
  [patch 1/4] vfs: path_{get,put}() cleanups
  [patch for 2.6.26 4/4] vfs: utimensat(): fix write access check for futimens()
  [patch for 2.6.26 3/4] vfs: utimensat(): fix error checking for {UTIME_NOW,UTIME_OMIT} case
  [patch for 2.6.26 1/4] vfs: utimensat(): ignore tv_sec if tv_nsec == UTIME_OMIT or UTIME_NOW
  [patch for 2.6.26 2/4] vfs: utimensat(): be consistent with utime() for immutable and append-only files
  [PATCH] fix cgroup-inflicted breakage in block_dev.c

13 years agosched: fix cpu hotplug
Dmitry Adamushko [Sat, 28 Jun 2008 22:16:56 +0000 (00:16 +0200)]
sched: fix cpu hotplug

the CPU hotplug problems (crashes under high-volume unplug+replug
tests) seem to be related to migrate_dead_tasks().

Firstly I added traces to see all tasks being migrated with
migrate_live_tasks() and migrate_dead_tasks(). On my setup the problem
pops up (the one with "se == NULL" in the loop of
pick_next_task_fair()) shortly after the traces indicate that some has
been migrated with migrate_dead_tasks()). btw., I can reproduce it
much faster now with just a plain cpu down/up loop.

[disclaimer] Well, unless I'm really missing something important in
this late hour [/desclaimer] pick_next_task() is not something
appropriate for migrate_dead_tasks() :-)

the following change seems to eliminate the problem on my setup
(although, I kept it running only for a few minutes to get a few
messages indicating migrate_dead_tasks() does move tasks and the
system is still ok)

Signed-off-by: Ingo Molnar <>
13 years agoipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags.
YOSHIFUJI Hideaki [Sat, 28 Jun 2008 03:14:54 +0000 (20:14 -0700)]
ipv6 route: Convert rt6_device_match() to use RT6_LOOKUP_F_xxx flags.

The commit 77d16f450ae0452d7d4b009f78debb1294fb435c ("[IPV6] ROUTE:
Unify RT6_F_xxx and RT6_SELECT_F_xxx flags") intended to pass various
routing lookup hints around RT6_LOOKUP_F_xxx flags, but conversion was
missing for rt6_device_match().

Signed-off-by: YOSHIFUJI Hideaki <>
Signed-off-by: David S. Miller <>
13 years agonetlabel: Fix a problem when dumping the default IPv6 static labels
Paul Moore [Sat, 28 Jun 2008 03:12:32 +0000 (20:12 -0700)]
netlabel: Fix a problem when dumping the default IPv6 static labels

There is a missing "!" in a conditional statement which is causing entries to
be skipped when dumping the default IPv6 static label entries.  This can be
demonstrated by running the following:

 # netlabelctl unlbl add default address:::1 \
 # netlabelctl -p unlbl list

... you will notice that the entry for the IPv6 localhost address is not
displayed but does exist (works correctly, causes collisions when attempting
to add duplicate entries, etc.).

Signed-off-by: Paul Moore <>
Signed-off-by: David S. Miller <>
13 years agonet/inet_lro: remove setting skb->ip_summed when not LRO-able
Eli Cohen [Sat, 28 Jun 2008 03:09:00 +0000 (20:09 -0700)]
net/inet_lro: remove setting skb->ip_summed when not LRO-able

When an SKB cannot be chained to a session, the current code attempts
to "restore" its ip_summed field from lro_mgr->ip_summed. However,
lro_mgr->ip_summed does not hold the original value; in fact, we'd
better not touch skb->ip_summed since it is not modified by the code
in the path leading to a failure to chain it.  Also use a cleaer
comment to the describe the ip_summed field of struct net_lro_mgr.

Issue raised by Or Gerlitz <>

Signed-off-by: Eli Cohen <>
Signed-off-by: David S. Miller <>
13 years agoinet fragments: fix race between inet_frag_find and inet_frag_secret_rebuild
Pavel Emelyanov [Sat, 28 Jun 2008 03:06:08 +0000 (20:06 -0700)]
inet fragments: fix race between inet_frag_find and inet_frag_secret_rebuild

The problem is that while we work w/o the inet_frags.lock even
read-locked the secret rebuild timer may occur (on another CPU, since
BHs are still disabled in the inet_frag_find) and change the rnd seed
for ipv4/6 fragments.

It was caused by my patch fd9e63544cac30a34c951f0ec958038f0529e244
([INET]: Omit double hash calculations in xxx_frag_intern) late
in the 2.6.24 kernel, so this should probably be queued to -stable.

Signed-off-by: Pavel Emelyanov <>
Signed-off-by: David S. Miller <>
13 years agoCONNECTOR: add a proc entry to list connectors
Li Zefan [Sat, 28 Jun 2008 03:03:24 +0000 (20:03 -0700)]
CONNECTOR: add a proc entry to list connectors

I got a problem when I wanted to check if the kernel supports process
event connector, and It seems there's no way to do this check.

At best I can check if the kernel supports connector or not, by looking
into /proc/net/netlink, or maybe checking the return value of bind() to
see if it's ENOENT.

So it would be useful to add /proc/net/connector to list all supported
 # cat /proc/net/connector
 Name            ID
 connector       4294967295:4294967295
 cn_proc         1:1
 w1              3:1

- fix memory leak: s/seq_release/single_release
- use spin_lock_bh instead of spin_lock_irqsave

Signed-off-by: Li Zefan <>
Acked-by: Evgeniy Polyakov <>
Signed-off-by: David S. Miller <>
13 years agonetlink: Fix some doc comments in net/netlink/attr.c
Julius Volz [Sat, 28 Jun 2008 03:02:14 +0000 (20:02 -0700)]
netlink: Fix some doc comments in net/netlink/attr.c

Fix some doc comments to match function and attribute names in

Signed-off-by: Julius Volz <>
Signed-off-by: David S. Miller <>
13 years agotcp: /proc/net/tcp rto,ato values not scaled properly (v2)
Stephen Hemminger [Sat, 28 Jun 2008 03:00:19 +0000 (20:00 -0700)]
tcp: /proc/net/tcp rto,ato values not scaled properly (v2)

I found another case where we are sending information to userspace
in the wrong HZ scale.  This should have been fixed back in 2.5 :-(

This means an ABI change but as it stands there is no way for an application
like ss to get the right value.

Signed-off-by: Stephen Hemminger <>
Signed-off-by: David S. Miller <>
13 years agoinclude/linux/netdevice.h: don't export MAX_HEADER to userspace
Adrian Bunk [Sat, 28 Jun 2008 02:54:54 +0000 (19:54 -0700)]
include/linux/netdevice.h: don't export MAX_HEADER to userspace

Due to the CONFIG_'s the value is anyway not correct in userspace.

Signed-off-by: Adrian Bunk <>
Signed-off-by: David S. Miller <>
13 years agopkt_sched: Remove CONFIG_NET_SCH_RR
Adrian Bunk [Sat, 28 Jun 2008 02:54:05 +0000 (19:54 -0700)]
pkt_sched: Remove CONFIG_NET_SCH_RR

Commit d62733c8e437fdb58325617c4b3331769ba82d70
([SCHED]: Qdisc changes and sch_rr added for multiqueue)
added a NET_SCH_RR option that was unused since the code
went unconditionally into sch_prio.

Reported-by: Robert P. J. Day <>
Signed-off-by: Adrian Bunk <>
Signed-off-by: David S. Miller <>
13 years agopkt_sched: ERR_PTR() ususally encodes an negative errno, not positive.
WANG Cong [Sat, 28 Jun 2008 02:51:35 +0000 (19:51 -0700)]
pkt_sched: ERR_PTR() ususally encodes an negative errno, not positive.

Note, in the following patch, 'err' is initialized as:

int err = -ENOBUFS;

Signed-off-by: WANG Cong <>
Signed-off-by: David S. Miller <>
13 years agonetdevice: Fix typo of dev_unicast_add() comment
Wang Chen [Sat, 28 Jun 2008 02:35:16 +0000 (19:35 -0700)]
netdevice: Fix typo of dev_unicast_add() comment

Signed-off-by: Wang Chen <>
Signed-off-by: David S. Miller <>
13 years agoaf_unix: fix 'poll for write'/connected DGRAM sockets
Rainer Weikusat [Sat, 28 Jun 2008 02:34:18 +0000 (19:34 -0700)]
af_unix: fix 'poll for write'/connected DGRAM sockets

For n:1 'datagram connections' (eg /dev/log), the unix_dgram_sendmsg
routine implements a form of receiver-imposed flow control by
comparing the length of the receive queue of the 'peer socket' with
the max_ack_backlog value stored in the corresponding sock structure,
either blocking the thread which caused the send-routine to be called
or returning EAGAIN. This routine is used by both SOCK_DGRAM and
SOCK_SEQPACKET sockets. The poll-implementation for these socket types
is datagram_poll from core/datagram.c. A socket is deemed to be
writeable by this routine when the memory presently consumed by
datagrams owned by it is less than the configured socket send buffer
size. This is always wrong for PF_UNIX non-stream sockets connected to
server sockets dealing with (potentially) multiple clients if the
abovementioned receive queue is currently considered to be full.
'poll' will then return, indicating that the socket is writeable, but
a subsequent write result in EAGAIN, effectively causing an (usual)
application to 'poll for writeability by repeated send request with
O_NONBLOCK set' until it has consumed its time quantum.

The change below uses a suitably modified variant of the datagram_poll
routines for both type of PF_UNIX sockets, which tests if the
recv-queue of the peer a socket is connected to is presently
considered to be 'full' as part of the 'is this socket
writeable'-checking code. The socket being polled is additionally
put onto the peer_wait wait queue associated with its peer, because the
unix_dgram_recvmsg routine does a wake up on this queue after a
datagram was received and the 'other wakeup call' is done implicitly
as part of skb destruction, meaning, a process blocked in poll
because of a full peer receive queue could otherwise sleep forever
if no datagram owned by its socket was already sitting on this queue.
Among this change is a small (inline) helper routine named
'unix_recvq_full', which consolidates the actual testing code (in three
different places) into a single location.

Signed-off-by: Rainer Weikusat <>
Signed-off-by: David S. Miller <>
13 years agotcp: fix for splice receive when used with software LRO
Octavian Purdila [Sat, 28 Jun 2008 00:27:21 +0000 (17:27 -0700)]
tcp: fix for splice receive when used with software LRO

If an skb has nr_frags set to zero but its frag_list is not empty (as
it can happen if software LRO is enabled), and a previous
tcp_read_sock has consumed the linear part of the skb, then

(a) incorrectly reports an error and

(b) forgets to update the offset to account for the linear part

Any of the two problems will cause the subsequent __skb_splice_bits
call (the one that handles the frag_list skbs) to either skip data,
or, if the unadjusted offset is greater then the size of the next skb
in the frag_list, make tcp_splice_read loop forever.

Signed-off-by: Octavian Purdila <>
Signed-off-by: David S. Miller <>
13 years agotcp: calculate tcp_mem based on low memory instead of all memory
Miquel van Smoorenburg [Sat, 28 Jun 2008 00:23:57 +0000 (17:23 -0700)]
tcp: calculate tcp_mem based on low memory instead of all memory

The tcp_mem array which contains limits on the total amount of memory
used by TCP sockets is calculated based on nr_all_pages.  On a 32 bits
x86 system, we should base this on the number of lowmem pages.

Signed-off-by: Miquel van Smoorenburg <>
Signed-off-by: David S. Miller <>
13 years agohamradio: remove unused variable
Andre Haupt [Sat, 28 Jun 2008 00:22:08 +0000 (17:22 -0700)]
hamradio: remove unused variable

Signed-off-by: Andre Haupt <>
Signed-off-by: David S. Miller <>
13 years agoFix error paths if md_probe fails.
Neil Brown [Fri, 27 Jun 2008 22:31:17 +0000 (08:31 +1000)]
Fix error paths if md_probe fails.

md_probe can fail (e.g. alloc_disk could fail) without
returning an error (as it alway returns NULL).
So when we call mddev_find immediately afterwards, we need
to check that md_probe actually succeeded.  This means checking
that mdev->gendisk is non-NULL.

cc: <>
Cc: Dave Jones <>
Signed-off-by: Neil Brown <>
13 years agoDon't acknowlege that stripe-expand is complete until it really is.
Neil Brown [Fri, 27 Jun 2008 22:31:14 +0000 (08:31 +1000)]
Don't acknowlege that stripe-expand is complete until it really is.

We shouldn't acknowledge that a stripe has been expanded (When
reshaping a raid5 by adding a device) until the moved data has
actually been written out.  However we are currently
acknowledging (by calling md_done_sync) when the POST_XOR
is complete and before the write.

So track in s.locked whether there are pending writes, and don't
call md_done_sync yet if there are.

Note: we all set R5_LOCKED on devices which are are about to
read from.  This probably isn't technically necessary, but is
usually done when writing a block, and justifies the use of
s.locked here.

This bug can lead to a crash if an array is stopped while an reshape
is in progress.

Cc: <>
Signed-off-by: Neil Brown <>
13 years agoEnsure interrupted recovery completed properly (v1 metadata plus bitmap)
Neil Brown [Fri, 27 Jun 2008 22:30:52 +0000 (08:30 +1000)]
Ensure interrupted recovery completed properly (v1 metadata plus bitmap)

If, while assembling an array, we find a device which is not fully
in-sync with the array, it is important to set the "fullsync" flags.
This is an exact analog to the setting of this flag in hot_add_disk

Currently, only v1.x metadata supports having devices in an array
which are not fully in-sync (it keep track of how in sync they are).
The 'fullsync' flag only makes a difference when a write-intent bitmap
is being used.  In this case it tells recovery to ignore the bitmap
and recovery all blocks.

This fix is already in place for raid1, but not raid5/6 or raid10.

So without this fix, a raid1 ir raid4/5/6 array with version 1.x
metadata and a write intent bitmaps, that is stopped in the middle
of a recovery, will appear to complete the recovery instantly
after it is reassembled, but the recovery will not be correct.

If you might have an array like that, issueing
   echo repair > /sys/block/mdXX/md/sync_action

will make sure recovery completes properly.

Cc: <>
Signed-off-by: Neil Brown <>
14 years agokbuild: fix a.out.h export to userspace with O= build.
David Woodhouse [Fri, 27 Jun 2008 13:39:42 +0000 (14:39 +0100)]
kbuild: fix a.out.h export to userspace with O= build.

We need to check for existence of the a.out.h header in the source tree,
not the object tree, if we want it to get the right answer with O=.

Signed-off-by: David Woodhouse <>
Signed-off-by: Sam Ravnborg <>
14 years agofirewire: fw-sbp2: fix parsing of logical unit directories
Richard Sharpe [Wed, 25 Jun 2008 02:11:13 +0000 (19:11 -0700)]
firewire: fw-sbp2: fix parsing of logical unit directories

There is a small off-by-one bug in firewire-sbp2. This causes problems
when a device exports multiple LUN Directories. I found it when trying
to talk to a SONY DVD Jukebox.

Signed-off-by: Richard Sharpe <>
Acked-by: Kristian Høgsberg <>
Signed-off-by: Stefan Richter <> (op. order, changelog)
14 years agomac80211: fix an oops in several failure paths in key allocation
Emmanuel Grumbach [Thu, 26 Jun 2008 09:13:46 +0000 (12:13 +0300)]
mac80211: fix an oops in several failure paths in key allocation

This patch fixes an oops in several failure paths in key allocation. This
Oops occurs when freeing a key that has not been linked yet, so the
key->sdata is not set.

Signed-off-by: Emmanuel Grumbach <>
Signed-off-by: Tomas Winkler <>
Acked-by: Johannes Berg <>
Signed-off-by: John W. Linville <>
14 years agoprism: islpci_eth.c endianness fix
Harvey Harrison [Wed, 25 Jun 2008 21:20:37 +0000 (14:20 -0700)]
prism: islpci_eth.c endianness fix

clock is already cpu-endian (see le32_to_cpu slightly before), so
le64_to_cpu doesn't make much sense.

Signed-off-by: Harvey Harrison <>
Signed-off-by: John W. Linville <>
14 years agort2x00: Fix lock dependency errror
Ivo van Doorn [Wed, 25 Jun 2008 19:27:00 +0000 (21:27 +0200)]
rt2x00: Fix lock dependency errror

This fixes a circular locking dependency in the workqueue handling.
The interface work task uses the mac80211 function
ieee80211_iterate_active_interfaces() which grabs the RTNL lock.

However when the interface is brough down, this happens under the RTNL
lock as well, this causes problems because mac80211 will flush the workqueue
during the ifdown event. This causes mac80211 to wait until the driver has
completed all work which can't finish because it is waiting on the RTNL lock.

This is fixed by moving rt2x00 workqueue tasks on a different workqueue,
this workqueue can be flushed when the ieee80211_hw structure is removed
by the driver (when the driver is unloaded) which does not happen under the
RTNL lock.

Signed-off-by: Ivo van Doorn <>
Signed-off-by: John W. Linville <>
14 years agoMerge branch 'master' of
David S. Miller [Fri, 27 Jun 2008 11:26:58 +0000 (04:26 -0700)]
Merge branch 'master' of /linux/kernel/git/linville/wireless-2.6

14 years agoMerge branch 'core/debugobjects' into core/urgent
Ingo Molnar [Fri, 27 Jun 2008 08:36:21 +0000 (10:36 +0200)]
Merge branch 'core/debugobjects' into core/urgent

14 years agoHold RTNL while calling dev_close()
Ben Hutchings [Tue, 6 May 2008 18:41:48 +0000 (19:41 +0100)]
Hold RTNL while calling dev_close()

dev_close() must be called holding the RTNL.  Compile-tested only.

Signed-off-by: Ben Hutchings <>
Signed-off-by: Jeff Garzik <>
14 years agoqla3xxx: Hold RTNL while calling dev_close()
Ben Hutchings [Tue, 6 May 2008 18:36:26 +0000 (19:36 +0100)]
qla3xxx: Hold RTNL while calling dev_close()

dev_close() must be called holding the RTNL.  Compile-tested only.

Signed-off-by: Ben Hutchings <>
Signed-off-by: Jeff Garzik <>
14 years ago[netdrvr] Fix IOMMU overflow checking in s2io.c
Andi Kleen [Wed, 18 Jun 2008 11:58:36 +0000 (13:58 +0200)]
[netdrvr] Fix IOMMU overflow checking in s2io.c

s2io has IOMMU overflow checking, but unfortunately it is wrong.

It didn't use the standard macros, which meant that it only worked
on POWER and SPARC because only those define DMA_ERROR_CODE. Convert it to
use the standard macros instead.

I also commented two more bugs in the IOMMU handling. It assumes
that 0 DMA addresses cannot happen, but that's not true in all IOMMU setups.
The information if a buffer has been already mapped needs to be stored

Didn't fix those because it needs careful checking of the buffer handling
by the maintainers.

Signed-off-by: Andi Kleen <>
Signed-off-by: Jeff Garzik <>
14 years agoe1000: only enable TSO6 via ethtool when using correct hardware
Andy Gospodarek [Thu, 19 Jun 2008 21:19:02 +0000 (17:19 -0400)]
e1000: only enable TSO6 via ethtool when using correct hardware

When enabling TSO via ethool on e1000, it is possible to set
NETIF_F_TSO6 on hardware that does not support it.  Setting TSO via
ethtool now matches the settings used when the hardware is probed.

Signed-off-by: Andy Gospodarek <>
Signed-off-by: Jeff Garzik <>