11 Mar, 2012

1 commit


10 Mar, 2012

7 commits

  • Current code has put_ioctx() called asynchronously from aio_fput_routine();
    that's done *after* we have killed the request that used to pin ioctx,
    so there's nothing to stop io_destroy() waiting in wait_for_all_aios()
    from progressing. As the result, we can end up with async call of
    put_ioctx() being the last one and possibly happening during exit_mmap()
    or elf_core_dump(), neither of which expects stray munmap() being done
    to them...

    We do need to prevent _freeing_ ioctx until aio_fput_routine() is done
    with that, but that's all we care about - neither io_destroy() nor
    exit_aio() will progress past wait_for_all_aios() until aio_fput_routine()
    does really_put_req(), so the ioctx teardown won't be done until then
    and we don't care about the contents of ioctx past that point.

    Since actual freeing of these suckers is RCU-delayed, we don't need to
    bump ioctx refcount when request goes into list for async removal.
    All we need is rcu_read_lock held just over the ->ctx_lock-protected
    area in aio_fput_routine().

    Signed-off-by: Al Viro
    Reviewed-by: Jeff Moyer
    Acked-by: Benjamin LaHaise
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Have ioctx_alloc() return an extra reference, so that caller would drop it
    on success and not bother with re-grabbing it on failure exit. The current
    code is obviously broken - io_destroy() from another thread that managed
    to guess the address io_setup() would've returned would free ioctx right
    under us; gets especially interesting if aio_context_t * we pass to
    io_setup() points to PROT_READ mapping, so put_user() fails and we end
    up doing io_destroy() on kioctx another thread has just got freed...

    Signed-off-by: Al Viro
    Acked-by: Benjamin LaHaise
    Reviewed-by: Jeff Moyer
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • Pull btrfs updates from Chris Mason:
    "I have two additional and btrfs fixes in my for-linus branch. One is
    a casting error that leads to memory corruption on i386 during scrub,
    and the other fixes a corner case in the backref walking code (also
    triggered by scrub)."

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
    Btrfs: fix casting error in scrub reada code
    btrfs: fix locking issues in find_parent_nodes()

    Linus Torvalds
     
  • Respectfully revert commit e6ca7b89dc76 "memcg: fix mapcount check
    in move charge code for anonymous page" for the 3.3 release, so that
    it behaves exactly like releases 2.6.35 through 3.2 in this respect.

    Horiguchi-san's commit is correct in itself, 1 makes much more sense
    than 2 in that check; but it does not go far enough - swapcount
    should be considered too - if we really want such a check at all.

    We appear to have reached agreement now, and expect that 3.4 will
    remove the mapcount check, but had better not make 3.3 different.

    Signed-off-by: Hugh Dickins
    Reviewed-by: Naoya Horiguchi
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Commit f0fbf0abc093 ("x86: integrate delay functions") converted
    delay_tsc() into a random delay generator for 64 bit. The reason is
    that it merged the mostly identical versions of delay_32.c and
    delay_64.c. Though the subtle difference of the result was:

    static void delay_tsc(unsigned long loops)
    {
    - unsigned bclock, now;
    + unsigned long bclock, now;

    Now the function uses rdtscl() which returns the lower 32bit of the
    TSC. On 32bit that's not problematic as unsigned long is 32bit. On 64
    bit this fails when the lower 32bit are close to wrap around when
    bclock is read, because the following check

    if ((now - bclock) >= loops)
    break;

    evaluated to true on 64bit for e.g. bclock = 0xffffffff and now = 0
    because the unsigned long (now - bclock) of these values results in
    0xffffffff00000001 which is definitely larger than the loops
    value. That explains Tvortkos observation:

    "Because I am seeing udelay(500) (_occasionally_) being short, and
    that by delaying for some duration between 0us (yep) and 491us."

    Make those variables explicitely u32 again, so this works for both 32
    and 64 bit.

    Reported-by: Tvrtko Ursulin
    Signed-off-by: Thomas Gleixner
    Cc: stable@vger.kernel.org # >= 2.6.27
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • Pull sound fixes from Takashi Iwai:
    "Nothing exciting here: just a few regression fixes for HD-audio and
    ASoC, also the support of missing 32bit compat ioctl for HDSPM."

    * tag 'sound-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hdspm - Provide ioctl_compat
    ALSA: hda/realtek - Apply the coef-setup only to ALC269VB
    ALSA: hda - add quirk to detect CD input on Gigabyte EP45-DS3
    ASoC: neo1973: fix neo1973 wm8753 initialization

    Linus Torvalds
     
  • The msm git tree moved to

    git://git.kernel.org/pub/scm/linux/kernel/git/davidb/linux-msm.git

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

    David Brown
     

09 Mar, 2012

13 commits

  • Pull C6X fix from Mark Salter:
    "Fix for C6X KSTK_EIP and KSTK_ESP macros."

    * tag 'for-linus' of git://linux-c6x.org/git/projects/linux-c6x-upstreaming:
    C6X: fix KSTK_EIP and KSTK_ESP macros

    Linus Torvalds
     
  • Pull two IOMMU fixes from Joerg Roedel:
    "The first is an additional fix for the OMAP initialization order issue
    and the second patch fixes a possible section mismatch which can lead
    to a kernel crash in the AMD IOMMU driver when suspend/resume is used
    and the compiler has not inlined the iommu_set_device_table function."

    * tag 'iommu-fixes-v3.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu:
    x86/amd: iommu_set_device_table() must not be __init
    ARM: OMAP: fix iommu, not mailbox

    Linus Torvalds
     
  • Pull radeon drm stuff from Dave Airlie:
    "Just some radeon fixes, one is for an oops where we run out of ioremap
    space on some big hardware systems in 32-bit mode, stuff doesn't work
    properly but at least the machine will boot.

    One regression fix, and two bugs, one hw, one blit code."

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon/kms: fix hdmi duallink checks
    drm/radeon/kms: set SX_MISC in the r6xx blit code (v2)
    drm/radeon: deal with errors from framebuffer init path.
    drm/radeon: fix a semaphore deadlock on pre cayman asics

    Linus Torvalds
     
  • Pull networking from David Miller:

    1) IPV4 routing metrics can become stale when routes are changed by the
    administrator, fix from Steffen Klassert.

    2) atl1c does "val |= XXX;" where XXX is a bit number not a bit mask,
    fix by using set_bit. From Dan Carpenter.

    3) Memory accounting bug in carl9170 driver results in wedged TX queue.
    Fix from Nicolas Cavallari.

    4) iwlwifi accidently uses "sizeof(ptr)" instead of "sizeof(*ptr)", fix
    from Johannes Berg.

    5) Openvswitch doesn't honor dp_ifindex when doing vport lookups, fix
    from Ben Pfaff.

    6) ehea conversion to 64-bit stats lost multicast and rx_errors
    accounting, fix from Eric Dumazet.

    7) Bridge state transition logging in br_stp_disable_port() is busted,
    it's emitted at the wrong time and the message is in the wrong tense,
    fix from Paulius Zaleckas.

    8) mlx4 device erroneously invokes the queue resize firmware operation
    twice, fix from Jack Morgenstein.

    9) Fix deadlock in usbnet, need to drop lock when invoking usb_unlink_urb()
    otherwise we recurse into taking it again. Fix from Sebastian Siewior.

    10) hyperv network driver uses the wrong driver name string, fix from
    Haiyang Zhang.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    net/hyperv: Use the built-in macro KBUILD_MODNAME for this driver
    net/usbnet: avoid recursive locking in usbnet_stop()
    route: Remove redirect_genid
    inetpeer: Invalidate the inetpeer tree along with the routing cache
    mlx4_core: fix bug in modify_cq wrapper for resize flow.
    atl1c: set ATL1C_WORK_EVENT_RESET bit correctly
    bridge: fix state reporting when port is disabled
    bridge: br_log_state() s/entering/entered/
    ehea: restore multicast and rx_errors fields
    openvswitch: Fix checksum update for actions on UDP packets.
    openvswitch: Honor dp_ifindex, when specified, for vport lookup by name.
    iwlwifi: fix wowlan suspend
    mwifiex: reset encryption mode flag before association
    carl9170: fix frame delivery if sta is in powersave mode
    carl9170: Fix memory accounting when sta is in power-save mode.

    Linus Torvalds
     
  • Pull last minute fixes from Olof Johansson:
    "One samsung build fix due to a mis-applied patch, and a small set of
    OMAP fixes. This should be the last from arm-soc for 3.3, hopefully."

    * tag 'fixes-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
    ARM: S3C2440: Fixed build error for s3c244x
    ARM: OMAP2+: Fix module build errors with CONFIG_OMAP4_ERRATA_I688
    ARM: OMAP: id: Add missing break statement in omap3xxx_check_revision
    ARM: OMAP2+: Remove apply_uV constraints for fixed regulator
    ARM: OMAP: irqs: Fix NR_IRQS value to handle PRCM interrupts

    Linus Torvalds
     
  • Pull regulator fix from Mark Brown:
    "Another small, clear fix in a specific driver."

    * tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator:
    regulator: tps65910: Configure correct value for VDDCTRL vout reg

    Linus Torvalds
     
  • Pull minor devicetree bug fixes and documentation updates from Grant Likely:
    "Fixes up a duplicate #include, adds an empty implementation of
    of_find_compatible_node() and make git ignore .dtb files. And fix up
    bus name on OF described PHYs. Nothing exciting here."

    * tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux-2.6:
    doc: dt: Fix broken reference in gpio-leds documentation
    of/mdio: fix fixed link bus name
    of/fdt.c: asm/setup.h included twice
    of: add picochip vendor prefix
    dt: add empty of_find_compatible_node function
    ARM: devicetree: Add .dtb files to arch/arm/boot/.gitignore

    Linus Torvalds
     
  • Pull SPI section mismatch bug fix for v3.3-rc3 from Grant Likely:
    "Minor fix for pl022_dma_probe() function which was put in the wrong
    section."

    * tag 'spi-for-linus' of git://git.secretlab.ca/git/linux-2.6:
    Fix section mismatch in spi-pl022.c

    Linus Torvalds
     
  • Pull four hwmon patches from Guenter Roeck

    * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
    hwmon: (jc42) Add support for AT30TS00, TS3000GB2, TSE2002GB2, and MCP9804
    hwmon: (zl6100) Maintain delay parameter in driver instance data
    hwmon: (pmbus_core) Fix maximum number of POUT alarm attributes
    hwmon: (jc42) Add support for ST Microelectronics STTS2002 and STTS3000

    Linus Torvalds
     
  • Pull device-mapper fixes for 3.3 from Alasdair Kergon

    Eight small device-mapper bug fixes.

    * tag 'dm-3.3-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-dm:
    dm raid: fix flush support
    dm raid: set MD_CHANGE_DEVS when rebuilding
    dm thin metadata: decrement counter after removing mapped block
    dm thin metadata: unlock superblock in init_pmd error path
    dm thin metadata: remove incorrect close_device on creation error paths
    dm flakey: fix crash on read when corrupt_bio_byte not set
    dm io: fix discard support
    dm ioctl: do not leak argv if target message only contains whitespace

    Linus Torvalds
     
  • Signed-off-by: Haiyang Zhang
    Signed-off-by: K. Y. Srinivasan
    Cc: Olaf Hering
    Signed-off-by: David S. Miller

    Haiyang Zhang
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
    ARM: OMAP2+: Fix module build errors with CONFIG_OMAP4_ERRATA_I688
    ARM: OMAP: id: Add missing break statement in omap3xxx_check_revision
    ARM: OMAP2+: Remove apply_uV constraints for fixed regulator
    ARM: OMAP: irqs: Fix NR_IRQS value to handle PRCM interrupts

    Olof Johansson
     
  • Fixed following:
    arch/arm/mach-s3c2440/s3c244x.c: In function 's3c244x_restart':
    arch/arm/mach-s3c2440/s3c244x.c:209: error: expected declaration or statement at end of input
    make[1]: *** [arch/arm/mach-s3c24xx/s3c244x.o] Error 1
    make: *** [arch/arm/mach-s3c24xx] Error 2

    Signed-off-by: Kukjin Kim
    Signed-off-by: Olof Johansson

    Kukjin Kim
     

08 Mar, 2012

19 commits

  • snd_hdspm uses its own ioctls to acquire config- and status information.
    Expose the corresponding ioctl handler via ioctl_compat, so that 32bit
    applications can use it on 64bit kernels.

    Signed-off-by: Adrian Knoth
    Signed-off-by: Takashi Iwai

    Adrian Knoth
     
  • This function is called from enable_iommus(), which in turn is used
    from amd_iommu_resume().

    Cc: stable@vger.kernel.org
    Signed-off-by: Jan Beulich
    Signed-off-by: Joerg Roedel

    Jan Beulich
     
  • All pre-SI chips are limited to 165 Mhz for single link.
    Code in question will be re-enabled when SI support is added.

    Fixes:
    https://bugs.freedesktop.org/show_bug.cgi?id=44755
    https://bugzilla.kernel.org/show_bug.cgi?id=42887

    Signed-off-by: Alex Deucher
    Cc: stable@vger.kernel.org
    Signed-off-by: Dave Airlie

    Alex Deucher
     
  • Mesa may set it to 1, causing all primitives to be killed.

    v2: also update the r7xx code

    Signed-off-by: Marek Olšák
    Reviewed-by: Alex Deucher
    Cc: stable@kernel.org
    Signed-off-by: Dave Airlie

    Marek Olšák
     
  • |kernel BUG at kernel/rtmutex.c:724!
    |[] (rt_spin_lock_slowlock+0x108/0x2bc) from [] (defer_bh+0x1c/0xb4)
    |[] (defer_bh+0x1c/0xb4) from [] (rx_complete+0x14c/0x194)
    |[] (rx_complete+0x14c/0x194) from [] (usb_hcd_giveback_urb+0xa0/0xf0)
    |[] (usb_hcd_giveback_urb+0xa0/0xf0) from [] (musb_giveback+0x34/0x40)
    |[] (musb_giveback+0x34/0x40) from [] (musb_advance_schedule+0xb4/0x1c0)
    |[] (musb_advance_schedule+0xb4/0x1c0) from [] (musb_cleanup_urb.isra.9+0x80/0x8c)
    |[] (musb_cleanup_urb.isra.9+0x80/0x8c) from [] (musb_urb_dequeue+0xec/0x108)
    |[] (musb_urb_dequeue+0xec/0x108) from [] (unlink1+0xbc/0xcc)
    |[] (unlink1+0xbc/0xcc) from [] (usb_hcd_unlink_urb+0x54/0xa8)
    |[] (usb_hcd_unlink_urb+0x54/0xa8) from [] (unlink_urbs.isra.17+0x2c/0x58)
    |[] (unlink_urbs.isra.17+0x2c/0x58) from [] (usbnet_terminate_urbs+0x94/0x10c)
    |[] (usbnet_terminate_urbs+0x94/0x10c) from [] (usbnet_stop+0x100/0x15c)
    |[] (usbnet_stop+0x100/0x15c) from [] (__dev_close_many+0x94/0xc8)

    defer_bh() takes the lock which is hold during unlink_urbs(). The safe
    walk suggest that the skb will be removed from the list and this is done
    by defer_bh() so it seems to be okay to drop the lock here.

    Cc: stable@kernel.org
    Reported-by: Aníbal Almeida Pinto
    Signed-off-by: Sebastian Andrzej Siewior
    Acked-by: Oliver Neukum
    Signed-off-by: David S. Miller

    Sebastian Siewior
     
  • As we invalidate the inetpeer tree along with the routing cache now,
    we don't need a genid to reset the redirect handling when the routing
    cache is flushed.

    Signed-off-by: Steffen Klassert
    Signed-off-by: David S. Miller

    Steffen Klassert
     
  • We initialize the routing metrics with the values cached on the
    inetpeer in rt_init_metrics(). So if we have the metrics cached on the
    inetpeer, we ignore the user configured fib_metrics.

    To fix this issue, we replace the old tree with a fresh initialized
    inet_peer_base. The old tree is removed later with a delayed work queue.

    Signed-off-by: Steffen Klassert
    Signed-off-by: David S. Miller

    Steffen Klassert
     
  • The actual FW command is called in procedure "handle_resize".
    Code incorrectly invoked the FW command again (in good flow), in
    the modify_cq wrapper function.

    Fix by skipping second FW invocation unconditionally for resize.

    Signed-off-by: Jack Morgenstein
    Signed-off-by: David S. Miller

    Jack Morgenstein
     
  • ATL1C_WORK_EVENT_RESET is zero so the original code here is a nop. The
    intent was to set the zero bit.

    Signed-off-by: Dan Carpenter
    Signed-off-by: David S. Miller

    Dan Carpenter
     
  • Now we have:
    eth0: link *down*
    br0: port 1(eth0) entered *forwarding* state

    br_log_state(p) should be called *after* p->state is set
    to BR_STATE_DISABLED.

    Reported-by: Zilvinas Valinskas
    Signed-off-by: Paulius Zaleckas
    Acked-by: Stephen Hemminger
    Signed-off-by: David S. Miller

    Paulius Zaleckas
     
  • When br_log_state() is reporting state it should say "entered"
    istead of "entering" since state at this point is already
    changed.

    Signed-off-by: Paulius Zaleckas
    Signed-off-by: David S. Miller

    Paulius Zaleckas
     
  • Commit 239c562c94d (ehea: Add 64bit statistics) added a regression,
    since we no longer report multicast & rx_errors fields, taken from
    port->stats structure. These fields are updated in ehea_update_stats()
    every second.

    Signed-off-by: Eric Dumazet
    Cc: Anton Blanchard
    Cc: Thadeu Lima de Souza Cascardo
    Acked-by: Thadeu Lima de Souza Cascardo
    Tested-by: Thadeu Lima de Souza Cascardo
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • David S. Miller
     
  • When modifying IP addresses or ports on a UDP packet we don't
    correctly follow the rules for unchecksummed packets. This meant
    that packets without a checksum can be given a incorrect new checksum
    and packets with a checksum can become marked as being unchecksummed.
    This fixes it to handle those requirements.

    Signed-off-by: Jesse Gross

    Jesse Gross
     
  • David S. Miller
     
  • As per datasheet, the voltage output is defined as
    from SEL[6:0] = 3 to 64 (dec)
    Vout= (SEL[6:0] × 12.5 mV + 562.5 mV)

    The list_voltage returns the vout as
    600mV + selector * 12.5mV

    and so equivalent VSEL is selector + 3.
    Adding 3 on selector when configuring VSEL register for
    VDDCTRL output.

    Signed-off-by: Laxman Dewangan
    Signed-off-by: Mark Brown

    Laxman Dewangan
     
  • Fix dm-raid flush support.

    Both md and dm have support for flush, but the dm-raid target
    forgot to set the flag to indicate that flushes should be
    passed on. (Important for data integrity e.g. with writeback cache
    enabled.)

    Signed-off-by: Jonathan Brassow
    Acked-by: Mike Snitzer
    Cc: stable@kernel.org
    Signed-off-by: Alasdair G Kergon

    Jonathan E Brassow
     
  • The 'rebuild' parameter is used to rebuild individual devices in an
    array (e.g. resynchronize a RAID1 device or recalculate a parity device
    in higher RAID). The MD_CHANGE_DEVS flag must be set when this
    parameter is given in order to write out the superblocks and make the
    change take immediate effect. The code that handles new devices in
    super_load already sets MD_CHANGE_DEVS and 'FirstUse'. (The 'FirstUse'
    flag was being set as a special case for rebuilds in
    super_init_validation.)

    Add a condition for rebuilds in super_load to take care of both flags
    without the special case in 'super_init_validation'.

    Signed-off-by: Jonathan Brassow
    Cc: stable@kernel.org
    Signed-off-by: Alasdair G Kergon

    Jonathan E Brassow
     
  • Correct the number of mapped sectors shown on a thin device's
    status line by decrementing td->mapped_blocks in __remove() each time
    a block is removed.

    Signed-off-by: Joe Thornber
    Acked-by: Mike Snitzer
    Cc: stable@kernel.org
    Signed-off-by: Alasdair G Kergon

    Joe Thornber