24 Dec, 2010

12 commits

  • After calling freeze_task(), try_to_freeze_tasks() see whether the
    task is stopped or traced and if so, considers it to be frozen;
    however, nothing guarantees that either the task being frozen sees
    TIF_FREEZE or the freezer sees TASK_STOPPED -> TASK_RUNNING
    transition. The task being frozen may wake up and not see TIF_FREEZE
    while the freezer fails to notice the transition and believes the task
    is still stopped.

    This patch fixes the race by making freeze_task() always go through
    fake_signal_wake_up() for applicable tasks. The function goes through
    the target task's scheduler lock and thus guarantees that either the
    target sees TIF_FREEZE or try_to_freeze_task() sees TASK_RUNNING.

    Signed-off-by: Tejun Heo
    Signed-off-by: Rafael J. Wysocki

    Tejun Heo
     
  • Use the ccflags-$ flag instead of EXTRA_CFLAGS because EXTRA_CFLAGS is
    deprecated and should now be switched. According to
    (documentation/kbuild/makefiles.txt).

    Signed-off-by: Tracey Dent
    Signed-off-by: Rafael J. Wysocki

    Tracey Dent
     
  • Commit 05aa55dddb9ee4045c320661068bea78dad6a6e5 changed routines to
    succeed if the driver handler is not defined. Comments were not updated.

    Signed-off-by: Aaro Koskinen
    Signed-off-by: Rafael J. Wysocki

    Aaro Koskinen
     
  • * 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2:
    ocfs2: Fix system inodes cache overflow.
    ocfs2: Hold ip_lock when set/clear flags for indexed dir.
    ocfs2: Adjust masklog flag values
    Ocfs2: Teach 'coherency=full' O_DIRECT writes to correctly up_read i_alloc_sem.
    ocfs2/dlm: Migrate lockres with no locks if it has a reference

    Linus Torvalds
     
  • * 'linus-hot-fix' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    ext4: fix on-line resizing regression

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: hda - Fix GPIO2-fixup for Sony laptops
    ALSA: hda - Try to find an empty control index when it's occupied
    ALSA: hda - Fix conflict of d-mic capture volume controls
    ALSA: hda - Don't apply ALC269-specific initialization to ALC275
    ALSA: hda - Add fix-up for Sony VAIO with ALC275 codecs
    ALSA: pcm: remember to always call va_end() on stuff that we va_start()
    ALSA: HDA: Add auto-mute for Thinkpad SL410/SL510

    Linus Torvalds
     
  • * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (21 commits)
    [media] mceusb: set a default rx timeout
    [media] mceusb: fix inverted mask inversion logic
    [media] mceusb: add another Fintek device ID
    [media] lirc_dev: fixes in lirc_dev_fop_read()
    [media] lirc_dev: stray unlock in lirc_dev_fop_poll()
    [media] rc: fix sysfs entry for mceusb and streamzap
    [media] streamzap: merge timeout space with trailing space
    [media] mceusb: fix keybouce issue after parser simplification
    [media] IR: add tv power scancode to rc6 mce keymap
    [media] mceusb: buffer parsing fixups for 1st-gen device
    [media] mceusb: fix up reporting of trailing space
    [media] nuvoton-cir: improve buffer parsing responsiveness
    [media] mceusb: add support for Conexant Hybrid TV RDU253S
    [media] s5p-fimc: Fix output DMA handling in S5PV310 IP revisions
    [media] s5p-fimc: Use correct fourcc code for 32-bit RGB format
    [media] s5p-fimc: Convert m2m driver to unlocked_ioctl
    [media] s5p-fimc: Explicitly add required header file
    [media] s5p-fimc: Fix vidioc_g_crop/cropcap on camera sensor
    [media] s5p-fimc: BKL lock removal - compilation fix
    [media] soc-camera: fix static build of the sh_mobile_csi2.c driver
    ...

    Linus Torvalds
     
  • …nel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf probe: Fix to support libdwfl older than 0.148
    perf tools: Fix lazy wildcard matching
    perf buildid-list: Fix error return for success
    perf buildid-cache: Fix symbolic link handling
    perf symbols: Stop using vmlinux files with no symbols
    perf probe: Fix use of kernel image path given by 'k' option

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, kexec: Limit the crashkernel address appropriately

    Linus Torvalds
     
  • In construct_alloc_key(), up_write() is called in the error path if
    __key_link_begin() fails, but this is incorrect as __key_link_begin() only
    returns with the nominated keyring locked if it returns successfully.

    Without this patch, you might see the following in dmesg:

    =====================================
    [ BUG: bad unlock balance detected! ]
    -------------------------------------
    mount.cifs/5769 is trying to release lock (&key->sem) at:
    [] request_key_and_link+0x263/0x3fc
    but there are no more locks to release!

    other info that might help us debug this:
    3 locks held by mount.cifs/5769:
    #0: (&type->s_umount_key#41/1){+.+.+.}, at: [] sget+0x278/0x3e7
    #1: (&ret_buf->session_mutex){+.+.+.}, at: [] cifs_get_smb_ses+0x35a/0x443 [cifs]
    #2: (root_key_user.cons_lock){+.+.+.}, at: [] request_key_and_link+0x10a/0x3fc

    stack backtrace:
    Pid: 5769, comm: mount.cifs Not tainted 2.6.37-rc6+ #1
    Call Trace:
    [] ? request_key_and_link+0x263/0x3fc
    [] print_unlock_inbalance_bug+0xca/0xd5
    [] lock_release_non_nested+0xc1/0x263
    [] ? request_key_and_link+0x263/0x3fc
    [] ? request_key_and_link+0x263/0x3fc
    [] lock_release+0x17d/0x1a4
    [] up_write+0x23/0x3b
    [] request_key_and_link+0x263/0x3fc
    [] ? cifs_get_spnego_key+0x61/0x21f [cifs]
    [] request_key+0x41/0x74
    [] cifs_get_spnego_key+0x200/0x21f [cifs]
    [] CIFS_SessSetup+0x55d/0x1273 [cifs]
    [] cifs_setup_session+0x90/0x1ae [cifs]
    [] cifs_get_smb_ses+0x37f/0x443 [cifs]
    [] cifs_mount+0x1aa1/0x23f3 [cifs]
    [] ? alloc_debug_processing+0xdb/0x120
    [] ? cifs_get_spnego_key+0x1ef/0x21f [cifs]
    [] cifs_do_mount+0x165/0x2b3 [cifs]
    [] vfs_kern_mount+0xaf/0x1dc
    [] do_kern_mount+0x4d/0xef
    [] do_mount+0x6f4/0x733
    [] sys_mount+0x88/0xc2
    [] system_call_fastpath+0x16/0x1b

    Reported-by: Jeff Layton
    Signed-off-by: David Howells
    Reviewed-and-Tested-by: Jeff Layton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • The default for non-READ_BACK GPIO regs is to have the clear bits set;
    this means that our original errata fix was too simplistic. This
    changes it to the following behavior:

    - when setting GPIOs, ignore the higher order bits (they're for
    clearing, we don't need to care about them).

    - when clearing GPIOs, keep all the bits, but unset (via XOR) the
    lower order bit that negates the clear bit that we care about. That
    is, if we're clearing GPIO 26 (val = 0x04000000), we first XOR what's
    currently in the register with 0x0400 (GPIO 26's SET bit), and then
    OR that with the GPIO 26's CLEAR bit.

    Tested-by: Daniel Drake
    Signed-off-by: Andres Salomon
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • The edge detect status GPIOs function differently from the other atomic
    model CS5536 GPIO registers; writing 1 to the high bits clears the GPIO,
    but writing 1 to the lower bits also clears the bit.

    This means that read-modify-write doesn't actually work for it, so don't
    apply the errata here. If a negative edge status gets lost after
    resume.. well, we tried our best!

    Tested-by: Daniel Drake
    Signed-off-by: Andres Salomon
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • https://bugzilla.kernel.org/show_bug.cgi?id=25352

    This regression was caused by commit a31437b85: "ext4: use
    sb_issue_zeroout in setup_new_group_blocks", by accidentally dropping
    the code which reserved the block group descriptor and inode table
    blocks.

    Signed-off-by: "Theodore Ts'o"

    Theodore Ts'o
     

23 Dec, 2010

21 commits

  • Takashi Iwai
     
  • The fix-up entries by the commit 2785591a9760c677a7ee6f541e751c23086f5bfd
    ALSA: hda - Add fix-up for Sony VAIO with ALC275 codecs
    weren't applied in the right position. They had to be before the quirk
    entry matching to all Sony devices.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Takashi Iwai
     
  • When a mixer control element was already created with the given name,
    try to find another index for avoiding conflicts, instead of breaking
    with an error. This makes the driver more robust.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • When the d-mics are assigned to the same purpose of another analog mic
    pins, the driver doesn't compute the index properly, resulting in an
    error with "existing control". This patch fixes it.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm: Include the connector name in the output_poll_execute() debug message
    drm/radeon/kms: fix bug in r600_gpu_is_lockup
    drm/radeon/kms: reorder display resume to avoid problems
    drm/radeon/kms/evergreen: reset the grbm blocks at resume and init
    drm/radeon/kms: fix evergreen asic reset
    Revert "drm: Don't try and disable an encoder that was never enabled"
    drm/radeon: Add early unregister of firmware fb's
    drm/radeon: use aperture size not vram size for overlap tests
    drm/radeon/kms/evergreen: flush hdp cache when flushing gart tlb
    drm/radeon/kms: disable the r600 cb offset checker for linear surfaces
    drm/radeon/kms: disable ss fixed ref divide
    drm/i915/bios: Reverse order of 100/120 Mhz SSC clocks
    agp/intel: Fix missed cached memory flags setting in i965_write_entry()
    drm/i915/sdvo: Only use the SDVO pin if it is in the valid range
    drm/i915/ringbuffer: Handle wrapping of the autoreported HEAD
    drm/i915/dp: Fix I2C/EDID handling with active DisplayPort to DVI converter

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
    mfd: Support additional parent IDs for wm831x
    mfd: Fix ab8500-core interrupt ffs bit bug
    mfd: Supply IRQ base for WM832x devices
    watchdog: Fix null pointer dereference while accessing rdc321x platform_data
    gpio: Fix null pointer dereference while accessing rdc321x platform_data

    Linus Torvalds
     
  • This was fixed by David Lamparter in v2.6.36-rc5 3486008 ("spi: free
    children in spi_unregister_master, not siblings") and broken again in
    v2.6.37-rc1~2^2~4 during the merge of 2b9603a0 ("spi: enable
    spi_board_info to be registered after spi_master").

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: David Lamparter
    Cc: Grant Likely
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sebastian Andrzej Siewior
     
  • The taskstats structure is internally aligned on 8 byte boundaries but the
    layout of the aggregrate reply, with two NLA headers and the pid (each 4
    bytes), actually force the entire structure to be unaligned. This causes
    the kernel to issue unaligned access warnings on some architectures like
    ia64. Unfortunately, some software out there doesn't properly unroll the
    NLA packet and assumes that the start of the taskstats structure will
    always be 20 bytes from the start of the netlink payload. Aligning the
    start of the taskstats structure breaks this software, which we don't
    want. So, for now the alignment only happens on architectures that
    require it and those users will have to update to fixed versions of those
    packages. Space is reserved in the packet only when needed. This ifdef
    should be removed in several years e.g. 2012 once we can be confident
    that fixed versions are installed on most systems. We add the padding
    before the aggregate since the aggregate is already a defined type.

    Commit 85893120 ("delayacct: align to 8 byte boundary on 64-bit systems")
    previously addressed the alignment issues by padding out the pid field.
    This was supposed to be a compatible change but the circumstances
    described above mean that it wasn't. This patch backs out that change,
    since it was a hack, and introduces a new NULL attribute type to provide
    the padding. Padding the response with 4 bytes avoids allocating an
    aligned taskstats structure and copying it back. Since the structure
    weighs in at 328 bytes, it's too big to do it on the stack.

    Signed-off-by: Jeff Mahoney
    Reported-by: Brian Rogers
    Cc: Jeff Mahoney
    Cc: Guillaume Chazarain
    Cc: Balbir Singh
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Mahoney
     
  • The current packed struct implementation of unaligned access adds the
    packed attribute only to the field within the unaligned struct rather than
    to the struct as a whole. This is not sufficient to enforce proper
    behaviour on architectures with a default struct alignment of more than
    one byte.

    For example, the current implementation of __get_unaligned_cpu16 when
    compiled for arm with gcc -O1 -mstructure-size-boundary=32 assumes the
    struct is on a 4 byte boundary so performs the load of the 16bit packed
    field as if it were on a 4 byte boundary:

    __get_unaligned_cpu16:
    ldrh r0, [r0, #0]
    bx lr

    Moving the packed attribute to the struct rather than the field causes the
    proper unaligned access code to be generated:

    __get_unaligned_cpu16:
    ldrb r3, [r0, #0] @ zero_extendqisi2
    ldrb r0, [r0, #1] @ zero_extendqisi2
    orr r0, r3, r0, asl #8
    bx lr

    Signed-off-by: Will Newton
    Cc: Arnd Bergmann
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Will Newton
     
  • When I added led_blink_set I had a typo: the return value of the hw
    offload is a regular error code that is zero when succesful, and in that
    case software emulation should not be used, rather than the other way
    around.

    Signed-off-by: Johannes Berg
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Berg
     
  • Signed-off-by: Axel Lin
    Cc: Thomas Hellstrom
    Cc: Alan Hourihane
    Cc: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Axel Lin
     
  • GCC complained about update_mmu_cache() not being defined in migrate.c.
    Including seems to solve the problem.

    Signed-off-by: Michal Nazarewicz
    Signed-off-by: Kyungmin Park
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Nazarewicz
     
  • Match the buffer size to the amount of initialized values. Before, it was
    one too big and thus destroyed the neighbouring register causing the clock
    to run at false speeds.

    Reported-by: Andre van Rooyen
    Signed-off-by: Wolfram Sang
    Cc: Alessandro Zummo
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wolfram Sang
     
  • Remove Jordan as the geode maintainer (he's not been interested in geode for
    some time), and add myself as the maintainer.

    Signed-off-by: Andres Salomon
    Cc: Daniel Drake
    Cc: Jordan Crouse
    Cc: Chris Ball
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andres Salomon
     
  • If GPIO request succeeds, but configuration fails, it should be released.

    Signed-off-by: Aaro Koskinen
    Acked-by: Eric Miao
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Aaro Koskinen
     
  • Using TASK_INTERRUPTIBLE in balance_dirty_pages() seems wrong. If it's
    going to do that then it must break out if signal_pending(), otherwise
    it's pretty much guaranteed to degenerate into a busywait loop. Plus we
    *do* want these processes to appear in D state and to contribute to load
    average.

    So it should be TASK_UNINTERRUPTIBLE. -- Andrew Morton

    Signed-off-by: Wu Fengguang
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wu Fengguang
     
  • This happens when __logfs_create() tries to write a new inode to the disk
    which is full.

    __logfs_create() associates the transaction pointer with inode. During
    the logfs_write_inode() function call chain this transaction pointer is
    moved from inode to page->private using function move_inode_to_page
    (do_write_inode() -> inode_to_page() -> move_inode_to_page)

    When the write inode fails, the transaction is aborted and iput is called
    on the failed inode. During delete_inode the same transaction pointer
    associated with the page is getting used. Thus causing kernel BUG.

    The patch checks for error in write_inode() and restores the page->private
    to NULL.

    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=20162

    Signed-off-by: Prasad Joshi
    Cc: Joern Engel
    Cc: Florian Mickler
    Cc: "Rafael J. Wysocki"
    Cc: Maciej Rutecki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Prasad Joshi
     
  • do_logfs_journal_wl_pass() should use GFP_NOFS for memory allocation GC
    code calls btree_insert32 with GFP_KERNEL while holding a mutex
    super->s_write_mutex.

    The same mutex is used in address_space_operations->writepage(), and a
    call to writepage() could be triggered as a result of memory allocation
    in btree_insert32, causing a deadlock.

    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=20342

    Signed-off-by: Prasad Joshi
    Cc: Joern Engel
    Cc: Florian Mickler
    Cc: "Rafael J. Wysocki"
    Cc: Maciej Rutecki
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Prasad Joshi
     
  • When correlating ftrace results with /proc/vmstat, I noticed that the
    reporting scripts value for "pages scanned" differed significantly. Both
    values were "right" depending on how you look at it.

    The difference is due to vmstat only counting scanning of the inactive
    list towards pages scanned. The analysis script for the tracepoint counts
    active and inactive list yielding a far higher value than vmstat. The
    resulting scanning/reclaim ratio looks much worse. The tracepoint is ok
    but this patch updates the reporting script so that the report values for
    scanned are similar to vmstat.

    Signed-off-by: Mel Gorman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mel Gorman
     
  • del_page_from_lru_list() already called mem_cgroup_del_lru(). So we must
    not call it again. It adds unnecessary overhead.

    It was not a runtime bug because the TestClearPageCgroupAcctLRU() early in
    mem_cgroup_del_lru_list() will prevent any double-deletion, etc.

    Signed-off-by: Minchan Kim
    Acked-by: Balbir Singh
    Acked-by: KAMEZAWA Hiroyuki
    Acked-by: Mel Gorman
    Reviewed-by: Johannes Weiner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Minchan Kim
     

22 Dec, 2010

7 commits