1. 14 Feb, 2012 8 commits
  2. 13 Feb, 2012 19 commits
    • Linus Torvalds's avatar
      Merge tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent · 3b582f39
      Linus Torvalds authored
      Just a few small fixes for a bunch of drivers. Nothing noteworthy.
      
      * tag 'battery-fixes-for-v3.3-rc2' of git://git.infradead.org/users/cbou/battery-urgent:
        lp8727_charger: Add terminating entry for i2c_device_id table
        power_supply: Fix modalias for charger-manager
        lp8727_chager: Fix permissions on a header file
        bq27x00_battery: Fix flag register read
        Revert "bq27x00_battery: Fix reporting status value for bq27500 battery"
      3b582f39
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://oss.sgi.com/xfs/xfs · 19be13cf
      Linus Torvalds authored
      Two bugfixes in XFS for 3.3: one fix passes KMEM_SLEEP to kmem_realloc
      instead of 0, and the other resolves a possible deadlock in xfs quotas.
      
      * 'for-linus' of git://oss.sgi.com/xfs/xfs:
        xfs: use a normal shrinker for the dquot freelist
        xfs: pass KM_SLEEP flag to kmem_realloc() in xlog_recover_add_to_cnt_trans()
      19be13cf
    • Linus Torvalds's avatar
      Merge branch 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm · b14a2998
      Linus Torvalds authored
      This set of changes are fixing various section mismatch warnings which
      look to be completely valid.  Primerily, those which are fixed are those
      which can cause oopses by manipulation of driver binding via sysfs.  For
      example: calling code marked __init from driver probe __devinit
      functions.
      
      Some of these changes will be reworked at the next merge window when the
      underlying reasons are sorted out.  In the mean time, I think it's
      important to have this fixed for correctness.
      
      Also included in this set are fixes to various error messages in OMAP -
      including making them gramatically correct, fixing a few spelling
      errors, and more importantly, making them greppable by unwrapping them.
      
      Tony Lindgren has acked all these patches, put them out for testing a
      week ago, and I've tested them on the platforms I have.
      
      * 'omap-fixes-warnings' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: omap: resolve nebulous 'Error setting wl12xx data'
        ARM: omap: fix wrapped error messages in omap_hwmod.c
        ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c
        ARM: omap: fix section mismatch warning for sdp3430_twl_gpio_setup()
        ARM: omap: fix section mismatch error for omap_4430sdp_display_init()
        ARM: omap: fix section mismatch warning for omap_secondary_startup()
        ARM: omap: preemptively fix section mismatch in omap4_sdp4430_wifi_mux_init()
        ARM: omap: fix section mismatch warning in mux.c
        ARM: omap: fix section mismatch errors in TWL PMIC driver
        ARM: omap: fix uninformative vc/i2c configuration error message
        ARM: omap: fix vc.c PMIC error message
        ARM: omap: fix prm44xx.c OMAP44XX_IRQ_PRCM build error
      b14a2998
    • Linus Torvalds's avatar
      Merge branch 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm · a269c2f5
      Linus Torvalds authored
      This pull request covers the major oopsing issues with OMAP, caused by
      the lack of the TWL driver.  Even when the TWL driver is not built in,
      we shouldn't oops.
      
      * 'omap-fixes-urgent' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: omap: fix broken twl-core dependencies and ifdefs
        ARM: omap: fix oops in drivers/video/omap2/dss/dpi.c
        ARM: omap: fix oops in arch/arm/mach-omap2/vp.c when pmic is not found
      a269c2f5
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm · ed5016d7
      Linus Torvalds authored
      * 'fixes' of git://git.linaro.org/people/rmk/linux-arm:
        ARM: 7322/1: Print BUG instead of undefined instruction on BUG_ON()
        ARM: 7321/1: cache-v7: Disable preemption when reading CCSIDR
        ARM: 7320/1: Fix proc_info table alignment
      ed5016d7
    • Linus Torvalds's avatar
      i387: make irq_fpu_usable() tests more robust · 5b1cbac3
      Linus Torvalds authored
      Some code - especially the crypto layer - wants to use the x86
      FP/MMX/AVX register set in what may be interrupt (typically softirq)
      context.
      
      That *can* be ok, but the tests for when it was ok were somewhat
      suspect.  We cannot touch the thread-specific status bits either, so
      we'd better check that we're not going to try to save FP state or
      anything like that.
      
      Now, it may be that the TS bit is always cleared *before* we set the
      USEDFPU bit (and only set when we had already cleared the USEDFP
      before), so the TS bit test may actually have been sufficient, but it
      certainly was not obviously so.
      
      So this explicitly verifies that we will not touch the TS_USEDFPU bit,
      and adds a few related sanity-checks.  Because it seems that somehow
      AES-NI is corrupting user FP state.  The cause is not clear, and this
      patch doesn't fix it, but while debugging it I really wanted the code to
      be more obviously correct and robust.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5b1cbac3
    • Linus Torvalds's avatar
      i387: math_state_restore() isn't called from asm · be98c2cd
      Linus Torvalds authored
      It was marked asmlinkage for some really old and stale legacy reasons.
      Fix that and the equally stale comment.
      
      Noticed when debugging the irq_fpu_usable() bugs.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      be98c2cd
    • Russell King's avatar
      ARM: omap: resolve nebulous 'Error setting wl12xx data' · 70d669de
      Russell King authored
      It's useful to print the error code when a called function fails so a
      diagnosis of why it failed is possible.  In this case, it fails because
      we try to register some data for the wl12xx driver, but as the driver
      is not configured, a stub function is used which simply returns -ENOSYS.
      
      Let's do the simple thing for -rc and print the error code.
      
      Also, the return code from platform_register_device() at each of these
      sites was not being checked.  Add some checking, and again print the
      error code.
      
      This should be fixed properly for the next merge window so we don't
      issue error messages merely because a driver is not configured.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      70d669de
    • Russell King's avatar
      ARM: omap: fix wrapped error messages in omap_hwmod.c · 4f8a428d
      Russell King authored
      While trying to debug my OMAP platforms, they emitted this message:
      
      omap_hwmod: %s: enabled state can only be entered from initialized, idle, or disabled state
      
      The following backtrace said it was from a function called '_enable',
      which didn't provide much clue.  Grepping didn't find it either.
      
      The message is wrapped, so unwrap the message so grep can find it.  Do
      the same for three other messages in this file.
      Acked-by: default avatarPaul Walmsley <paul@pwsan.com>
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      4f8a428d
    • Russell King's avatar
      ARM: omap: fix section mismatch warnings in mux.c caused by hsmmc.c · 8930b4e3
      Russell King authored
      The previous commit causes new section mismatch warnings:
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb30): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_gpio()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_gpio().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_gpio is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb4c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_gpio()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_gpio().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_gpio is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb60): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb6c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb78): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb90): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdb9c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdba8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbc0): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbcc): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbd8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdbf8): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc04): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc10): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc28): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc34): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc40): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc58): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc64): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc70): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xdc7c): Section mismatch in reference from the function omap_init_hsmmc() to the function .init.text:omap_mux_init_signal()
      The function omap_init_hsmmc() references
      the function __init omap_mux_init_signal().
      This is often because omap_init_hsmmc lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      
      Again, as for omap2_hsmmc_init(), these functions are callable at
      runtime via the gpio-twl4030.c driver, and so these can't be marked
      __init.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      8930b4e3
    • Russell King's avatar
      ARM: omap: fix section mismatch warning for sdp3430_twl_gpio_setup() · a98f77bb
      Russell King authored
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xd0f0): Section mismatch in reference from the function sdp3430_twl_gpio_setup() to the function .init.text:omap2_hsmmc_init()
      The function sdp3430_twl_gpio_setup() references
      the function __init omap2_hsmmc_init().
      This is often because sdp3430_twl_gpio_setup lacks a __init
      annotation or the annotation of omap2_hsmmc_init is wrong.
      
      sdp3430_twl_gpio_setup() is called via platform data from the
      gpio-twl4030 module, which can be inserted and removed at runtime.
      This makes sdp3430_twl_gpio_setup() callable at runtime, and prevents
      it being marked with an __init annotation.
      
      As it calls omap2_hsmmc_init() unconditionally, the only resolution to
      this warning is to remove the __init markings from omap2_hsmmc_init()
      and its called functions.  This addresses the functions in hsmmc.c.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      a98f77bb
    • Russell King's avatar
      ARM: omap: fix section mismatch error for omap_4430sdp_display_init() · e3958fe0
      Russell King authored
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0xb798): Section mismatch in reference from the function omap_4430sdp_display_init() to the function .init.text:omap_display_init()
      The function omap_4430sdp_display_init() references
      the function __init omap_display_init().
      This is often because omap_4430sdp_display_init lacks a __init
      annotation or the annotation of omap_display_init is wrong.
      
      Fix this by adding __init to omap_4430sdp_display_init().
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      e3958fe0
    • Russell King's avatar
      ARM: omap: fix section mismatch warning for omap_secondary_startup() · 45176f4c
      Russell King authored
      WARNING: vmlinux.o(.text+0x1c664): Section mismatch in reference from the function omap_secondary_startup() to the function .cpuinit.text:secondary_startup()
      The function omap_secondary_startup() references
      the function __cpuinit secondary_startup().
      This is often because omap_secondary_startup lacks a __cpuinit
      annotation or the annotation of secondary_startup is wrong.
      
      Unfortunately, fixing this causes a new warning which is harder to
      solve:
      
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0x5328): Section mismatch in reference from the function omap4_hotplug_cpu() to the function .cpuinit.text:omap_secondary_startup()
      The function omap4_hotplug_cpu() references
      the function __cpuinit omap_secondary_startup().
      This is often because omap4_hotplug_cpu lacks a __cpuinit
      annotation or the annotation of omap_secondary_startup is wrong.
      
      because omap4_hotplug_cpu() is used by power management code as well,
      which may not end up using omap_secondary_startup().
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      45176f4c
    • Russell King's avatar
      ARM: omap: preemptively fix section mismatch in omap4_sdp4430_wifi_mux_init() · d5de63f5
      Russell King authored
      Found by review.
      
      omap4_sdp4430_wifi_mux_init() is called by an __init marked function,
      and only calls omap_mux_init_gpio() and omap_mux_init_signal() which
      are both also an __init marked functions.
      
      The only reason this doesn't issue a warning is because the compiler
      inlines omap4_sdp4430_wifi_mux_init() into omap4_sdp4430_wifi_init().
      
      So, lets add the __init annotation to ensure this remains safe should
      the compiler choose not to inline.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      d5de63f5
    • Russell King's avatar
      ARM: omap: fix section mismatch warning in mux.c · 27d8d3bf
      Russell King authored
      WARNING: arch/arm/mach-omap2/built-in.o(.text+0x15a4): Section mismatch in reference from the function omap_mux_init_signals() to the function .init.text:omap_mux_init_signal()
      The function omap_mux_init_signals() references
      the function __init omap_mux_init_signal().
      This is often because omap_mux_init_signals lacks a __init
      annotation or the annotation of omap_mux_init_signal is wrong.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      27d8d3bf
    • Russell King's avatar
      ARM: omap: fix section mismatch errors in TWL PMIC driver · a0bb10e8
      Russell King authored
      WARNING: drivers/mfd/built-in.o(.devinit.text+0x258): Section mismatch in reference from the function twl_probe() to the function .init.text:twl4030_power_init()
      The function __devinit twl_probe() references
      a function __init twl4030_power_init().
      If twl4030_power_init is only used by twl_probe then
      annotate twl4030_power_init with a matching annotation.
      
      twl4030_power_init() references other __init marked functions, so
      these too must become __devinit.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      a0bb10e8
    • Russell King's avatar
      ARM: omap: fix uninformative vc/i2c configuration error message · 0bf68f53
      Russell King authored
      On my OMAP4 platform, I'm getting this error message repeated several
      times at boot:
      
      omap_vc_i2c_init: I2C config for all channels must match.
      omap_vc_i2c_init: I2C config for all channels must match.
      
      This doesn't help identify what the problem is.  Fix this message to
      be more informative:
      
      omap_vc_i2c_init: I2C config for vdd_iva does not match other channels (0).
      omap_vc_i2c_init: I2C config for vdd_mpu does not match other channels (0).
      
      This allows us to identify which voltage domains have a problem, and
      what the I2C configuration state (a boolean, i2c_high_speed) setting
      being used actually is.
      
      From this we find that omap4_core_pmic has i2c_high_speed false, but
      omap4_iva_pmic and omap4_mpu_pmic both have it set true.
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Acked-by: default avatarKevin Hilman <khilman@ti.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      0bf68f53
    • Russell King's avatar
      ARM: omap: fix vc.c PMIC error message · 2d5b4790
      Russell King authored
      While testing on my OMAP3430 platform, this error message was emitted:
      
      omap_vc_init_channel: PMIC info requried to configure vc forvdd_core not populated.Hence cannot initialize vc
      
      Trying to find this message was difficult because it was wrapped across
      several lines.  It also mis-spells "required", doesn't read very well,
      and has spaces lacking.  Let's replace it with a more concise:
      
      omap_vc_init_channel: No PMIC info for vdd_core
      
      While we're here, fix a simple spelling error in a comment.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      2d5b4790
    • Russell King's avatar
      ARM: omap: fix prm44xx.c OMAP44XX_IRQ_PRCM build error · e6fa35aa
      Russell King authored
      When CONFIG_OF is disabled, the compile fails with:
      
      arch/arm/mach-omap2/prm44xx.c:41: error: 'OMAP44XX_IRQ_PRCM' undeclared here (not in a function)
      Acked-by: default avatarTony Lindgren <tony@atomide.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      e6fa35aa
  3. 11 Feb, 2012 2 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 3ec1e88b
      Linus Torvalds authored
      Says Jens:
      
       "Time to push off some of the pending items.  I really wanted to wait
        until we had the regression nailed, but alas it's not quite there yet.
        But I'm very confident that it's "just" a missing expire on exit, so
        fix from Tejun should be fairly trivial.  I'm headed out for a week on
        the slopes.
      
        - Killing the barrier part of mtip32xx.  It doesn't really support
          barriers, and it doesn't need them (writes are fully ordered).
      
        - A few fixes from Dan Carpenter, preventing overflows of integer
          multiplication.
      
        - A fixup for loop, fixing a previous commit that didn't quite solve
          the partial read problem from Dave Young.
      
        - A bio integer overflow fix from Kent Overstreet.
      
        - Improvement/fix of the door "keep locked" part of the cdrom shared
          code from Paolo Benzini.
      
        - A few cfq fixes from Shaohua Li.
      
        - A fix for bsg sysfs warning when removing a file it did not create
          from Stanislaw Gruszka.
      
        - Two fixes for floppy from Vivek, preventing a crash.
      
        - A few block core fixes from Tejun.  One killing the over-optimized
          ioc exit path, cleaning that up nicely.  Two others fixing an oops
          on elevator switch, due to calling into the scheduler merge check
          code without holding the queue lock."
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        block: fix lockdep warning on io_context release put_io_context()
        relay: prevent integer overflow in relay_open()
        loop: zero fill bio instead of return -EIO for partial read
        bio: don't overflow in bio_get_nr_vecs()
        floppy: Fix a crash during rmmod
        floppy: Cleanup disk->queue before caling put_disk() if add_disk() was never called
        cdrom: move shared static to cdrom_device_info
        bsg: fix sysfs link remove warning
        block: don't call elevator callbacks for plug merges
        block: separate out blk_rq_merge_ok() and blk_try_merge() from elevator functions
        mtip32xx: removed the irrelevant argument of mtip_hw_submit_io() and the unused member of struct driver_data
        block: strip out locking optimization in put_io_context()
        cdrom: use copy_to_user() without the underscores
        block: fix ioc locking warning
        block: fix NULL icq_cache reference
        block,cfq: change code order
      3ec1e88b
    • Tejun Heo's avatar
      block: fix lockdep warning on io_context release put_io_context() · d8c66c5d
      Tejun Heo authored
      11a3122f "block: strip out locking optimization in put_io_context()"
      removed ioc_lock depth lockdep annoation along with locking
      optimization; however, while recursing from put_io_context() is no
      longer possible, ioc_release_fn() may still end up putting the last
      reference of another ioc through elevator, which wlil grab ioc->lock
      triggering spurious (as the ioc is always different one) A-A deadlock
      warning.
      
      As this can only happen one time from ioc_release_fn(), using non-zero
      subclass from ioc_release_fn() is enough.  Use subclass 1.
      Signed-off-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
      d8c66c5d
  4. 10 Feb, 2012 11 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 8df54d62
      Linus Torvalds authored
      Quoth David:
      
      1) GRO MAC header comparisons were ethernet specific, breaking other
         link types.  This required a multi-faceted fix to cure the originally
         noted case (Infiniband), because IPoIB was lying about it's actual
         hard header length.  Thanks to Eric Dumazet, Roland Dreier, and
         others.
      
      2) Fix build failure when INET_UDP_DIAG is built in and ipv6 is modular.
         From Anisse Astier.
      
      3) Off by ones and other bug fixes in netprio_cgroup from Neil Horman.
      
      4) ipv4 TCP reset generation needs to respect any network interface
         binding from the socket, otherwise route lookups might give a
         different result than all the other segments received.  From Shawn
         Lu.
      
      5) Fix unintended regression in ipv4 proxy ARP responses, from Thomas
         Graf.
      
      6) Fix SKB under-allocation bug in sh_eth, from Yoshihiro Shimoda.
      
      7) Revert skge PCI mapping changes that are causing crashes for some
         folks, from Stephen Hemminger.
      
      8) IPV4 route lookups fill in the wildcarded fields of the given flow
         lookup key passed in, which is fine most of the time as this is
         exactly what the caller's want.  However there are a few cases that
         want to retain the original flow key values afterwards, so handle
         those cases properly.  Fix from Julian Anastasov.
      
      9) IGB/IXGBE VF lookup bug fixes from Greg Rose.
      
      10) Properly null terminate filename passed to ethtool flash device
          method, from Ben Hutchings.
      
      11) S3 resume fix in via-velocity from David Lv.
      
      12) Fix double SKB free during xmit failure in CAIF, from Dmitry
          Tarnyagin.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (72 commits)
        net: Don't proxy arp respond if iif == rt->dst.dev if private VLAN is disabled
        ipv4: Fix wrong order of ip_rt_get_source() and update iph->daddr.
        netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m
        netprio_cgroup: don't allocate prio table when a device is registered
        netprio_cgroup: fix an off-by-one bug
        bna: fix error handling of bnad_get_flash_partition_by_offset()
        isdn: type bug in isdn_net_header()
        net: Make qdisc_skb_cb upper size bound explicit.
        ixgbe: ethtool: stats user buffer overrun
        ixgbe: dcb: up2tc mapping lost on disable/enable CEE DCB state
        ixgbe: do not update real num queues when netdev is going away
        ixgbe: Fix broken dependency on MAX_SKB_FRAGS being related to page size
        ixgbe: Fix case of Tx Hang in PF with 32 VFs
        ixgbe: fix vf lookup
        igb: fix vf lookup
        e1000: add dropped DMA receive enable back in for WoL
        gro: more generic L2 header check
        IPoIB: Stop lying about hard_header_len and use skb->cb to stash LL addresses
        zd1211rw: firmware needs duration_id set to zero for non-pspoll frames
        net: enable TC35815 for MIPS again
        ...
      8df54d62
    • Thomas Graf's avatar
      net: Don't proxy arp respond if iif == rt->dst.dev if private VLAN is disabled · 70620c46
      Thomas Graf authored
      Commit 653241 (net: RFC3069, private VLAN proxy arp support) changed
      the behavior of arp proxy to send arp replies back out on the interface
      the request came in even if the private VLAN feature is disabled.
      
      Previously we checked rt->dst.dev != skb->dev for in scenarios, when
      proxy arp is enabled on for the netdevice and also when individual proxy
      neighbour entries have been added.
      
      This patch adds the check back for the pneigh_lookup() scenario.
      Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
      Acked-by: default avatarJesper Dangaard Brouer <hawk@comx.dk>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      70620c46
    • Li Wei's avatar
      ipv4: Fix wrong order of ip_rt_get_source() and update iph->daddr. · 5dc7883f
      Li Wei authored
      This patch fix a bug which introduced by commit ac8a4810 (ipv4: Save
      nexthop address of LSRR/SSRR option to IPCB.).In that patch, we saved
      the nexthop of SRR in ip_option->nexthop and update iph->daddr until
      we get to ip_forward_options(), but we need to update it before
      ip_rt_get_source(), otherwise we may get a wrong src.
      Signed-off-by: default avatarLi Wei <lw@cn.fujitsu.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5dc7883f
    • Neil Horman's avatar
      netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m · 2b73bc65
      Neil Horman authored
      When the netprio_cgroup module is not loaded, net_prio_subsys_id
      is -1, and so sock_update_prioidx() accesses cgroup_subsys array
      with negative index subsys[-1].
      
      Make the code resembles cls_cgroup code, which is bug free.
      Origionally-authored-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2b73bc65
    • Neil Horman's avatar
      netprio_cgroup: don't allocate prio table when a device is registered · f5c38208
      Neil Horman authored
      So we delay the allocation till the priority is set through cgroup,
      and this makes skb_update_priority() faster when it's not set.
      
      This also eliminates an off-by-one bug similar with the one fixed
      in the previous patch.
      Origionally-authored-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f5c38208
    • Neil Horman's avatar
      netprio_cgroup: fix an off-by-one bug · a87dfe14
      Neil Horman authored
      # mount -t cgroup xxx /mnt
        # mkdir /mnt/tmp
        # cat /mnt/tmp/net_prio.ifpriomap
        lo 0
        eth0 0
        virbr0 0
        # echo 'lo 999' > /mnt/tmp/net_prio.ifpriomap
        # cat /mnt/tmp/net_prio.ifpriomap
        lo 999
        eth0 0
        virbr0 4101267344
      
      We got weired output, because we exceeded the boundary of the array.
      We may even crash the kernel..
      Origionally-authored-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
      CC: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a87dfe14
    • Christoph Hellwig's avatar
      xfs: use a normal shrinker for the dquot freelist · 04da0c81
      Christoph Hellwig authored
      Stop reusing dquots from the freelist when allocating new ones directly, and
      implement a shrinker that actually follows the specifications for the
      interface.  The shrinker implementation is still highly suboptimal at this
      point, but we can gradually work on it.
      
      This also fixes an bug in the previous lock ordering, where we would take
      the hash and dqlist locks inside of the freelist lock against the normal
      lock ordering.  This is only solvable by introducing the dispose list,
      and thus not when using direct reclaim of unused dquots for new allocations.
      
      As a side-effect the quota upper bound and used to free ratio values in
      /proc/fs/xfs/xqm are set to 0 as these values don't make any sense in the
      new world order.
      Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarBen Myers <bpm@sgi.com>
      04da0c81
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 612b8507
      Linus Torvalds authored
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/i915: fixup interlaced bits clearing in PIPECONF on PCH_SPLIT (v2)
        drm/i915: no lvds quirk for AOpen MP45
        drm/i915: Force explicit bpp selection for intel_dp_link_required
        drm/radeon: do not continue after error from r600_ib_test
        drivers/gpu/drm/drm_ioc32.c: initialize all fields
        drm/i915: fixup interlaced bits clearing in PIPECONF on PCH_SPLIT
        drm/i915:: Disable FBC on SandyBridge
      612b8507
    • Linus Torvalds's avatar
      Merge tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux · af5feae3
      Linus Torvalds authored
      fix 1 mysterious divide error
      fix 3 NULL dereference bugs in writeback tracing, on SD card removal w/o umount
      
      * tag 'writeback-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/wfg/linux:
        writeback: fix dereferencing NULL bdi->dev on trace_writeback_queue
        lib: proportion: lower PROP_MAX_SHIFT to 32 on 64-bit kernel
        writeback: fix NULL bdi->dev in trace writeback_single_inode
        backing-dev: fix wakeup timer races with bdi_unregister()
      af5feae3
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · ce2814f2
      Linus Torvalds authored
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf: Fix double start/stop in x86_pmu_start()
        perf evsel: Fix an issue where perf report fails to show the proper percentage
        perf tools: Fix prefix matching for kernel maps
        perf tools: Fix perf stack to non executable on x86_64
        perf: Remove deprecated WARN_ON_ONCE()
      ce2814f2
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 1282ab3f
      Linus Torvalds authored
      Couple of regressions, couple of zero-day bugs, a minor enhancement.
      Nothing really major.
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        hwmon: (f75375s) Let f75375_update_device treat pwmX as a measured value
        hwmon: (f75375s) Fix bit shifting in f75375_write16
        hwmon: (f75375s) Fix reading of wrong register when initializing the F75387
        hwmon: (f75375s) Fix automatic pwm mode setting for F75373 & F75375
        hwmon: (w83627ehf) Remove duplicate code
      1282ab3f