1. 23 Sep, 2012 1 commit
    • Fengguang Wu's avatar
      edac_mc: fix messy kfree calls in the error path · ef6e7816
      Fengguang Wu authored
      coccinelle warns about:
      
      + drivers/edac/edac_mc.c:429:9-23: ERROR: reference preceded by free on line 429
      
         421         if (mci->csrows) {
       > 422                 for (chn = 0; chn < tot_channels; chn++) {
         423                         csr = mci->csrows[chn];
         424                         if (csr) {
       > 425                                 for (chn = 0; chn < tot_channels; chn++)
         426                                          kfree(csr->channels[chn]);
         427                                  kfree(csr);
         428                          }
       > 429                          kfree(mci->csrows[i]);
         430                  }
         431                  kfree(mci->csrows);
         432          }
      
      and that code block seem to mess things up in several ways (double free, memory
      leak, out-of-bound reads etc.):
      
      L422: The iterator "chn" and bound "tot_channels" are totally wrong. Should be
            "row" and "tot_csrows" respectively. Which means either memory leak, or
            out-of-bound reads (which if does not trigger an immediate page fault
            error, will further lead to kfree() on random addresses).
      
      L425: The inner loop is reusing the same iterator "chn" as the outer loop,
            which could lead to premature end of the outer loop, and hence memory leak.
      
      L429: The array index 'i' in mci->csrows[i] is a temporary value used in
            previous loops, and won't change at all in the current loop. Which
            means either out-of-bound read and possibly kfree(random number), or the
            same mci->csrows[i] get freed once and again, and possibly double free
            for the kfree(csr) in L427.
      
      L426/L427: a kfree(csr->channels) is needed in between to avoid leaking the memory.
      
      The buggy code was introduced by commit de3910eb ("edac: change the mem
      allocation scheme to make Documentation/kobject.txt happy") in the 3.6-rc1
      merge window. Fix it by freeing up resources in this order:
      
        free csrows[i]->channels[j]
        free csrows[i]->channels
        free csrows[i]
        free csrows
      
      CC: Mauro Carvalho Chehab <mchehab@redhat.com>
      CC: Shaun Ruffell <sruffell@digium.com>
      Signed-off-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ef6e7816
  2. 22 Sep, 2012 6 commits
  3. 21 Sep, 2012 33 commits
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · abef3bd7
      Linus Torvalds authored
      Pull networking updates from David Miller:
       "More bug fixes, nothing gets past these guys"
      
       1) More kernel info leaks found by Mathias Krause, this time in the
          IPSEC configuration layers.
      
       2) When IPSEC policies change, we do not properly make sure that cached
          routes (which could now be stale) throughout the system will be
          revalidated.  Fix this by generalizing the generation count
          invalidation scheme used by ipv4.  From Nicolas Dichtel.
      
       3) When repairing TCP sockets, we need to allow to restore not just the
          send window scale, but the receive one too.  Extend the existing
          interface to achieve this in a backwards compatible way.  From
          Andrey Vagin.
      
       4) A fix for FCOE scatter gather feature validation erroneously caused
          scatter gather to be disabled for things like AOE too.  From Ed L
          Cashin.
      
       5) Several cases of mishandling of error pointers, from Mathias Krause,
          Wei Yongjun, and Devendra Naga.
      
       6) Fix gianfar build, from Richard Cochran.
      
       7) CAP_NET_* failures should return -EPERM not -EACCES, from Zhao
          Hongjiang.
      
       8) Hardware reset fix in janz-ican3 CAN driver, from Ira W Snyder.
      
       9) Fix oops during rmmod in ti_hecc CAN driver, from Marc Kleine-Budde.
      
      10) The removal of the conditional compilation of the clk support code
          in the stmmac driver broke things.  This is because the interfaces
          used are the ones that don't also perform the enable/disable of the
          clk.  Fix from Stefan Roese.
      
      11) The QFQ packet scheduler can record out of range virtual start
          times, resulting later in misbehavior and even crashes.  Fix from
          Paolo Valente.
      
      12) If MSG_WAITALL is used with IOAT DMA under TCP, we can wedge the
          receiver when the advertised receive window goes to zero.  Detect
          this case and force the processing of the IOAT DMA queue when it
          happens to avoid getting stuck.  Fix from Michal Kubecek.
      
      13) batman-adv assumes that test_bit() returns only 0 or 1, but this is
          not true for x86 (which returns -1 or 0, via the 'sbb' instruction).
          Fix from Linus Lussing.
      
      14) Fix small packet corruption in e1000, from Tushar Dave.
      
      15) make_blackhole() in the IPSEC policy code can do one read unlock too
          many, fix from Li RongQing.
      
      16) The new tcp_try_coalesce() code introduced a bug in TCP URG
          handling, fix from Eric Dumazet.
      
      17) Fix memory leak in __netif_receive_skb() when doing zerocopy and
          when hit an OOM condition.  From Michael S Tsirkin.
      
      18) netxen blindly deferences pdev->bus->self, which is not guarenteed
          to be non-NULL.  Fix from Nikolay Aleksandrov.
      
      19) Fix a performance regression caused by mistakes in ipv6 checksum
          validation in the bnx2x driver, fix from Michal Schmidt.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (45 commits)
        net/stmmac: Use clk_prepare_enable and clk_disable_unprepare
        net: change return values from -EACCES to -EPERM
        net/irda: sh_sir: fix return value check in sh_sir_set_baudrate()
        stmmac: fix return value check in stmmac_open_ext_timer()
        gianfar: fix phc index build failure
        ipv6: fix return value check in fib6_add()
        bnx2x: remove false warning regarding interrupt number
        can: ti_hecc: fix oops during rmmod
        can: janz-ican3: fix support for older hardware revisions
        net: do not disable sg for packets requiring no checksum
        aoe: assert AoE packets marked as requiring no checksum
        at91ether: return PTR_ERR if call to clk_get fails
        xfrm_user: don't copy esn replay window twice for new states
        xfrm_user: ensure user supplied esn replay window is valid
        xfrm_user: fix info leak in copy_to_user_tmpl()
        xfrm_user: fix info leak in copy_to_user_policy()
        xfrm_user: fix info leak in copy_to_user_state()
        xfrm_user: fix info leak in copy_to_user_auth()
        net: qmi_wwan: adding Huawei E367, ZTE MF683 and Pantech P4200
        tcp: restore rcv_wscale in a repair mode (v2)
        ...
      abef3bd7
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc · 6219844e
      Linus Torvalds authored
      Pull sparc updates from David Miller:
      
      1) Debugging builds on 32-bit sparc need to handle the R_SPARC_DISP32
         relocation, not just 64-bit sparc.  From Andreas Larsson.
      
      2) Wei Yongjun noticed that module_alloc() on sparc can return an
         error pointer, but that's not allowed.  module_alloc() should
         return only a valid pointer, or NULL.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
        sparc: fix the return value of module_alloc()
        sparc32: Enable the relocation target R_SPARC_DISP32 for sparc32
      6219844e
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 9d108907
      Linus Torvalds authored
      Pull x86 fixes from Ingo Molnar:
       "Small fixlets"
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm/init.c: Fix devmem_is_allowed() off by one
        x86/kconfig: Remove outdated reference to Intel CPUs in CONFIG_SWIOTLB
      9d108907
    • Linus Torvalds's avatar
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 519b3b74
      Linus Torvalds authored
      Pull timer fix from Ingo Molnar:
       "One more timekeeping fix for v3.6"
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        time: Fix timeekeping_get_ns overflow on 32bit systems
      519b3b74
    • Linus Torvalds's avatar
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 18f5600b
      Linus Torvalds authored
      Pull perf fixes from Ingo Molnar:
       "Small perf fixlets"
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        tracing: Don't call page_to_pfn() if page is NULL
        perf/x86: Fix Intel Ivy Bridge support
        perf/x86/ibs: Check syscall attribute flags
        perf/x86: Export Sandy Bridge uncore clockticks event in sysfs
      18f5600b
    • Linus Torvalds's avatar
      Merge tag 'for-linus-v3.6-rc7' of git://oss.sgi.com/xfs/xfs · 789f95b7
      Linus Torvalds authored
      Pull xfs bugfixes from Ben Myers:
       - fix a regression related to xfs_sync_worker racing with unmount.
       - fix a race while discarding xfs buffers.
      
      * tag 'for-linus-v3.6-rc7' of git://oss.sgi.com/xfs/xfs:
        xfs: stop the sync worker before xfs_unmountfs
        xfs: fix race while discarding buffers [V4]
      789f95b7
    • Linus Torvalds's avatar
      Merge branch 'drm-fixes' of git://people.freedesktop.org/~airlied/linux · 36a21fe6
      Linus Torvalds authored
      Pull drm fixes from Dave Airlie:
       "Fixes for big 3 drivers:
      
        nouveau: revert earlier MBP fix, put a dmi based MBP fix in its place
        (fixes a regression we found on some Dell eDP panels doing some
        internal testing)
      
        radeon: revert pll fixes, real fix is too invasive, fix scratch leak
      
        intel: 3 minor fixes, one for HDMI audio."
      
      * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
        drm/nouveau: add dmi quirk for gpio reset
        drm/radeon: Prevent leak of scratch register on resume from suspend
        Revert "drm/nv50-/gpio: initialise to vbios defaults during init"
        Revert "drm/radeon: rework pll selection (v3)"
        drm/i915: HDMI - Clear Audio Enable bit for Hot Plug
        drm/i915: Reduce a pin-leak BUG into a WARN
        drm/i915: enable lvds pin pairs before dpll on gen2
      36a21fe6
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input · 6551d6fe
      Linus Torvalds authored
      Pull input updates from Dmitry Torokhov:
       "Updates for the input subsystem.  Just a few driver updates mostly
        dealing with recent regressions."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
        Input: edt-ft5x06 - return -EFAULT on copy_to_user() error
        Input: sentelic - filter out erratic movement when lifting finger
        Input: ambakmi - [un]prepare clocks when enabling amd disabling
        Input: i8042 - disable mux on Toshiba C850D
        Revert "input: ab8500-ponkey: Create AB8500 domain IRQ mapping"
        Input: imx_keypad - fix missing clk conversions
        Input: usbtouchscreen - initialize eGalax devices
      6551d6fe
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · 868f480b
      Linus Torvalds authored
      Pull watchdog fixes from Wim Van Sebroeck:
       "Fix a kdump issue in hpwdt and a possible NULL dereference."
      
      * git://www.linux-watchdog.org/linux-watchdog:
        watchdog: move the dereference below the NULL test
        hpwdt: Fix kdump issue in hpwdt
      868f480b
    • Linus Torvalds's avatar
      Merge tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging · 6d77987f
      Linus Torvalds authored
      Pull hwmon fixes from Guenter Roeck:
       - Add missing 'name' sysfs attributes to ad7314 and ads7871 drivers
       - Bump maximum wait time for applesmc driver (again)
       - Fix build warning seen with W=1 in include/linux/kernel.h, introduced
         with commit b6d86d3d ("Fix DIV_ROUND_CLOSEST to support negative
         dividends")
      
      * tag 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
        linux/kernel.h: Fix warning seen with W=1 due to change in DIV_ROUND_CLOSEST
        hwmon: (applesmc) Bump max wait
        hwmon: (ad7314) Add 'name' sysfs attribute
        hwmon: (ads7871) Add 'name' sysfs attribute
      6d77987f
    • Linus Torvalds's avatar
      Merge branch 'fixes' of git://git.infradead.org/users/vkoul/slave-dma · 06b050eb
      Linus Torvalds authored
      Pull slave-dmaengine fixes from Vinod Koul:
       "There are two trivial fixes in pl330 driver and two in at_hdmac
        driver."
      
      * 'fixes' of git://git.infradead.org/users/vkoul/slave-dma:
        DMA: PL330: Check the pointer returned by kzalloc
        DMA: PL330: Fix potential NULL pointer dereference in pl330_submit_req()
        dmaengine: at_hdmac: check that each sg data length is non-null
        dmaengine: at_hdmac: fix comment in atc_prep_slave_sg()
      06b050eb
    • Linus Torvalds's avatar
      Merge tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · 63365013
      Linus Torvalds authored
      Pull arm-soc bug fixes from Olof Johansson:
       "A couple of samsung clock locking fixes, at91 device tree gpio
        configuration fix and a couple more for shmobile and i.MX.
      
        All small targeted fixes."
      
      * tag 'fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc:
        ARM i.MX25: Make timer irq work again
        ARM: imx: armadillo5x0: Fix illegal register access
        ARM: shmobile: kzm9g: bugfix: correct mmcif interrupt settings
        ARM: SAMSUNG: Use spin_lock_{irqsave,irqrestore} in clk_set_rate
        ARM: at91: fix missing #interrupt-cells on gpio-controller
        ARM: SAMSUNG: use spin_lock_irqsave() in clk_set_parent
      63365013
    • Wei Yongjun's avatar
      sparc: fix the return value of module_alloc() · a9e8d1a6
      Wei Yongjun authored
      In case of error, function module_alloc() in other platform never
      returns ERR_PTR(), and all of the user only check for NULL, so
      we'd better return NULL instead of ERR_PTR().
      
      dpatch engine is used to auto generated this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a9e8d1a6
    • Andreas Larsson's avatar
      sparc32: Enable the relocation target R_SPARC_DISP32 for sparc32 · dfa520af
      Andreas Larsson authored
      GNU Binutils 2.20.1 generates .eh_frame sections that uses R_SPARC_DISP32.
      Signed-off-by: default avatarAndreas Larsson <andreas@gaisler.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dfa520af
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · 267b50fe
      Linus Torvalds authored
      Pull s390 fixes from Martin Schwidefsky:
       "Bug fixes for 3.6-rc7, including some important patches for large page
        related memory management issues."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux:
        s390/dasd: fix read unit address configuration loop
        s390/dasd: fix pathgroup race
        s390/mm: fix user access page-table walk code
        s390/hwcaps: do not report high gprs for 31 bit kernel
        s390/cio: invalidate cdev pointer before deregistration
        s390/cio: fix IO subchannel event race
        s390/dasd: move wake_up call
        s390/hugetlb: use direct TLB flushing for hugetlbfs pages
        s390/mm: fix deadlock in unmap_hugepage_range()
      267b50fe
    • Linus Torvalds's avatar
      Merge tag 'stable/for-linus-3.6-rc6-tag' of... · 8ca7de91
      Linus Torvalds authored
      Merge tag 'stable/for-linus-3.6-rc6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen
      
      Pull Xen bug-fixes from Konrad Rzeszutek Wilk:
       - Fix M2P batching re-using the incorrect structure field.
      
         In v3.5 we added batching for M2P override (Machine Frame Number ->
         Physical Frame Number), but the original MFN was saved in an
         incorrect structure - and we would oops/restore when restoring with
         the old MFN.
      
       - Disable BIOS SMP MP table search.
      
         A bootup issue that we had ignored until we found that on DL380 G6 it
         was needed.
      
      * tag 'stable/for-linus-3.6-rc6-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
        xen/boot: Disable BIOS SMP MP table search.
        xen/m2p: do not reuse kmap_op->dev_bus_addr
      8ca7de91
    • Stefan Roese's avatar
      net/stmmac: Use clk_prepare_enable and clk_disable_unprepare · a630844d
      Stefan Roese authored
      This patch fixes an issue introduced by commit ID 6a81c26f
      [net/stmmac: remove conditional compilation of clk code], which
      switched from the internal stmmac_clk_{en}{dis}able calls to
      clk_{en}{dis}able. By this, calling clk_prepare and clk_unprepare
      was removed.
      
      clk_{un}prepare is mandatory for platforms using common clock framework.
      Since these drivers are used by SPEAr platform, which supports common
      clock framework, add clk_{un}prepare() support for them. Otherwise
      the clocks are not correctly en-/disabled and ethernet support doesn't
      work.
      Signed-off-by: default avatarStefan Roese <sr@denx.de>
      Cc: Viresh Kumar <viresh.kumar@linaro.org>
      Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>
      Reviewed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a630844d
    • Linus Torvalds's avatar
      debugfs: fix u32_array race in format_array_alloc · e05e279e
      Linus Torvalds authored
      The format_array_alloc() function is fundamentally racy, in that it
      prints the array twice: once to figure out how much space to allocate
      for the buffer, and the second time to actually print out the data.
      
      If any of the array contents changes in between, the allocation size may
      be wrong, and the end result may be truncated in odd ways.
      
      Just don't do it.  Allocate a maximum-sized array up-front, and just
      format the array contents once.  The only user of the u32_array
      interfaces is the Xen spinlock statistics code, and it has 31 entries in
      the arrays, so the maximum size really isn't that big, and the end
      result is much simpler code without the bug.
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e05e279e
    • Zhao Hongjiang's avatar
      net: change return values from -EACCES to -EPERM · bf5b30b8
      Zhao Hongjiang authored
      Change return value from -EACCES to -EPERM when the permission check fails.
      Signed-off-by: default avatarZhao Hongjiang <zhaohongjiang@huawei.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf5b30b8
    • David S. Miller's avatar
      Merge branch 'fixes-for-3.6' of git://gitorious.org/linux-can/linux-can · e0c7a4a1
      David S. Miller authored
      Marc Kleine-Budde says:
      
      ====================
      two patches for the v3.6 release cycle. Ira W. Snyder fixed support for the
      older version of the Janz CMOD-IO Carrier Board. I found and fixed an oops in
      the ti_hecc driver, which occurs when removing the module if the network
      interface is still open.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e0c7a4a1
    • Wei Yongjun's avatar
      net/irda: sh_sir: fix return value check in sh_sir_set_baudrate() · dc9c9759
      Wei Yongjun authored
      In case of error, the function clk_get() returns ERR_PTR()
      and never returns NULL pointer. The NULL test in the error
      handling should be replaced with IS_ERR().
      
      dpatch engine is used to auto generated this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      dc9c9759
    • Wei Yongjun's avatar
      stmmac: fix return value check in stmmac_open_ext_timer() · 6861509f
      Wei Yongjun authored
      In case of error, the function clk_get() returns ERR_PTR()
      and never returns NULL pointer. The NULL test in the error
      handling should be replaced with IS_ERR().
      
      dpatch engine is used to auto generated this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6861509f
    • Richard Cochran's avatar
      gianfar: fix phc index build failure · 28889b7e
      Richard Cochran authored
      This patch fixes a build failure introduced in commit 66636287
      ("gianfar: Support the get_ts_info ethtool method."). Not only was a
      global variable inconsistently named, but also it was not exported as
      it should have been.
      
      This fix is also needed in stable version 3.5.
      Signed-off-by: default avatarRichard Cochran <richardcochran@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      28889b7e
    • Wei Yongjun's avatar
      ipv6: fix return value check in fib6_add() · f950c0ec
      Wei Yongjun authored
      In case of error, the function fib6_add_1() returns ERR_PTR()
      or NULL pointer. The ERR_PTR() case check is missing in fib6_add().
      
      dpatch engine is used to generated this patch.
      (https://github.com/weiyj/dpatch)
      Signed-off-by: default avatarWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f950c0ec
    • David Rientjes's avatar
      debugfs: fix race in u32_array_read and allocate array at open · 36048853
      David Rientjes authored
      u32_array_open() is racy when multiple threads read from a file with a
      seek position of zero, i.e. when two or more simultaneous reads are
      occurring after the non-seekable files are created.  It is possible that
      file->private_data is double-freed because the threads races between
      
      	kfree(file->private-data);
      
      and
      
      	file->private_data = NULL;
      
      The fix is to only do format_array_alloc() when the file is opened and
      free it when it is closed.
      
      Note that because the file has always been non-seekable, you can't open
      it and read it multiple times anyway, so the data has always been
      generated just once.  The difference is that now it is generated at open
      time rather than at the time of the first read, and that avoids the
      race.
      Reported-by: default avatarDave Jones <davej@redhat.com>
      Acked-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Tested-by: default avatarRaghavendra <raghavendra.kt@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid Rientjes <rientjes@google.com>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      36048853
    • Ariel Elior's avatar
      bnx2x: remove false warning regarding interrupt number · 185d4c8b
      Ariel Elior authored
      Since version 7.4 the FW configures in the pci config space the max
      number of interrupts available to the physical function, instead of
      the exact number to use.
      This causes a false warning in driver when comparing the number of
      configured interrupts to the number about to be used.
      Signed-off-by: default avatarAriel Elior <ariele@broadcom.com>
      Signed-off-by: default avatarEilon Greenstein <eilong@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      185d4c8b
    • Russell King's avatar
      ARM: reserve syscall 378 for kcmp · bf619fae
      Russell King authored
      kcmp has appeared on x86, but has not been noticed because
      checksyscalls.sh is broken at the moment.  Reserve ARM syscall 378
      for this should we ever need it, and add an __IGNORE entry for this
      unimplemented syscall.
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      bf619fae
    • Marc Kleine-Budde's avatar
      can: ti_hecc: fix oops during rmmod · ab04c8bd
      Marc Kleine-Budde authored
      This patch fixes an oops which occurs when unloading the driver, while the
      network interface is still up. The problem is that first the io mapping is
      teared own, then the CAN device is unregistered, resulting in accessing the
      hardware's iomem:
      
      [  172.744232] Unable to handle kernel paging request at virtual address c88b0040
      [  172.752441] pgd = c7be4000
      [  172.755645] [c88b0040] *pgd=87821811, *pte=00000000, *ppte=00000000
      [  172.762207] Internal error: Oops: 807 [#1] PREEMPT ARM
      [  172.767517] Modules linked in: ti_hecc(-) can_dev
      [  172.772430] CPU: 0    Not tainted  (3.5.0alpha-00037-g3554cc0 #126)
      [  172.778961] PC is at ti_hecc_close+0xb0/0x100 [ti_hecc]
      [  172.784423] LR is at __dev_close_many+0x90/0xc0
      [  172.789123] pc : [<bf00c768>]    lr : [<c033be58>]    psr: 60000013
      [  172.789123] sp : c5c1de68  ip : 00040081  fp : 00000000
      [  172.801025] r10: 00000001  r9 : c5c1c000  r8 : 00100100
      [  172.806457] r7 : c5d0a48c  r6 : c5d0a400  r5 : 00000000  r4 : c5d0a000
      [  172.813232] r3 : c88b0000  r2 : 00000001  r1 : c5d0a000  r0 : c5d0a000
      [  172.820037] Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [  172.827423] Control: 10c5387d  Table: 87be4019  DAC: 00000015
      [  172.833404] Process rmmod (pid: 600, stack limit = 0xc5c1c2f0)
      [  172.839447] Stack: (0xc5c1de68 to 0xc5c1e000)
      [  172.843994] de60:                   bf00c6b8 c5c1dec8 c5d0a000 c5d0a000 00200200 c033be58
      [  172.852478] de80: c5c1de44 c5c1dec8 c5c1dec8 c033bf2c c5c1de90 c5c1de90 c5d0a084 c5c1de44
      [  172.860992] dea0: c5c1dec8 c033c098 c061d3dc c5d0a000 00000000 c05edf28 c05edb34 c000d724
      [  172.869476] dec0: 00000000 c033c2f8 c5d0a084 c5d0a084 00000000 c033c370 00000000 c5d0a000
      [  172.877990] dee0: c05edb00 c033c3b8 c5d0a000 bf00d3ac c05edb00 bf00d7c8 bf00d7c8 c02842dc
      [  172.886474] df00: c02842c8 c0282f90 c5c1c000 c05edb00 bf00d7c8 c0283668 bf00d7c8 00000000
      [  172.894989] df20: c0611f98 befe2f80 c000d724 c0282d10 bf00d804 00000000 00000013 c0068a8c
      [  172.903472] df40: c5c538e8 685f6974 00636365 c61571a8 c5cb9980 c61571a8 c6158a20 c00c9bc4
      [  172.911987] df60: 00000000 00000000 c5cb9980 00000000 c5cb9980 00000000 c7823680 00000006
      [  172.920471] df80: bf00d804 00000880 c5c1df8c 00000000 000d4267 befe2f80 00000001 b6d90068
      [  172.928985] dfa0: 00000081 c000d5a0 befe2f80 00000001 befe2f80 00000880 b6d90008 00000008
      [  172.937469] dfc0: befe2f80 00000001 b6d90068 00000081 00000001 00000000 befe2eac 00000000
      [  172.945983] dfe0: 00000000 befe2b18 00023ba4 b6e6addc 60000010 befe2f80 a8e00190 86d2d344
      [  172.954498] [<bf00c768>] (ti_hecc_close+0xb0/0x100 [ti_hecc]) from [<c033be58>] (__dev__registered_many+0xc0/0x2a0)
      [  172.984161] [<c033c098>] (rollback_registered_many+0xc0/0x2a0) from [<c033c2f8>] (rollback_registered+0x20/0x30)
      [  172.994750] [<c033c2f8>] (rollback_registered+0x20/0x30) from [<c033c370>] (unregister_netdevice_queue+0x68/0x98)
      [  173.005401] [<c033c370>] (unregister_netdevice_queue+0x68/0x98) from [<c033c3b8>] (unregister_netdev+0x18/0x20)
      [  173.015899] [<c033c3b8>] (unregister_netdev+0x18/0x20) from [<bf00d3ac>] (ti_hecc_remove+0x60/0x80 [ti_hecc])
      [  173.026245] [<bf00d3ac>] (ti_hecc_remove+0x60/0x80 [ti_hecc]) from [<c02842dc>] (platform_drv_remove+0x14/0x18)
      [  173.036712] [<c02842dc>] (platform_drv_remove+0x14/0x18) from [<c0282f90>] (__device_release_driver+0x7c/0xbc)
      
      Cc: stable <stable@vger.kernel.org>
      Cc: Anant Gole <anantgole@ti.com>
      Tested-by: default avatarJan Luebbe <jlu@pengutronix.de>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      ab04c8bd
    • Ira W. Snyder's avatar
      can: janz-ican3: fix support for older hardware revisions · e21093ef
      Ira W. Snyder authored
      The Revision 1.0 Janz CMOD-IO Carrier Board does not have support for
      the reset registers. To support older hardware, the code is changed to
      use the hardware reset register on the Janz VMOD-ICAN3 hardware itself.
      
      Cc: stable <stable@vger.kernel.org>
      Signed-off-by: default avatarIra W. Snyder <iws@ovro.caltech.edu>
      Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
      e21093ef
    • Dave Airlie's avatar
      Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes · 017a27e7
      Dave Airlie authored
      Daniel writes:
      Essentially just flush my -fixes queue before I head off to xdc.
      - gen2 regression fixer, we've enabled the lvds stuff too late. Not
        causing any known issues, but this restores the sequence before a
        refactor that landed in 3.5, and lvds is a fickle beast. And seriously,
        who runs gen2 still ...
      - downgrade a BUG to a WARN - we haven't root-caused/fixed the underlying
        issue yet, but this should help bug reporters quite a bit.
      - properly disable hdmi audio - we've lost track of this, which resulted
        in the alsa driver again losing track of the unplug event.
      
      * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
        drm/i915: HDMI - Clear Audio Enable bit for Hot Plug
        drm/i915: Reduce a pin-leak BUG into a WARN
        drm/i915: enable lvds pin pairs before dpll on gen2
      017a27e7
    • Dave Airlie's avatar
      drm/nouveau: add dmi quirk for gpio reset · 6c06d608
      Dave Airlie authored
      This fixes the gpio reset problem so the Retina MBP works, but avoids
      breaking the Dell systems. Ben will work on a better solution for 3.7.
      
      Tested by me on retina MBP.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      6c06d608
    • Ed Cashin's avatar
      net: do not disable sg for packets requiring no checksum · c0d680e5
      Ed Cashin authored
      A change in a series of VLAN-related changes appears to have
      inadvertently disabled the use of the scatter gather feature of
      network cards for transmission of non-IP ethernet protocols like ATA
      over Ethernet (AoE).  Below is a reference to the commit that
      introduces a "harmonize_features" function that turns off scatter
      gather when the NIC does not support hardware checksumming for the
      ethernet protocol of an sk buff.
      
        commit f01a5236
        Author: Jesse Gross <jesse@nicira.com>
        Date:   Sun Jan 9 06:23:31 2011 +0000
      
            net offloading: Generalize netif_get_vlan_features().
      
      The can_checksum_protocol function is not equipped to consider a
      protocol that does not require checksumming.  Calling it for a
      protocol that requires no checksum is inappropriate.
      
      The patch below has harmonize_features call can_checksum_protocol when
      the protocol needs a checksum, so that the network layer is not forced
      to perform unnecessary skb linearization on the transmission of AoE
      packets.  Unnecessary linearization results in decreased performance
      and increased memory pressure, as reported here:
      
        http://www.spinics.net/lists/linux-mm/msg15184.html
      
      The problem has probably not been widely experienced yet, because
      only recently has the kernel.org-distributed aoe driver acquired the
      ability to use payloads of over a page in size, with the patchset
      recently included in the mm tree:
      
        https://lkml.org/lkml/2012/8/28/140
      
      The coraid.com-distributed aoe driver already could use payloads of
      greater than a page in size, but its users generally do not use the
      newest kernels.
      Signed-off-by: default avatarEd Cashin <ecashin@coraid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c0d680e5
    • Ed Cashin's avatar
      aoe: assert AoE packets marked as requiring no checksum · 8babe8cc
      Ed Cashin authored
      In order for the network layer to see that AoE requires
      no checksumming in a generic way, the packets must be
      marked as requiring no checksum, so we make this requirement
      explicit with the assertion.
      Signed-off-by: default avatarEd Cashin <ecashin@coraid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8babe8cc