29 Sep, 2008

13 commits

  • * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/linux-2.6-kgdb:
    kgdboc,tty: Fix tty polling search to use name correctly
    kgdb, x86_64: fix PS CS SS registers in gdb serial
    kgdb, x86_64: gdb serial has BX and DX reversed
    kgdb, x86, arm, mips, powerpc: ignore user space single stepping
    kgdb: could not write to the last of valid memory with kgdb

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: ASoC: Fix another cs4270 error path
    ALSA: make the CS4270 driver a new-style I2C driver

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6:
    [SCSI] qlogicpti: fix sg list traversal error in continuation entries
    [SCSI] Fix hang with split requests
    [SCSI] qla2xxx: Defer enablement of RISC interrupts until ISP initialization completes.

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    scsi: fix fall out of sg-chaining patch in qlogicpti

    Linus Torvalds
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
    sata_nv: reinstate nv_hardreset() for non generic controllers

    Linus Torvalds
     
  • Commit f072181e6403b0fe2e2aa800a005497b748fd284 ("kconfig: drop the
    ""trying to assign nonexistent symbol" warning") simply dropped the
    warnings, but it does a little more than that, it also marks the current
    .config as needed saving, so add this back.

    Signed-off-by: Roman Zippel
    Signed-off-by: Linus Torvalds

    zippel@linux-m68k.org
     
  • Recent changes to oldconfig have mixed up the silentoldconfig handling,
    so this fixes that by clearly separating that special mode, e.g.
    KCONFIG_NOSILENTUPDATE is only relevant here, the .config is written as
    needed.

    This will also properly close Bug 11230.

    Signed-off-by: Roman Zippel
    Signed-off-by: Linus Torvalds

    zippel@linux-m68k.org
     
  • The VFS interface for the 'd_compare()' is a bit special (read: 'odd'),
    because it really just essentially replaces a memcmp(). The filesystem
    is supposed to just compare the two names with whatever case-independent
    or other function.

    And when I say 'is supposed to', I obviously mean that 'procfs does odd
    things, and actually looks at the dentry that we don't even pass down,
    rather than just the name'. Which results in problems, because we
    actually call d_compare before we have even verified that the dentry is
    still hashed at all.

    And that causes a problm since the inode that procfs looks at may have
    been free'd and the d_inode pointer is NULL. procfs just assumes that
    all dentries are positive, since procfs itself never generates a
    negative one. But memory pressure will still result in the dentry
    getting torn down, and as it is removed by RCU, it still remains visible
    on some lists - and to d_compare.

    If the filesystem just did a name comparison, we wouldn't care. And we
    could just fix procfs to know about negative dentries too. But rather
    than have the low-level filesystems know about internal VFS details,
    just move the check for a unhashed dentry up a bit, so that we will only
    call d_compare on dentries that are still active.

    The actual oops this caused didn't look like a NULL pointer dereference
    because procfs did a 'container_of(inode, struct proc_inode, vfs_inode)'
    to get at its internal proc_inode information from the inode pointer,
    and accessed a field below the inode. So the oops would look something
    like

    BUG: unable to handle kernel paging request at fffffffffffffff0
    IP: [] proc_sys_compare+0x36/0x50

    and was seen on both x86-64 (Alexey Dobriyan and Hugh Dickins) and
    ppc64 (Hugh Dickins).

    Reported-by: Alexey Dobriyan
    Acked-by: Hugh Dickins
    Cc: Al Viro
    Reviewed-by: "Eric W. Biederman"
    Signed-of-by: Linus Torvalds

    Linus Torvalds
     
  • Conversion to new-style i2c driver missed the error path of the
    probe function. Fix it.

    Signed-off-by: Jean Delvare
    Cc: Timur Tabi
    Signed-off-by: Takashi Iwai

    Jean Delvare
     
  • Update the CS4270 ALSA device driver to use the new-style I2C interface.
    Starting with the 2.6.27 PowerPC kernel, I2C devices that have entries in the
    device trees can no longer be probed by old-style I2C drivers. The device
    tree for Freescale MPC8610 HPCD has included an entry for the CS4270 since
    2.6.25, but that entry was previously ignored by the PowerPC I2C subsystem.
    Since that's no longer the case, the best solution is to update the CS4270
    driver to a new-style interface, rather than try to revert the behavior of
    new PowerPC I2C subsystem.

    Signed-off-by: Timur Tabi
    Signed-off-by: Takashi Iwai

    Timur Tabi
     
  • Boaz writes:

    "I've reviewed all patches since Matthew's, and I find one small
    problem.

    In the load_cmd() there is a compound loop where the first 4 sg's are
    set then the rest are set into a memory structure in group of 7 sg's.

    Well the second 7-group and on is a bug because sg pointer does not advance.
    This is a fall out from Jens's patch."

    The reporter, Meelis Roos , verified that this patch
    does indeed fix his problem with qlogicpti.

    Signed-off-by: Jens Axboe

    Boaz Harrosh
     
  • Commit 2fd673ecf0378ddeeeb87b3605e50212e0c0ddc6 which tried to remove
    hardreset for generic accidentally removed it for all flavors as all
    others were inheriting from nv_generic_ops. This patch reinstates
    nv_hardreset() and puts it into nv_common_ops which all flavors
    inherit from. nv_generic_ops now inherits from nv_common_ops and
    overrides .hardreset to ATA_OP_NULL.

    While at it, explain why nv_hardreset and ATA_OP_NULL override are
    necessary.

    Signed-off-by: Tejun Heo
    Signed-off-by: Jeff Garzik

    Tejun Heo
     
  • The current sg list traversal logic for the continuation entries
    doesn't advance the list pointer once all seven slots are used, so the
    next continuation entry (if there is one) wrongly begins again at the
    start of the sg list.

    Fix by advancing the sg pointer after the for_each_sg().

    Reported-by: Meelis Roos
    Cc: David Miller
    Signed-off-by: James Bottomley

    Boaz Harrosh
     

27 Sep, 2008

1 commit


26 Sep, 2008

11 commits

  • * git://oss.sgi.com:8090/xfs/linux-2.6:
    [XFS] Remove xfs_iext_irec_compact_full()
    [XFS] Fix extent list corruption in xfs_iext_irec_compact_full().

    Linus Torvalds
     
  • Delete ARM's own cnt32_to_63.h as the copy in include/linux/ should now be
    used instead.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The tty_find_polling_driver() routine did not correctly check the base
    part of the tty name. This can lead to kgdboc selecting an incorrect
    driver, as well as accepting a completely invalid tty such as "echo
    ffff0 > /sys/module/kgdboc/parameters/kgdboc".

    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • On x86_64 the gdb serial register structure defines the PS (also known
    as eflags), CS and SS registers as 4 bytes entities.

    This patch splits the x86_64 regnames enum into a 32 and 64 version to
    account for the 32 bit entities in the gdb serial packets.

    Also the program counter is properly filled in for the sleeping
    threads.

    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • The BX and DX registers in the gdb serial register packet need to be
    flipped for gdb to receive the correct data.

    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • On the x86 arch, user space single step exceptions should be ignored
    if they occur in the kernel space, such as ptrace stepping through a
    system call.

    First check if it is kgdb that is executing a single step, then ensure
    it is not an accidental traversal into the user space, while in kgdb,
    any other time the TIF_SINGLESTEP is set, kgdb should ignore the
    exception.

    On x86, arm, mips and powerpc, the kgdb_contthread usage was
    inconsistent with the way single stepping is implemented in the kgdb
    core. The arch specific stub should always set the
    kgdb_cpu_doing_single_step correctly if it is single stepping. This
    allows kgdb to correctly process an instruction steps if ptrace
    happens to be requesting an instruction step over a system call.

    Signed-off-by: Jason Wessel

    Jason Wessel
     
  • On the ARM architecture, kgdb will crash the kernel if the last byte
    of valid memory is written due to a flush_icache_range flushing
    beyond the memory boundary.

    Signed-off-by: Atsuo Igarashi
    Signed-off-by: Jason Wessel

    Atsuo Igarashi
     
  • * 'linux-next' of git://git.infradead.org/~dedekind/ubifs-2.6:
    UBIFS: fix printk format warnings
    UBIFS: remove incorrect assert
    UBIFS: TNC / GC race fixes
    UBIFS: create the name of the background thread in every case

    Linus Torvalds
     
  • Yet another bug was found in xfs_iext_irec_compact_full() and while the
    source of the bug was found it wasn't an easy task to track it down
    because the conditions are very difficult to reproduce.

    A HUGE thank-you goes to Russell Cattelan and Eric Sandeen for their
    significant effort in tracking down the source of this corruption.

    xfs_iext_irec_compact_full() and xfs_iext_irec_compact_pages() are almost
    identical - they both compact indirect extent lists by moving extents from
    subsequent buffers into earlier ones. xfs_iext_irec_compact_pages() only
    moves extents if all of the extents in the next buffer will fit into the
    empty space in the buffer before it. xfs_iext_irec_compact_full() will go
    a step further and move part of the next buffer if all the extents wont
    fit. It will then shift the remaining extents in the next buffer up to the
    start of the buffer. The bug here was that we did not update er_extoff and
    this caused extent list corruption.

    It does not appear that this extra functionality gains us much. Calling
    xfs_iext_irec_compact_pages() instead will do a good enough job at
    compacting the indirect list and will be quicker too.

    For the case in xfs_iext_indirect_to_direct() the total number of extents
    in the indirect list will fit into one buffer so we will never need the
    extra functionality of xfs_iext_irec_compact_full() there.

    Also xfs_iext_irec_compact_pages() doesn't need to do a memmove() (the
    buffers will never overlap) so we don't want the performance hit that can
    incur.

    SGI-PV: 987159

    SGI-Modid: xfs-linux-melb:xfs-kern:32166a

    Signed-off-by: Lachlan McIlroy
    Signed-off-by: Eric Sandeen

    Lachlan McIlroy
     
  • If we don't move all the records from the next buffer into the current
    buffer then we need to update the er_extoff field of the next buffer as we
    shift the remaining records to the start of the buffer.

    SGI-PV: 987159

    SGI-Modid: xfs-linux-melb:xfs-kern:32165a

    Signed-off-by: Lachlan McIlroy
    Signed-off-by: Eric Sandeen
    Signed-off-by: Russell Cattelan

    Lachlan McIlroy
     
  • Commit ee1e2c82 ("IPoIB: Refresh paths instead of flushing them on SM
    change events") changed how paths are flushed on an SM event. This
    change introduces a problem if the path record query triggered by
    fails, causing path->ah to become NULL. A later successful path query
    will then trigger WARN_ON() in path_rec_completion(), and crash
    because path->ah has already been freed, so the ipoib_put_ah() inside
    the lock in path_rec_completion() may actually drop the last reference
    (contrary to the comment that claims this is safe).

    Fix this by updating path->ah and freeing old_ah only when the path
    record query is successful. This prevents the neighbour AH and that
    path AH from getting out of sync.

    This fixes

    Reported-by: Rabah Salem
    Debugged-by: Eli Cohen
    Signed-off-by: Roland Dreier
    Signed-off-by: Linus Torvalds

    Roland Dreier
     

25 Sep, 2008

15 commits