14 years agoeCryptfs: fix dentry handling on create error, unlink, and inode destroy
Michael Halcrow [Tue, 8 Jan 2008 23:33:02 +0000 (15:33 -0800)]
eCryptfs: fix dentry handling on create error, unlink, and inode destroy

This patch corrects some erroneous dentry handling in eCryptfs.

If there is a problem creating the lower file, then there is nothing that
the persistent lower file can do to really help us.  This patch makes a
vfs_create() failure in the lower filesystem always lead to an
unconditional do_create failure in eCryptfs.

Under certain sequences of operations, the eCryptfs dentry can remain in
the dcache after an unlink.  This patch calls d_drop() on the eCryptfs
dentry to correct this.

eCryptfs has no business calling d_delete() directly on a lower
filesystem's dentry.  This patch removes the call to d_delete() on the
lower persistent file's dentry in ecryptfs_destroy_inode().

(Thanks to David Kleikamp, Eric Sandeen, and Jeff Moyer for helping
identify and resolve this issue)

Signed-off-by: Michael Halcrow <>
Cc: Dave Kleikamp <>
Cc: Eric Sandeen <>
Cc: Jeff Moyer <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agoxip: fix get_zeroed_page with __GFP_HIGHMEM
Akinobu Mita [Tue, 8 Jan 2008 23:32:57 +0000 (15:32 -0800)]
xip: fix get_zeroed_page with __GFP_HIGHMEM

The use of get_zeroed_page() with __GFP_HIGHMEM is invalid.  Use
alloc_page() with __GFP_ZERO instead of invalid get_zeroed_page().

(This patch is only compile tested)

Cc: Carsten Otte <>
Signed-off-by: Akinobu Mita <>
Acked-by: Hugh Dickins <>
Acked-by: Carsten Otte <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agomd: fix data corruption when a degraded raid5 array is reshaped
Dan Williams [Tue, 8 Jan 2008 23:32:53 +0000 (15:32 -0800)]
md: fix data corruption when a degraded raid5 array is reshaped

We currently do not wait for the block from the missing device to be
computed from parity before copying data to the new stripe layout.

The change in the raid6 code is not techincally needed as we don't delay
data block recovery in the same way for raid6 yet.  But making the change
now is safer long-term.

This bug exists in 2.6.23 and 2.6.24-rc

Cc: <>
Signed-off-by: Dan Williams <>
Acked-by: Neil Brown <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agoKEYS: fix macro
Sebastian Siewior [Tue, 8 Jan 2008 23:32:47 +0000 (15:32 -0800)]
KEYS: fix macro

Commit 664cceb0093b755739e56572b836a99104ee8a75 changed the parameters of
the function make_key_ref().  The macros that are used in case CONFIG_KEY
is not defined did not change.

Cc: David Howells <>
Signed-off-by: Sebastian Siewior <>
Acked-by: David Howells <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agofat: optimize fat_count_free_clusters()
OGAWA Hirofumi [Tue, 8 Jan 2008 23:32:41 +0000 (15:32 -0800)]
fat: optimize fat_count_free_clusters()

On large partition, scanning the free clusters is very slow if users
doesn't use "usefree" option.

For optimizing it, this patch uses sb_breadahead() to read of FAT
sectors. On some user's 15GB partition, this patch improved it very
much (1min => 600ms).

The following is the result of 2GB partition on my machine.

without patch:
root@devron (/)# time df -h > /dev/null

real    0m1.202s
user    0m0.000s
sys     0m0.440s

with patch:
root@devron (/)# time df -h > /dev/null

real    0m0.378s
user    0m0.012s
sys     0m0.168s

Signed-off-by: OGAWA Hirofumi <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agospi_bitbang: always grab lock with irqs blocked
David Brownell [Tue, 8 Jan 2008 23:32:40 +0000 (15:32 -0800)]
spi_bitbang: always grab lock with irqs blocked

Fix a glitch reported by lockdep in the spi_bitbang code: it needs to
consistently block IRQs when holding that spinlock.

Signed-off-by: David Brownell <>
Signed-off-by: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years agox86: fix do_fork_idle section mismatch
Thomas Gleixner [Tue, 8 Jan 2008 23:18:28 +0000 (00:18 +0100)]
x86: fix do_fork_idle section mismatch


WARNING: vmlinux.o(.text+0x104f8): Section mismatch: reference to .init.text:fork_idle (between
'do_fork_idle' and 'lapic_timer_broadcast')

do_fork_idle() needs to be __cpuinit. It can be static as well.

Signed-off-by: Thomas Gleixner <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 8 Jan 2008 20:29:52 +0000 (12:29 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/roland/infiniband

* 'for-linus' of git://
  IB/srp: Release transport before removing host
  IB/mlx4: Fix value of pkey_index in QP1 completions
  MAINTAINERS: Update Sean Hefty's email address

14 years agoIB/srp: Release transport before removing host
Dave Dillow [Fri, 4 Jan 2008 03:35:41 +0000 (22:35 -0500)]
IB/srp: Release transport before removing host

The documented call sequence for removing a host is to call the
transport xxx_remove_host() prior to scsi_remove_host(). The SRP
transport used to crash when that order was followed, but as it is now
fixed, use the documented order.

Signed-off-by: David Dillow <>
Acked-by: FUJITA Tomonori <>
Signed-off-by: Roland Dreier <>
14 years agoIB/mlx4: Fix value of pkey_index in QP1 completions
Dotan Barak [Mon, 7 Jan 2008 07:01:25 +0000 (09:01 +0200)]
IB/mlx4: Fix value of pkey_index in QP1 completions

Fix the value of pkey_index in completions to get a valid value for
GSI QPs.  Without this fix, incoming GSI packets on port 2 get an
invalid P_Key index in the completion, which prevents the MAD layer
from sending back a response, which can make the second port of
ConnectX HCAs completely useless.

Signed-off-by: Dotan Barak <>
Signed-off-by: Roland Dreier <>
14 years agoRevert "hda_intel suspend latency: shorten codec read"
Linus Torvalds [Tue, 8 Jan 2008 19:46:37 +0000 (11:46 -0800)]
Revert "hda_intel suspend latency: shorten codec read"

This reverts commit 57a04513cb35086d54bcb2cb92e6627fc8fa0fae.

Harald Dunkel reports that it broke sound for him:
  "Alsa stopped working for me.  I still can access /dev/dsp, change the
   volume and so on, but the speakers are quiet."

Reverting it fixed things for him.

Reported-and-tested-by: Harald Dunkel <>
Acked-by: Takashi Iwai <>
Acked-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agoMAINTAINERS: Update Sean Hefty's email address
Sean Hefty [Wed, 2 Jan 2008 20:00:24 +0000 (12:00 -0800)]
MAINTAINERS: Update Sean Hefty's email address

My Unix email account is being discontinued at end of Q1 '08.

Signed-off-by: Sean Hefty <>
Signed-off-by: Roland Dreier <>
14 years agoacct: real_parent ppid
Roland McGrath [Mon, 7 Jan 2008 22:23:34 +0000 (14:23 -0800)]
acct: real_parent ppid

The ac_ppid field reported in process accounting records
should match what getppid() would have returned to that
process, regardless of whether a debugger is attached.

Signed-off-by: Roland McGrath <>
Signed-off-by: Linus Torvalds <>
14 years agocore dump: real_parent ppid
Roland McGrath [Mon, 7 Jan 2008 22:22:44 +0000 (14:22 -0800)]
core dump: real_parent ppid

The pr_ppid field reported in core dumps should match what
getppid() would have returned to that process, regardless of
whether a debugger is attached.

Signed-off-by: Roland McGrath <>
Signed-off-by: Linus Torvalds <>
14 years agoMerge branch 'upstream' of git://
Linus Torvalds [Mon, 7 Jan 2008 21:31:03 +0000 (13:31 -0800)]
Merge branch 'upstream' of git://

* 'upstream' of git://
  [MIPS] Assume R4000/R4400 newer than 3.0 don't have the mfc0 count bug
  [MIPS] Fix IP32 breakage
  [MIPS] Alchemy: Fix use of __init code bug exposed by modpost warning
  [MIPS] Move inclusing of kernel/time/Kconfig menu to appropriate place

14 years agoMerge git://
Linus Torvalds [Mon, 7 Jan 2008 21:29:39 +0000 (13:29 -0800)]
Merge git://git./linux/kernel/git/mchehab/v4l-dvb

* git://
  V4L/DVB (6916): ivtv: udelay has to be changed *after* the eeprom was read, not before
  V4L/DVB (6944a): Fix Regression VIDIOCGMBUF ioctl hangs on bttv driver

14 years ago[MIPS] Fix CONFIG_BOOT_RAW.
Ralf Baechle [Mon, 7 Jan 2008 15:09:50 +0000 (15:09 +0000)]

This was broken by 017e3a492683b32d17dcd1b13b279745cc656073 (lmo) /
396a2ae08e5080b140330645743ab2567f6bc426 (

Signed-off-by: Ralf Baechle <>
14 years ago[MIPS] Assume R4000/R4400 newer than 3.0 don't have the mfc0 count bug
Thomas Bogendoerfer [Fri, 4 Jan 2008 22:38:31 +0000 (23:38 +0100)]
[MIPS] Assume R4000/R4400 newer than 3.0 don't have the mfc0 count bug

This seems as reasonable assumption and gets some SNI machines to work
which currently must rely on the cp0 counter as clocksource.

Signed-off-by: Thomas Bogendoerfer <>
Signed-off-by: Ralf Baechle <>
14 years ago[MIPS] Fix IP32 breakage
Thomas Bogendoerfer [Sat, 5 Jan 2008 11:13:11 +0000 (12:13 +0100)]
[MIPS] Fix IP32 breakage

- suppress master aborts during config read
- set io_map_base
- only fixup end of iomem resource to avoid failing request_resource
  in serial driver
- killed useless setting of crime_int bit, which caused wrong interrupts
- use physcial address for serial port platform device and let 8250
  driver do the ioremap

Signed-off-by: Thomas Bogendoerfer <>
Signed-off-by: Ralf Baechle <>
14 years ago[MIPS] Alchemy: Fix use of __init code bug exposed by modpost warning
Sergei Shtylyov [Tue, 25 Dec 2007 18:00:45 +0000 (21:00 +0300)]
[MIPS] Alchemy: Fix use of __init code bug exposed by modpost warning

WARNING: vmlinux.o(.text+0x1ca608): Section mismatch: reference to
.init.text: add_wired_entry (between 'config_access' and 'config_read')

by refactoring the code calling add_wired_entry() from config_access() to
a separate function which is called from aau1x_pci_setup(). While at it:

- make some unnecassarily global variables 'static';

- fix the letter case, whitespace, etc. in the comments...

Signed-off-by: Sergei Shtylyov <>
Signed-off-by: Ralf Baechle <>
14 years ago[MIPS] Move inclusing of kernel/time/Kconfig menu to appropriate place
Atsushi Nemoto [Sun, 11 Nov 2007 16:05:16 +0000 (01:05 +0900)]
[MIPS] Move inclusing of kernel/time/Kconfig menu to appropriate place

CONFIG_NO_HZ, CONFIG_HIGH_RES_TIMERS should be selected in "Kernel
type" menu, not in "CPU selection" menu.

Signed-off-by: Atsushi Nemoto <>
Signed-off-by: Ralf Baechle <>
14 years agoV4L/DVB (6916): ivtv: udelay has to be changed *after* the eeprom was read, not before
Hans Verkuil [Mon, 7 Jan 2008 08:46:26 +0000 (06:46 -0200)]
V4L/DVB (6916): ivtv: udelay has to be changed *after* the eeprom was read, not before

The eeprom decides which Hauppauge model it is, so the decision whether to
use an udelay of 5 or 10 needs to be taken after reading the eeprom, not

Signed-off-by: Hans Verkuil <>
Signed-off-by: Mauro Carvalho Chehab <>
14 years agoV4L/DVB (6944a): Fix Regression VIDIOCGMBUF ioctl hangs on bttv driver
Gregor Jasny [Sun, 6 Jan 2008 14:15:54 +0000 (11:15 -0300)]
V4L/DVB (6944a): Fix Regression VIDIOCGMBUF ioctl hangs on bttv driver

Fix bttv VIDIOCGMBUF locking like done in commit

Signed-off-by: Gregor Jasny <>
Signed-off-by: Mauro Carvalho Chehab <>
14 years agoMerge
Linus Torvalds [Sun, 6 Jan 2008 22:35:19 +0000 (14:35 -0800)]

  [ARM] 4691/1: add missing i2c_board_info struct for at91rm9200
  [ARM] 4735/1: Unbreak pxa25x suspend/resume

14 years agoLinux 2.6.24-rc7
Linus Torvalds [Sun, 6 Jan 2008 21:45:38 +0000 (13:45 -0800)]
Linux 2.6.24-rc7

14 years agoCPU hotplug: fix cpu_is_offline() on !CONFIG_HOTPLUG_CPU
Ingo Molnar [Sun, 30 Dec 2007 10:58:17 +0000 (11:58 +0100)]
CPU hotplug: fix cpu_is_offline() on !CONFIG_HOTPLUG_CPU

make randconfig bootup testing found that the cpufreq code
crashes on bootup, if the powernow-k8 driver is enabled and
if maxcpus=1 passed on the boot line to a !CONFIG_HOTPLUG_CPU

First lockdep found out that there's an inconsistent unlock

 [ BUG: bad unlock balance detected! ]
 swapper/1 is trying to release lock (&per_cpu(cpu_policy_rwsem, cpu)) at:
 [<ffffffff806ffd8e>] unlock_policy_rwsem_write+0x3c/0x42
 but there are no more locks to release!

Call Trace:
 [<ffffffff806ffd8e>] unlock_policy_rwsem_write+0x3c/0x42
 [<ffffffff80251c29>] print_unlock_inbalance_bug+0x104/0x12c
 [<ffffffff80252f3a>] mark_held_locks+0x56/0x94
 [<ffffffff806ffd8e>] unlock_policy_rwsem_write+0x3c/0x42
 [<ffffffff807008b6>] cpufreq_add_dev+0x2a8/0x5c4

then shortly afterwards the cpufreq code crashed on an assert:

 ------------[ cut here ]------------
 kernel BUG at drivers/cpufreq/cpufreq.c:1068!
 invalid opcode: 0000 [1] SMP
 Call Trace:
  [<ffffffff805145d6>] sysdev_driver_unregister+0x5b/0x91
  [<ffffffff806ff520>] cpufreq_register_driver+0x15d/0x1a2
  [<ffffffff80cc0596>] powernowk8_init+0x86/0x94
 ---[ end trace 1e9219be2b4431de ]---

the bug was caused by maxcpus=1 bootup, which brought up the
secondary core as !cpu_online() but !cpu_is_offline() either,
which on on !CONFIG_HOTPLUG_CPU is always 0 (include/linux/cpu.h):

  /* CPUs don't go offline once they're online w/o CONFIG_HOTPLUG_CPU */
  static inline int cpu_is_offline(int cpu) { return 0; }

but the cpufreq code uses cpu_online() and cpu_is_offline() in
a mixed way - the low-level drivers use cpu_online(), while
the cpufreq core uses cpu_is_offline(). This opened up the
possibility to add the non-initialized sysdev device of the
secondary core:

 cpufreq-core: trying to register driver powernow-k8
 cpufreq-core: adding CPU 0
 powernow-k8: BIOS error - no PSB or ACPI _PSS objects
 cpufreq-core: initialization failed
 cpufreq-core: adding CPU 1
 cpufreq-core: initialization failed

which then blew up. The fix is to make cpu_is_offline() always
the negation of cpu_online(). With that fix applied the kernel
boots up fine without crashing:

 Calling initcall 0xffffffff80cc0510: powernowk8_init+0x0/0x94()
 powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 3800+ processors (1 cpu cores) (version 2.20.00)
 powernow-k8: BIOS error - no PSB or ACPI _PSS objects
 initcall 0xffffffff80cc0510: powernowk8_init+0x0/0x94() returned -19.
 initcall 0xffffffff80cc0510 ran for 19 msecs: powernowk8_init+0x0/0x94()
 Calling initcall 0xffffffff80cc328f: init_lapic_nmi_sysfs+0x0/0x39()

We could fix this by making CPU enumeration aware of max_cpus, but that
would be more fragile IMO, and the cpu_online(cpu) != cpu_is_offline(cpu)
possibility was quite confusing and a continuous source of bugs too.

Most distributions have kernels with CPU hotplug enabled, so this bug
remained hidden for a long time.

Bug forensics:

The broken cpu_is_offline() API variant was introduced via:

 commit a59d2e4e6977e7b94e003c96a41f07e96cddc340
 Author: Rusty Russell <>
 Date:   Mon Mar 8 06:06:03 2004 -0800

     [PATCH] minor cleanups for hotplug CPUs

( this predates linux-2.6.git, this commit is available from Thomas's
  historic git tree. )

Then 1.5 years later the cpufreq code made use of it:

 commit c32b6b8e524d2c337767d312814484d9289550cf
 Author: Ashok Raj <>
 Date:   Sun Oct 30 14:59:54 2005 -0800

     [PATCH] create and destroy cpufreq sysfs entries based on cpu notifiers

 +       if (cpu_is_offline(cpu))
 +               return 0;

which is a correct use of the subtly broken new API. v2.6.15 then
shipped with this bug included.

then it took two more years for random-kernel qa to hit it.

Signed-off-by: Thomas Gleixner <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agohda_intel suspend latency: shorten codec read
Ingo Molnar [Sun, 6 Jan 2008 20:09:53 +0000 (21:09 +0100)]
hda_intel suspend latency: shorten codec read

not sleeping for every codec read/write but doing a short udelay and
a conditional reschedule has cut suspend+resume latency by about 1
second on my T60.

The patch also fixes the unexpected codec-connection errors that
happen more often in the new power-save mode:

Signed-off-by: Ingo Molnar <>
Acked-by: Takashi Iwai <>
Signed-off-by: Linus Torvalds <>
14 years ago[ARM] 4691/1: add missing i2c_board_info struct for at91rm9200
Jan Altenberg [Mon, 10 Dec 2007 09:06:40 +0000 (10:06 +0100)]
[ARM] 4691/1: add missing i2c_board_info struct for at91rm9200

- Add missing i2c_board_info struct for at91rm9200

Signed-off-by: Jan Altenberg <>
Acked-by: Andrew Victor <>
Signed-off-by: Russell King <>
14 years agofix: using joysticks in 32 bit applications on 64 bit systems
Akos Maroy [Sun, 6 Jan 2008 10:15:55 +0000 (11:15 +0100)]
fix: using joysticks in 32 bit applications on 64 bit systems

unfortunately 32 bit apps don't see the joysticks on a 64 bit system.
this prevents one playing X-Plane ( or other
32-bit games with joysticks.

this is a known issue, and already raised several times:

unfortunately this is still not fixed in the mainline kernel.

it would be nice to have this fixed, so that people can play these games
without having to patch their kernel.

the following patch solves the problem on 2.6.22.

Signed-off-by: Thomas Gleixner <>
Acked-by: Christoph Hellwig <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agoRevert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done""
Linus Torvalds [Sun, 6 Jan 2008 18:17:12 +0000 (10:17 -0800)]
Revert "scsi: revert "[SCSI] Get rid of scsi_cmnd->done""

This reverts commit ac40532ef0b8649e6f7f83859ea0de1c4ed08a19, which gets
us back the original cleanup of 6f5391c283d7fdcf24bf40786ea79061919d1e1d.

It turns out that the bug that was triggered by that commit was
apparently not actually triggered by that commit at all, and just the
testing conditions had changed enough to make it appear to be due to it.

The real problem seems to have been found by Peter Osterlund:

  "pktcdvd sets it [block device size] when opening the /dev/pktcdvd
   device, but when the drive is later opened as /dev/scd0, there is
   nothing that sets it back.  (Btw, 40944 is possible if the disk is a
   CDRW that was formatted with "cdrwtool -m 10236".)

   The problem is that pktcdvd opens the cd device in non-blocking mode
   when pktsetup is run, and doesn't close it again until pktsetup -d is
   run.  The effect is that if you meanwhile open the cd device,
   blkdev.c:do_open() doesn't call bd_set_size() because
   bdev->bd_openers is non-zero."

In particular, to repeat the bug (regardless of whether commit
6f5391c283d7fdcf24bf40786ea79061919d1e1d is applied or not):

  " 1. Start with an empty drive.
    2. pktsetup 0 /dev/scd0
    3. Insert a CD containing an isofs filesystem.
    4. mount /dev/pktcdvd/0 /mnt/tmp
    5. umount /mnt/tmp
    6. Press the eject button.
    7. Insert a DVD containing a non-writable filesystem.
    8. mount /dev/scd0 /mnt/tmp
    9. find /mnt/tmp -type f -print0 | xargs -0 sha1sum >/dev/null
    10. If the DVD contains data beyond the physical size of a CD, you
        get I/O errors in the terminal, and dmesg reports lots of
        "attempt to access beyond end of device" errors."

which in turn is because the nested open after the media change won't
cause the size to be set properly (because the original open still holds
the block device, and we only do the bd_set_size() when we don't have
other people holding the device open).

The proper fix for that is probably to just do something like

bdev->bd_inode->i_size = (loff_t)get_capacity(disk)<<9;

in fs/block_dev.c:do_open() even for the cases where we're not the
original opener (but *not* call bd_set_size(), since that will also
change the block size of the device).

Cc: Peter Osterlund <>
Cc: James Bottomley <>
Cc: Matthew Wilcox <>
Cc: Ingo Molnar <>
Cc: Andrew Morton <>
Signed-off-by: Linus Torvalds <>
14 years ago[SCSI] SRP transport: only remove our own entries
Dave Dillow [Fri, 4 Jan 2008 02:34:49 +0000 (21:34 -0500)]
[SCSI] SRP transport: only remove our own entries

The SCSI SRP transport class currently iterates over all children
devices of the host that is being removed in srp_remove_host(). However,
not all of those children were created by the SRP transport, and
removing them will cause corruption and an oops when their creator tries
to remove them.

Signed-off-by: David Dillow <>
Acked-by: FUJITA Tomonori <>
Signed-off-by: James Bottomley <>
14 years agoMerge git://
Linus Torvalds [Fri, 4 Jan 2008 18:44:17 +0000 (10:44 -0800)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git://
  [ISDN]: i4l: Fix DLE handling for i4l-audio
  [ISDN] i4l: 'NO CARRIER' message lost after ldisc flush
  [CONNECTOR]: Return proper error code in cn_call_callback()
  [INET]: Fix netdev renaming and inet address labels
  [CASSINI]: Bump driver version and release date.
  [CASSINI]: Fix two obvious NAPI bugs.
  [CASSINI]: Set skb->truesize properly on receive packets.
  [CASSINI]: Program parent Intel31154 bridge when necessary.
  [CASSINI]: Revert 'dont touch page_count'.
  [CASSINI]: Fix endianness bug.
  [XFRM]: Do not define km_migrate() if !CONFIG_XFRM_MIGRATE
  [X25]: Add missing x25_neigh_put

14 years ago[ISDN]: i4l: Fix DLE handling for i4l-audio
Matthias Goebl [Fri, 4 Jan 2008 11:45:28 +0000 (03:45 -0800)]
[ISDN]: i4l: Fix DLE handling for i4l-audio

The DLE handling in i4l-audio seems to be broken.

It produces spurious DLEs so asterisk 1.2.24 with chan_modem_i4l
gets irritated, the error message is:
"chan_modem_i4l.c:450 i4l_read: Value of escape is ^ (17)".
-> There shouldn't be a DLE-^.
If a spurious DLE-ETX occurs, the audio connection even dies.
I use a "AVM Fritz!PCI" isdn card.

I found two issues that only appear if ISDN_AUDIO_SKB_DLECOUNT(skb) > 0:
- The loop in isdn_tty.c:isdn_tty_try_read() doesn't escape a DLE if it's
  the last character.

- The loop in isdn_common.c:isdn_readbchan_tty() doesn't copy its characters,
  it only remembers the last one ("last = *p;").

  Compare it with the loop in isdn_common.c:isdn_readbchan(), that *does*
  copy them ("*cp++ = *p;") correctly.
  The special handling of the "last" character made it more difficult.
  I compared it to linux-2.4.19: There was no "last"-handling and both loops
  did escape and copy all characters correctly.

Signed-off-by: Matthias Goebl <>
Signed-off-by: David S. Miller <>
14 years ago[ISDN] i4l: 'NO CARRIER' message lost after ldisc flush
Matthias Goebl [Fri, 4 Jan 2008 10:19:30 +0000 (02:19 -0800)]
[ISDN] i4l: 'NO CARRIER' message lost after ldisc flush

The ISDN tty layer doesn't produce a 'NO CARRIER' message after hangup.

I suppose it broke when tty_buffer_flush() has been added to
tty_ldisc_flush() in the commit below.

For isdn_tty_modem_result(RESULT_NO_CARRIER..) the
message inserted via isdn_tty_at_cout() -> tty_insert_flip_char()
is flushed immediately by tty_ldisc_flush() -> tty_buffer_flush().
More annoyingly, the audio abort sequence DLE-ETX is also lost.

This patch fixes only active audio connections, because I assume that nobody
changes the line discipline for audio.

For non-audio connections the problem remains.
Maybe we can remove the tty_ldisc_flush() in isdn_tty_modem_result()
at all because it's done at tty_close?

On Mon, May 07, 2007 at 04:05:57PM -0500, Paul Fulghum wrote:
> Flush the tty flip buffer when the line discipline
> input queue is flushed, including the user call
> tcflush(TCIFLUSH/TCIOFLUSH). This prevents unexpected
> stale data after a user application calls tcflush().
> Cc: Alan Cox <>
> Cc: Antonino Ingargiola <>
> Signed-off-by: Paul Fulghum <>
> --- a/drivers/char/tty_io.c 2007-05-04 05:46:55.000000000 -0500
> +++ b/drivers/char/tty_io.c 2007-05-05 03:23:46.000000000 -0500
> @@ -1240,6 +1263,7 @@ void tty_ldisc_flush(struct tty_struct *
>   ld->flush_buffer(tty);
>   tty_ldisc_deref(ld);
>   }
> + tty_buffer_flush(tty);

Signed-off-by: Matthias Goebl <>
Signed-off-by: David S. Miller <>
14 years ago[CONNECTOR]: Return proper error code in cn_call_callback()
Li Zefan [Fri, 4 Jan 2008 09:52:02 +0000 (01:52 -0800)]
[CONNECTOR]: Return proper error code in cn_call_callback()

Error code should be set to EINVAL instead of ENODEV if !queue_work().
There's another call of queue_work() which may set err to EINVAL.

Signed-off-by: Li Zefan <>
Signed-off-by: David S. Miller <>
14 years ago[INET]: Fix netdev renaming and inet address labels
Mark McLoughlin [Fri, 4 Jan 2008 08:56:25 +0000 (00:56 -0800)]
[INET]: Fix netdev renaming and inet address labels

When re-naming an interface, the previous secondary address
labels get lost e.g.

  $> brctl addbr foo
  $> ip addr add dev foo
  $> ip addr add dev foo label foo:00
  $> ip addr show dev foo | grep inet
    inet scope global foo
    inet scope global foo:00
  $> ip link set foo name bar
  $> ip addr show dev bar | grep inet
    inet scope global bar
    inet scope global bar:2

Turns out to be a simple thinko in inetdev_changename() - clearly we
want to look at the address label, rather than the device name, for
a suffix to retain.

Signed-off-by: Mark McLoughlin <>
Signed-off-by: David S. Miller <>
14 years ago[CASSINI]: Bump driver version and release date.
David S. Miller [Fri, 4 Jan 2008 08:16:58 +0000 (00:16 -0800)]
[CASSINI]: Bump driver version and release date.

Signed-off-by: David S. Miller <>
14 years ago[CASSINI]: Fix two obvious NAPI bugs.
David S. Miller [Fri, 4 Jan 2008 08:23:18 +0000 (00:23 -0800)]
[CASSINI]: Fix two obvious NAPI bugs.

1) close should do napi_disable() not napi_enable
2) remove unused local var 'todo'

Signed-off-by: David S. Miller <>
14 years ago[CASSINI]: Set skb->truesize properly on receive packets.
David S. Miller [Fri, 4 Jan 2008 08:03:56 +0000 (00:03 -0800)]
[CASSINI]: Set skb->truesize properly on receive packets.

skb->truesize was not being incremented at all to
reflect the page based data added to RX SKBs.

Signed-off-by: David S. Miller <>
14 years ago[CASSINI]: Program parent Intel31154 bridge when necessary.
David S. Miller [Fri, 4 Jan 2008 04:11:31 +0000 (20:11 -0800)]
[CASSINI]: Program parent Intel31154 bridge when necessary.

Signed-off-by: David S. Miller <>
14 years ago[CASSINI]: Revert 'dont touch page_count'.
David S. Miller [Fri, 4 Jan 2008 03:33:50 +0000 (19:33 -0800)]
[CASSINI]: Revert 'dont touch page_count'.

This reverts changeset fa4f0774d7c6cccb4d1fda76b91dd8eddcb2dd6a
([CASSINI]: dont touch page_count) because it breaks the driver.

The local page counting added by this changeset did not account
for the asynchronous page count changes done by kfree_skb()
and friends.

The change adds extra atomics and on top of it all appears to be
totally unnecessary as well.

Signed-off-by: David S. Miller <>
Acked-by: Nick Piggin <>
14 years ago[CASSINI]: Fix endianness bug.
Al Viro [Fri, 4 Jan 2008 02:49:00 +0000 (18:49 -0800)]
[CASSINI]: Fix endianness bug.

Here's proposed fix for RX checksum handling in cassini; it affects
little-endian working with half-duplex gigabit, but obviously needs
testing on big-endian too.

The problem is, we need to convert checksum to fixed-endian *before*
correcting for (unstripped) FCS.  On big-endian it won't matter
(conversion is no-op), on little-endian it will, but only if FCS is
not stripped by hardware; i.e. in half-duplex gigabit mode when
->crc_size is set.

cassini.c part is that fix, cassini.h one consists of trivial
endianness annotations.  With that applied the sucker is endian-clean,
according to sparse.

Signed-off-by: Al Viro <>
Signed-off-by: David S. Miller <>
14 years ago[XFRM]: Do not define km_migrate() if !CONFIG_XFRM_MIGRATE
Eric Dumazet [Fri, 4 Jan 2008 04:43:21 +0000 (20:43 -0800)]
[XFRM]: Do not define km_migrate() if !CONFIG_XFRM_MIGRATE

In include/net/xfrm.h we find :

extern int km_migrate(struct xfrm_selector *sel, u8 dir, u8 type,
                      struct xfrm_migrate *m, int num_bundles);

We can also guard the function body itself in net/xfrm/xfrm_state.c
with same condition.

(Problem spoted by sparse checker)
make C=2 net/xfrm/xfrm_state.o
net/xfrm/xfrm_state.c:1765:5: warning: symbol 'km_migrate' was not declared. Should it be static?

Signed-off-by: Eric Dumazet <>
Signed-off-by: David S. Miller <>
14 years ago[X25]: Add missing x25_neigh_put
Julia Lawall [Wed, 2 Jan 2008 03:30:30 +0000 (19:30 -0800)]
[X25]: Add missing x25_neigh_put

The function x25_get_neigh increments a reference count.  At the point of
the second goto out, the result of calling x25_get_neigh is only stored in
a local variable, and thus no one outside the function will be able to
decrease the reference count.  Thus, x25_neigh_put should be called before
the return in this case.

The problem was found using the following semantic match.

// <smpl>

type T,T1,T2;
identifier E;
statement S;
expression x1,x2,x3;
int ret;

  T E;
* if ((E = x25_get_neigh(...)) == NULL)
  ... when != x25_neigh_put(...,(T1)E,...)
      when != if (E != NULL) { ... x25_neigh_put(...,(T1)E,...); ...}
      when != x1 = (T1)E
      when != E = x3;
      when any
  if (...) {
    ... when != x25_neigh_put(...,(T2)E,...)
        when != if (E != NULL) { ... x25_neigh_put(...,(T2)E,...); ...}
        when != x2 = (T2)E
*   return;
*   return ret;
// </smpl>

Signed-off-by: Julia Lawall <>
Signed-off-by: David S. Miller <>
14 years ago[IA64] Update Altix nofault code
Russ Anderson [Thu, 3 Jan 2008 16:23:49 +0000 (10:23 -0600)]
[IA64] Update Altix nofault code

Montecito and Montvale behaves slightly differently than previous
Itanium processors, resulting in the MCA due to a failed PIO read
to sometimes surfacing outside the nofault code.  This code is
based on discussions with Intel CPU architects and verified at
customer sites.

Signed-off-by: Russ Anderson <>
Signed-off-by: Tony Luck <>
14 years ago[IA64] Update Altix BTE error return status patch
Russ Anderson [Thu, 20 Dec 2007 23:46:52 +0000 (17:46 -0600)]
[IA64] Update Altix BTE error return status patch

I neglected to send Tony the most recent version of the
patch ("Fix Altix BTE error return status") applied
as commit: 64135fa97ce016058f95345425a9ebd04ee1bd2a

This patch gets it up to date.  Without this patch
on shub2, if there is no error xpcBteUnmappedError is
returned instead of xpcSuccess.

Signed-off-by: Russ Anderson (
Signed-off-by: Tony Luck <>
14 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Thu, 3 Jan 2008 20:07:49 +0000 (12:07 -0800)]
Merge branch 'for-linus' of git://git./linux/kernel/git/roland/infiniband

* 'for-linus' of git://
  IB/srp: Fix list corruption/oops on module reload

14 years agoConsole is utf-8 by default
Samuel Thibault [Thu, 3 Jan 2008 16:17:54 +0000 (16:17 +0000)]
Console is utf-8 by default

The console is now by default in UTF-8 mode.  Fix the documentation on
the default value, so that we can explain behaviour that otherwise
causes bug-reports like this:

Also add the needed "vt." prefix, so that the boot-time config options
to switch back to the legacy 8-bit mode is actually documented

Signed-off-by: Samuel Thibault <>
Signed-off-by: Linus Torvalds <>
14 years agoMerge branch 'release' of git://
Linus Torvalds [Thu, 3 Jan 2008 20:02:00 +0000 (12:02 -0800)]
Merge branch 'release' of git://

* 'release' of git://
  hwmon: (w83627ehf) Be more careful when changing VID input level

14 years agoMerge git://
Linus Torvalds [Thu, 3 Jan 2008 20:01:00 +0000 (12:01 -0800)]
Merge git://git./linux/kernel/git/mingo/linux-2.6-sched

* git://
  sched: fix gcc warnings

14 years agoMerge git://
Linus Torvalds [Thu, 3 Jan 2008 19:59:59 +0000 (11:59 -0800)]
Merge git://

* git://
  NFSv4: Fix open_to_lock_owner sequenceid allocation...
  NFSv4: nfs4_open_confirm must not set the open_owner as confirmed on error
  NFS: add newline to kernel warning message in auth_gss code
  NFSv4: Fix circular locking dependency in nfs4_kill_renewd
  NFS: Fix a possible Oops in fs/nfs/super.c

14 years agoMerge git://
Linus Torvalds [Thu, 3 Jan 2008 19:59:27 +0000 (11:59 -0800)]
Merge git://git./linux/kernel/git/jejb/scsi-rc-fixes-2.6

* git://
  [SCSI] scsi_sysfs: restore prep_fn when ULD is removed

14 years agoIB/srp: Fix list corruption/oops on module reload
David Dillow [Thu, 3 Jan 2008 18:25:27 +0000 (10:25 -0800)]
IB/srp: Fix list corruption/oops on module reload

Add a missing call to srp_remove_host() in srp_remove_one() so that we
don't leak SRP transport class list entries.

Tested-by: David Dillow <>
Acked-by: FUJITA Tomonori <>
Signed-off-by: Roland Dreier <>
14 years ago[ARM] 4735/1: Unbreak pxa25x suspend/resume
Richard Purdie [Tue, 1 Jan 2008 23:54:49 +0000 (00:54 +0100)]
[ARM] 4735/1: Unbreak pxa25x suspend/resume

Suspend/resume on the pxa25x was fairly obviously broken in revision

This patch fixes the damage by adding back the missing code.

Signed-off-by: Richard Purdie <>
Acked-by: Eric Miao <>
Signed-off-by: Russell King <>
14 years agoNFSv4: Fix open_to_lock_owner sequenceid allocation...
Trond Myklebust [Wed, 2 Jan 2008 21:27:16 +0000 (16:27 -0500)]
NFSv4: Fix open_to_lock_owner sequenceid allocation...

NFSv4 file locking is currently completely broken since it doesn't respect
the OPEN sequencing when it is given an unconfirmed lock_owner and needs to
do an open_to_lock_owner. Worse: it breaks the sunrpc rules by doing a
GFP_KERNEL allocation inside an rpciod callback.

Fix is to preallocate the open seqid structure in nfs4_alloc_lockdata if we
see that the lock_owner is unconfirmed.
Then, in nfs4_lock_prepare() we wait for either the open_seqid, if
the lock_owner is still unconfirmed, or else fall back to waiting on the
standard lock_seqid.

Signed-off-by: Trond Myklebust <>
14 years agoNFSv4: nfs4_open_confirm must not set the open_owner as confirmed on error
Trond Myklebust [Wed, 2 Jan 2008 20:19:18 +0000 (15:19 -0500)]
NFSv4: nfs4_open_confirm must not set the open_owner as confirmed on error

RFC3530 states that the open_owner is confirmed if and only if the client
sends an OPEN_CONFIRM request with the appropriate sequence id and stateid
within the lease period.

Signed-off-by: Trond Myklebust <>
14 years agoNFS: add newline to kernel warning message in auth_gss code
James Morris [Wed, 26 Dec 2007 00:20:43 +0000 (11:20 +1100)]
NFS: add newline to kernel warning message in auth_gss code

Add newline to kernel warning message in gss_create().

Signed-off-by: James Morris <>
Signed-off-by: Trond Myklebust <>
14 years agoNFSv4: Fix circular locking dependency in nfs4_kill_renewd
Trond Myklebust [Wed, 2 Jan 2008 18:52:03 +0000 (13:52 -0500)]
NFSv4: Fix circular locking dependency in nfs4_kill_renewd

Erez Zadok reports:

[ INFO: possible circular locking dependency detected ]
2.6.24-rc6-unionfs2 #80
umount.nfs4/4017 is trying to acquire lock:
 (&(&clp->cl_renewd)->work){--..}, at: [<c0223e53>]

but task is already holding lock:
 (&clp->cl_sem){----}, at: [<f8879897>] nfs4_kill_renewd+0x17/0x29 [nfs]

which lock already depends on the new lock.

the existing dependency chain (in reverse order) is:

-> #1 (&clp->cl_sem){----}:
       [<c0230699>] __lock_acquire+0x9cc/0xb95
       [<c0230c39>] lock_acquire+0x5f/0x78
       [<c0397cb8>] down_read+0x3a/0x4c
       [<f88798e6>] nfs4_renew_state+0x1c/0x1b8 [nfs]
       [<c0223821>] run_workqueue+0xd9/0x1ac
       [<c0224220>] worker_thread+0x7a/0x86
       [<c0226b49>] kthread+0x3b/0x62
       [<c02033a3>] kernel_thread_helper+0x7/0x10
       [<ffffffff>] 0xffffffff

-> #0 (&(&clp->cl_renewd)->work){--..}:
       [<c0230589>] __lock_acquire+0x8bc/0xb95
       [<c0230c39>] lock_acquire+0x5f/0x78
       [<c0223e87>] __cancel_work_timer+0xb7/0x17f
       [<c0223f5a>] cancel_delayed_work_sync+0xb/0xd
       [<f887989e>] nfs4_kill_renewd+0x1e/0x29 [nfs]
       [<f885a8f6>] nfs_free_client+0x37/0x9e [nfs]
       [<f885ab20>] nfs_put_client+0x5d/0x62 [nfs]
       [<f885ab9a>] nfs_free_server+0x75/0xae [nfs]
       [<f8862672>] nfs4_kill_super+0x27/0x2b [nfs]
       [<c0258aab>] deactivate_super+0x3f/0x51
       [<c0269668>] mntput_no_expire+0x42/0x67
       [<c025d0e4>] path_release_on_umount+0x15/0x18
       [<c0269d30>] sys_umount+0x1a3/0x1cb
       [<c0269d71>] sys_oldumount+0x19/0x1b
       [<c02026ca>] sysenter_past_esp+0x5f/0xa5
       [<ffffffff>] 0xffffffff

Looking at the code, it would seem that taking the clp->cl_sem in
nfs4_kill_renewd is completely redundant, since we're already guaranteed to
have exclusive access to the nfs_client (we're shutting down).

Signed-off-by: Trond Myklebust <>
14 years agoNFS: Fix a possible Oops in fs/nfs/super.c
Trond Myklebust [Wed, 2 Jan 2008 18:28:57 +0000 (13:28 -0500)]
NFS: Fix a possible Oops in fs/nfs/super.c

Sigh... commit 4584f520e1f773082ef44ff4f8969a5d992b16ec (NFS: Fix NFS
mountpoint crossing...) had a slight flaw: server can be NULL if sget()
returned an existing superblock.

Fix the fix by dereferencing s->s_fs_info.

Thanks to Coverity/Adrian Bunk and Frank Filz for spotting the bug.

Also add in the same namespace Oops fix for NFSv4 in both the mountpoint
crossing case, and the referral case.

Signed-off-by: Trond Myklebust <>
14 years agohwmon: (w83627ehf) Be more careful when changing VID input level
Jean Delvare [Thu, 3 Jan 2008 12:33:31 +0000 (07:33 -0500)]
hwmon: (w83627ehf) Be more careful when changing VID input level

The VID input level change has been reported to cause trouble. Be more
careful in this respect:
* Only change the level on the W83627EHF/EHG. The W83627DHG is more
  complex in this respect.
* Don't change the level if the VID pins are in output mode.
* Only set the level to TTL if VRM 9.x is used.

Signed-off-by: Jean Delvare <>
Signed-off-by: Mark M. Hoffman <>
14 years agoFix kernel/ptrace.c compile problem (missing "may_attach()")
Linus Torvalds [Wed, 2 Jan 2008 21:48:27 +0000 (13:48 -0800)]
Fix kernel/ptrace.c compile problem (missing "may_attach()")

The previous commit missed one use of "may_attach()" that had been
renamed to __ptrace_may_attach().  Tssk, tssk, Al.

Signed-off-by: Linus Torvalds <>
14 years agorestrict reading from /proc/<pid>/maps to those who share ->mm or can ptrace pid
Al Viro [Wed, 2 Jan 2008 14:09:57 +0000 (14:09 +0000)]
restrict reading from /proc/<pid>/maps to those who share ->mm or can ptrace pid

Contents of /proc/*/maps is sensitive and may become sensitive after
open() (e.g.  if target originally shares our ->mm and later does exec
on suid-root binary).

Check at read() (actually, ->start() of iterator) time that mm_struct
we'd grabbed and locked is
 - still the ->mm of target
 - equal to reader's ->mm or the target is ptracable by reader.

Signed-off-by: Al Viro <>
Acked-by: Rik van Riel <>
Signed-off-by: Linus Torvalds <>
14 years agoscsi: revert "[SCSI] Get rid of scsi_cmnd->done"
Ingo Molnar [Wed, 2 Jan 2008 16:25:34 +0000 (17:25 +0100)]
scsi: revert "[SCSI] Get rid of scsi_cmnd->done"

This reverts commit 6f5391c283d7fdcf24bf40786ea79061919d1e1d ("[SCSI]
Get rid of scsi_cmnd->done") that was supposed to be a cleanup commit,
but apparently it causes regressions:

  Bug 9370 - v2.6.24-rc2-409-g9418d5d: attempt to access beyond end of device

this patch should be reintroduced in a more split-up form to make
testing of it easier.

Signed-off-by: Ingo Molnar <>
Acked-by: Matthew Wilcox <>
Cc: James Bottomley <>
Signed-off-by: Linus Torvalds <>
14 years agoUnify /proc/slabinfo configuration
Linus Torvalds [Wed, 2 Jan 2008 21:04:48 +0000 (13:04 -0800)]
Unify /proc/slabinfo configuration

Both SLUB and SLAB really did almost exactly the same thing for
/proc/slabinfo setup, using duplicate code and per-allocator #ifdef's.

This just creates a common CONFIG_SLABINFO that is enabled by both SLUB
and SLAB, and shares all the setup code.  Maybe SLOB will want this some
day too.

Reviewed-by: Pekka Enberg <>
Signed-off-by: Linus Torvalds <>
14 years ago[SCSI] scsi_sysfs: restore prep_fn when ULD is removed
James Bottomley [Wed, 2 Jan 2008 17:14:30 +0000 (11:14 -0600)]
[SCSI] scsi_sysfs: restore prep_fn when ULD is removed

A recent bug report:

Was caused because the ULDs now set their own prep functions, but
don't necessarily reset the prep function back to the SCSI default
when they are removed.  This leads to panics if commands are sent to
the device after the module is removed because the prep_fn is still
pointing to the old module code.  The fix for this is to implement a
bus remove method that resets the prep_fn pointer correctly before
calling the ULD specific driver remove method.

Signed-off-by: James Bottomley <>
14 years agoslub: register slabinfo to procfs
Pekka Enberg [Wed, 2 Jan 2008 11:07:25 +0000 (13:07 +0200)]
slub: register slabinfo to procfs

We need to register slabinfo to procfs when CONFIG_SLUB is enabled to
make the file actually visible to user-space.

Signed-off-by: Pekka Enberg <>
Acked-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agoMerge branch 'merge' of git://
Linus Torvalds [Wed, 2 Jan 2008 05:30:42 +0000 (21:30 -0800)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  [POWERPC] Fix build failure on Cell when CONFIG_SPU_FS=y

14 years ago[POWERPC] Fix build failure on Cell when CONFIG_SPU_FS=y
Paul Mackerras [Wed, 2 Jan 2008 04:56:30 +0000 (15:56 +1100)]
[POWERPC] Fix build failure on Cell when CONFIG_SPU_FS=y

Commit aed3a8c9bb1a8623a618232087c5ff62718e3b9a introduced a
definition of notify_spus_active in .../cell/spu_syscalls.c, and
another definition under #ifndef MODULE in .../cell/spufs/sched.c.
The latter is not necessary and causes the build to fail when
CONFIG_SPU_FS=y, so this removes it.  It also removes the export
of do_notify_spus_active, which is unnecessary.

Signed-off-by: Paul Mackerras <>
Acked-by: Arnd Bergmann <>
Acked-by: Jeremy Kerr <>
14 years agoMerge git://
Linus Torvalds [Tue, 1 Jan 2008 19:33:00 +0000 (11:33 -0800)]
Merge git://git./linux/kernel/git/x86/linux-2.6-x86

* git://
  x86: fix asm-x86/msr.h for user-space export
  x86: fix asm-x86/byteorder.h for userspace export

14 years agoMerge branch 'for-linus' of git://
Linus Torvalds [Tue, 1 Jan 2008 19:32:24 +0000 (11:32 -0800)]
Merge branch 'for-linus' of git://

* 'for-linus' of git://
  leds: Fix locomo LED driver oops
  leds: Fix leds_list_lock locking issues

14 years agoslub: provide /proc/slabinfo
Pekka J Enberg [Tue, 1 Jan 2008 16:23:28 +0000 (17:23 +0100)]
slub: provide /proc/slabinfo

This adds a read-only /proc/slabinfo file on SLUB, that makes slabtop work.

[ build fix. ]

Cc: Andi Kleen <>
Cc: Christoph Lameter <>
Cc: Peter Zijlstra <>
Signed-off-by: Pekka Enberg <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Linus Torvalds <>
14 years agofix lguest rmmod "bad pgd"
Rusty Russell [Tue, 1 Jan 2008 10:48:36 +0000 (21:48 +1100)]
fix lguest rmmod "bad pgd"

After 17d57a9206b4de6ad082ac9f2d2346985abbd2aa ("x86: fix x86-32 early
fixmap initialization.") removing lg.ko caused a printk from vunmap:

mm/memory.c:115: bad pgd 004b3027.

On the second use after module load, the kernel crashes.

This fixes the immediate problem (accessed and dirty bits not set as
expected in pmd_none_or_clear_bad).  I can't see why this would cause
a crash, but I haven't been able to reproduce it once this is applied.

Signed-off-by: Rusty Russell <>
Signed-off-by: Linus Torvalds <>
14 years agox86: fix asm-x86/msr.h for user-space export
Mike Frysinger [Tue, 1 Jan 2008 18:12:15 +0000 (19:12 +0100)]
x86: fix asm-x86/msr.h for user-space export

Use __asm__ and __volatile__ in code that is exported to userspace.  Wrap
kernel functions with __KERNEL__ so they get scrubbed.

No code changed:

   text    data     bss     dec     hex    filename
   9681036 1698924 3407872 14787832 e1a4f8 vmlinux.before
   9681036 1698924 3407872 14787832 e1a4f8 vmlinux.after

Signed-off-by: Mike Frysinger <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
14 years agox86: fix asm-x86/byteorder.h for userspace export
Mike Frysinger [Tue, 1 Jan 2008 18:12:15 +0000 (19:12 +0100)]
x86: fix asm-x86/byteorder.h for userspace export

Since asm-x86/byteorder.h is exported to userspace, use __asm__ rather than
asm in its code.

Signed-Off-By: Mike Frysinger <>
Signed-off-by: Ingo Molnar <>
Signed-off-by: Thomas Gleixner <>
14 years agoleds: Fix locomo LED driver oops
Richard Purdie [Mon, 31 Dec 2007 23:11:11 +0000 (23:11 +0000)]
leds: Fix locomo LED driver oops

Fix locomo-leds to use the correct struct device to prevent an oops.

Signed-off-by: Richard Purdie <>
14 years agoleds: Fix leds_list_lock locking issues
Richard Purdie [Mon, 31 Dec 2007 23:09:44 +0000 (23:09 +0000)]
leds: Fix leds_list_lock locking issues

Covert leds_list_lock to a rw_sempahore to match previous LED trigger
locking fixes, fixing lock ordering.

Signed-off-by: Richard Purdie <>
14 years agosched: fix gcc warnings
Ingo Molnar [Sun, 30 Dec 2007 16:24:35 +0000 (17:24 +0100)]
sched: fix gcc warnings

Meelis Roos reported these warnings on sparc64:

  CC      kernel/sched.o
  In file included from kernel/sched.c:879:
  kernel/sched_debug.c: In function 'nsec_high':
  kernel/sched_debug.c:38: warning: comparison of distinct pointer types lacks a cast

the debug check in do_div() is over-eager here, because the long long
is always positive in these places. Mark this by casting them to
unsigned long long.

no change in code output:

   text    data     bss     dec     hex filename
  51471    6582     376   58429    e43d sched.o.before
  51471    6582     376   58429    e43d sched.o.after

   7f7729c111f185bf3ccea4d542abc049  sched.o.before.asm
   7f7729c111f185bf3ccea4d542abc049  sched.o.after.asm

Signed-off-by: Ingo Molnar <>
14 years agoMerge git://
Linus Torvalds [Sun, 30 Dec 2007 09:23:58 +0000 (01:23 -0800)]
Merge git://git./linux/kernel/git/davem/sparc-2.6

* git://
  [SERIAL]: Fix section mismatches in Sun serial console drivers.

14 years ago[BLUETOOTH]: put_device before device_del fix
Dave Young [Sun, 30 Dec 2007 03:17:47 +0000 (19:17 -0800)]
[BLUETOOTH]: put_device before device_del fix

Because of workqueue delay, the put_device could be called before
device_del, so move it to del_conn.

Signed-off-by: Dave Young <>
Signed-off-by: David S. Miller <>
14 years ago[TCP]: use non-delayed ACK for congestion control RTT
Gavin McCullagh [Sun, 30 Dec 2007 03:11:21 +0000 (19:11 -0800)]
[TCP]: use non-delayed ACK for congestion control RTT

When a delayed ACK representing two packets arrives, there are two RTT
samples available, one for each packet.  The first (in order of seq
number) will be artificially long due to the delay waiting for the
second packet, the second will trigger the ACK and so will not itself
be delayed.

According to rfc1323, the SRTT used for RTO calculation should use the
first rtt, so receivers echo the timestamp from the first packet in
the delayed ack.  For congestion control however, it seems measuring
delayed ack delay is not desirable as it varies independently of

The patch below causes seq_rtt and last_ackt to be updated with any
available later packet rtts which should have less (and hopefully
zero) delack delay.  The rtt value then gets passed to

Where TCP_CONG_RTT_STAMP was set, effort was made to supress RTTs from
within a TSO chunk (!fully_acked), using only the final ACK (which
includes any TSO delay) to generate RTTs.  This patch removes these
checks so RTTs are passed for each ACK to ca_ops->pkts_acked().

For non-delay based congestion control (cubic, h-tcp), rtt is
sometimes used for rtt-scaling.  In shortening the RTT, this may make
them a little less aggressive.  Delay-based schemes (eg vegas, veno,
illinois) should get a cleaner, more accurate congestion signal,
particularly for small cwnds.  The congestion control module can
potentially also filter out bad RTTs due to the delayed ack alarm by
looking at the associated cnt which (where delayed acking is in use)
should probably be 1 if the alarm went off or greater if the ACK was
triggered by a packet.

Signed-off-by: Gavin McCullagh <>
Acked-by: Ilpo Järvinen <>
Signed-off-by: David S. Miller <>
14 years ago[SERIAL]: Fix section mismatches in Sun serial console drivers.
David S. Miller [Sat, 29 Dec 2007 09:19:49 +0000 (01:19 -0800)]
[SERIAL]: Fix section mismatches in Sun serial console drivers.

We're exporting an __init function, oops :-)

The core issue here is that add_preferred_console() is marked
as __init, this makes it impossible to invoke this thing from
a driver probe routine which is what the Sparc serial drivers
need to do.

There is no harm in dropping the __init marker.  This code will
actually work properly when invoked from a modular driver,
except that init will probably not pick up the console change
without some other support code.

Then we can drop the __init from sunserial_console_match()
and we're no longer exporting an __init function to modules.

Signed-off-by: David S. Miller <>
14 years ago[IPV4] Fix ip=dhcp regression
Simon Horman [Fri, 28 Dec 2007 05:19:10 +0000 (21:19 -0800)]
[IPV4] Fix ip=dhcp regression

David Brownell pointed out a regression in my recent "Fix ip command
line processing" patch. It turns out to be a fairly blatant oversight on
my part whereby ic_enable is never set, and thus autoconfiguration is
never enabled. Clearly my testing was broken :-(

The solution that I have is to set ic_enable to 1 if we hit
ip_auto_config_setup(), which basically means that autoconfiguration is
activated unless told otherwise. I then flip ic_enable to 0 if ip=off,
ip=none, ip=::::::off or ip=::::::none using ic_proto_name();

The incremental patch is below, let me know if a non-incremental version
is prepared, as I did as for the original patch to be reverted pending a

Signed-off-by: Simon Horman <>
Signed-off-by: David S. Miller <>
14 years agoMerge branch 'merge' of git://
Linus Torvalds [Fri, 28 Dec 2007 18:37:46 +0000 (10:37 -0800)]
Merge branch 'merge' of git://git./linux/kernel/git/paulus/powerpc

* 'merge' of git://
  [POWERPC] PS3: Fix printing of os-area magic numbers
  [POWERPC] Oprofile: Remove dependency on spufs module

14 years agoMerge git://
Linus Torvalds [Fri, 28 Dec 2007 05:45:01 +0000 (21:45 -0800)]
Merge git://git./linux/kernel/git/herbert/crypto-2.6

* git://
  [CRYPTO] padlock: Fix spurious ECB page fault

14 years ago[PCI] Do not enable CRS Software Visibility by default
Linus Torvalds [Fri, 28 Dec 2007 05:21:36 +0000 (21:21 -0800)]
[PCI] Do not enable CRS Software Visibility by default

It appears that some PCI-E bridges do the wrong thing in the presense of
CRS Software Visibility and MMCONFIG.  In particular, it looks like an
ATI bridge (device ID 7936) will return 0001 in the vendor ID field of
any bridged devices indefinitely.

Not enabling CRS SV avoids the problem, and as we currently do not
really make good use of the feature anyway (we just time out rather than
do any threaded discovery as suggested by the CRS specs), we're better
off just not enabling it.

This should fix a slew of problem reports with random devices (generally
graphics adapters or fairly high-performance networking cards, since it
only affected PCI-E) not getting properly recognized on these AMD systems.

If we really want to use CRS-SV, we may end up eventually needing a
whitelist of systems where this should be enabled, along with some kind
of "pcibios_enable_crs()" query to call the system-specific code.

Suggested-by: Loic Prylli <>
Tested-by: Kai Ruhnau <>
Cc: Matthew Wilcox <>
Cc: Greg Kroah-Hartman <>
Signed-off-by: Linus Torvalds <>
14 years ago[POWERPC] PS3: Fix printing of os-area magic numbers
Geoff Levand [Sun, 23 Dec 2007 17:41:01 +0000 (04:41 +1100)]
[POWERPC] PS3: Fix printing of os-area magic numbers

Fix a bug in the printing of the os-area magic numbers which assumed
that magic numbers were zero terminated strings.  The magic numbers
are represented in memory as integers.  If the os-area sections are
not initialized correctly they could contained random data that would
be printed to the display.  Also unify the handling of header and db
magic numbers and make both of type array of u8.

Signed-off-by: Geoff Levand <>
Signed-off-by: Paul Mackerras <>
14 years ago[POWERPC] Oprofile: Remove dependency on spufs module
Bob Nelson [Fri, 14 Dec 2007 14:27:30 +0000 (01:27 +1100)]
[POWERPC] Oprofile: Remove dependency on spufs module

This removes an OProfile dependency on the spufs module.  This
dependency was causing a problem for multiplatform systems that are
built with support for Oprofile on Cell but try to load the oprofile
module on a non-Cell system.

Signed-off-by: Bob Nelson <>
Signed-off-by: Arnd Bergmann <>
Acked-by: Jeremy Kerr <>
Signed-off-by: Paul Mackerras <>
14 years ago[CRYPTO] padlock: Fix spurious ECB page fault
Herbert Xu [Fri, 28 Dec 2007 00:05:46 +0000 (11:05 +1100)]
[CRYPTO] padlock: Fix spurious ECB page fault

The xcryptecb instruction always processes an even number of blocks so
we need to ensure th existence of an extra block if we have to process
an odd number of blocks.

Signed-off-by: Herbert Xu <>
14 years agoMerge git://
Linus Torvalds [Thu, 27 Dec 2007 06:04:46 +0000 (22:04 -0800)]
Merge git://git./linux/kernel/git/davem/net-2.6

* git://
  [IPV4]: Fix ip command line processing.
  [VETH]: move veth.h to include/linux
  [NET] tc_nat: header install
  [TUNTAP]: Fix wrong debug message.
  [NETFILTER]: nf_conntrack_ipv4: fix module parameter compatibility
  mac80211: warn when receiving frames with unaligned data
  mac80211: round station cleanup timer

14 years agoMerge git://
Linus Torvalds [Thu, 27 Dec 2007 06:04:34 +0000 (22:04 -0800)]
Merge git://git./linux/kernel/git/davem/sparc-2.6

* git://
  [SPARC64]: Implement pci_resource_to_user()

14 years agoRevert quicklist need->flush fix
Christoph Lameter [Wed, 26 Dec 2007 20:43:01 +0000 (12:43 -0800)]
Revert quicklist need->flush fix

Did not fix the reported issue. Apart from other weirdness this causes a
bad link between the TLB flushing logic and the quicklists. If there is
indeed an issue that an arch needs a tlb flush before free then the arch
code needs to set tlb->need_flush before calling quicklist_free.

Signed-off-by: Christoph Lameter <>
Signed-off-by: Linus Torvalds <>
14 years ago[IPV4]: Fix ip command line processing.
Simon Horman [Wed, 26 Dec 2007 04:54:42 +0000 (20:54 -0800)]
[IPV4]: Fix ip command line processing.

Recently the documentation in Documentation/nfsroot.txt was
update to note that in fact ip=off and ip=::::::off as the
latter is ignored and the default (on) is used.

This was certainly a step in the direction of reducing confusion.
But it seems to me that the code ought to be fixed up so that
ip=::::::off actually turns off ip autoconfiguration.

This patch also notes more specifically that ip=on (aka ip=::::::on)
is the default.

Signed-off-by: Simon Horman <>
Signed-off-by: David S. Miller <>
14 years ago[VETH]: move veth.h to include/linux
Stephen Hemminger [Wed, 26 Dec 2007 01:23:59 +0000 (17:23 -0800)]
[VETH]: move veth.h to include/linux

Move veth.h from net/ to linux/ since it is a user api, and add it to
user header processing Kbuild.

[ Use header-y as suggested by Sam Ravnborg.  -DaveM ]

Signed-off-by: Stephen Hemminger <>
Signed-off-by: David S. Miller <>
14 years ago[NET] tc_nat: header install
Stephen Hemminger [Tue, 25 Dec 2007 05:59:24 +0000 (21:59 -0800)]
[NET] tc_nat: header install

iproute2 build needs tc_nat.h header from kernel make install_headers.

Signed-off-by: Stephen Hemminger <>
Signed-off-by: David S. Miller <>
14 years ago[TUNTAP]: Fix wrong debug message.
Toyo Abe [Tue, 25 Dec 2007 05:29:35 +0000 (21:29 -0800)]
[TUNTAP]: Fix wrong debug message.

This is a trivial fix of debug message.
When a persist flag is set, the message should say "enabled".

Signed-off-by: Toyo Abe <>
Signed-off-by: David S. Miller <>
14 years ago[NETFILTER]: nf_conntrack_ipv4: fix module parameter compatibility
Patrick McHardy [Tue, 25 Dec 2007 05:09:10 +0000 (21:09 -0800)]
[NETFILTER]: nf_conntrack_ipv4: fix module parameter compatibility

Some users do "modprobe ip_conntrack hashsize=...". Since we have the
module aliases this loads nf_conntrack_ipv4 and nf_conntrack, the
hashsize parameter is unknown for nf_conntrack_ipv4 however and makes
it fail.

Allow to specify hashsize= for both nf_conntrack and nf_conntrack_ipv4.

Note: the nf_conntrack message in the ringbuffer will display an
incorrect hashsize since nf_conntrack is first pulled in as a
dependency and calculates the size itself, then it gets changed
through a call to nf_conntrack_set_hashsize().

Signed-off-by: Patrick McHardy <>
Signed-off-by: David S. Miller <>
14 years agomac80211: warn when receiving frames with unaligned data
Johannes Berg [Tue, 18 Dec 2007 14:11:35 +0000 (15:11 +0100)]
mac80211: warn when receiving frames with unaligned data

This patch makes mac80211 warn (once) when the driver passes up a
frame in which the payload data is not aligned on a four-byte
boundary, with a long comment for people who run into the condition
and need to know what to do.

Signed-off-by: Johannes Berg <>
Signed-off-by: John W. Linville <>
14 years agomac80211: round station cleanup timer
Johannes Berg [Mon, 17 Dec 2007 14:07:43 +0000 (15:07 +0100)]
mac80211: round station cleanup timer

The station cleanup timer runs every ten seconds, the exact
timing is not relevant at all so it can well run together with
other things to save power.

Signed-off-by: Johannes Berg <>
Signed-off-by: John W. Linville <>
14 years ago[SPARC64]: Implement pci_resource_to_user()
David S. Miller [Tue, 25 Dec 2007 10:20:33 +0000 (02:20 -0800)]
[SPARC64]: Implement pci_resource_to_user()

This makes libpciaccess able to mmap() resources of the
device properly.

Signed-off-by: David S. Miller <>
14 years agoMerge git://
Linus Torvalds [Wed, 26 Dec 2007 04:21:57 +0000 (20:21 -0800)]
Merge git://git./linux/kernel/git/bart/ide-2.6

* git://
  cmd64x: fix hwif->chipset setup
  MAINTAINERS: update ide-cd entry
  ide-cd: fix 'ireason' reporting in cdrom_pc_intr()
  ide-cd: fix error message in cdrom_pc_intr()
  ide-cd: add error message for DMA error to cdrom_read_intr()
  ide-cd: fix error messages in cdrom_write_intr()
  ide-cd: add missing 'ireason' masking to cdrom_write_intr()
  ide-cd: fix error messages in cdrom_{read,write}_check_ireason()
  ide-cd: use ide_cd_release() in ide_cd_probe()
  ide-cd: fix ACER/AOpen 24X CDROM speed reporting on big-endian machines
  ide-cd: fix SAMSUNG CD-ROM SCR-3231 quirk
  drivers/ide/: Spelling fixes