1. 04 Jan, 2016 2 commits
    • Michael Chan's avatar
      bnxt_en: Separate bnxt_{rx|tx}_ring_info structs from bnxt_napi struct. · b6ab4b01
      Michael Chan authored
      Currently, an rx and a tx ring are always paired with a completion ring.
      We want to restructure it so that it is possible to have a dedicated
      completion ring for tx or rx only.
      
      The bnxt hardware uses a completion ring for rx and tx events.  The driver
      has to process the completion ring entries sequentially for the rx and tx
      events.  Using a dedicated completion ring for rx only or tx only has these
      benefits:
      
      1. A burst of rx packets can cause delay in processing tx events if the
      completion ring is shared.  If tx queue is stopped by BQL, this can cause
      delay in re-starting the tx queue.
      
      2. A completion ring is sized according to the rx and tx ring size rounded
      up to the nearest power of 2.  When the completion ring is shared, it is
      sized by adding the rx and tx ring sizes and then rounded to the next power
      of 2, often with a lot of wasted space.
      
      3. Using dedicated completion ring, we can adjust the tx and rx coalescing
      parameters independently for rx and tx.
      
      The first step is to separate the rx and tx ring structures from the
      bnxt_napi struct.
      
      In this patch, an rx ring and a tx ring will point to the same bnxt_napi
      struct to share the same completion ring.  No change in ring assignment
      and mapping yet.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b6ab4b01
    • Michael Chan's avatar
      bnxt_en: Refactor bnxt_dbg_dump_states(). · 9f554590
      Michael Chan authored
      By adding 3 separate functions to dump the different ring states.
      Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9f554590
  2. 31 Dec, 2015 11 commits
  3. 30 Dec, 2015 27 commits
    • Xin Long's avatar
      sctp: sctp should release assoc when sctp_make_abort_user return NULL in sctp_close · 068d8bd3
      Xin Long authored
      In sctp_close, sctp_make_abort_user may return NULL because of memory
      allocation failure. If this happens, it will bypass any state change
      and never free the assoc. The assoc has no chance to be freed and it
      will be kept in memory with the state it had even after the socket is
      closed by sctp_close().
      
      So if sctp_make_abort_user fails to allocate memory, we should abort
      the asoc via sctp_primitive_ABORT as well. Just like the annotation in
      sctp_sf_cookie_wait_prm_abort and sctp_sf_do_9_1_prm_abort said,
      "Even if we can't send the ABORT due to low memory delete the TCB.
      This is a departure from our typical NOMEM handling".
      
      But then the chunk is NULL (low memory) and the SCTP_CMD_REPLY cmd would
      dereference the chunk pointer, and system crash. So we should add
      SCTP_CMD_REPLY cmd only when the chunk is not NULL, just like other
      places where it adds SCTP_CMD_REPLY cmd.
      Signed-off-by: default avatarXin Long <lucien.xin@gmail.com>
      Acked-by: default avatarMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      068d8bd3
    • David S. Miller's avatar
      Merge tag 'wireless-drivers-for-davem-2015-12-28' of... · a0ccc3f2
      David S. Miller authored
      Merge tag 'wireless-drivers-for-davem-2015-12-28' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers
      
      Kalle Valo says:
      
      ====================
      iwlwifi
      
      * don't load firmware that won't exist for 7260
      * fix RCU splat
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a0ccc3f2
    • Nicolai Stange's avatar
      net, socket, socket_wq: fix missing initialization of flags · 574aab1e
      Nicolai Stange authored
      Commit ceb5d58b ("net: fix sock_wake_async() rcu protection") from
      the current 4.4 release cycle introduced a new flags member in
      struct socket_wq and moved SOCKWQ_ASYNC_NOSPACE and SOCKWQ_ASYNC_WAITDATA
      from struct socket's flags member into that new place.
      
      Unfortunately, the new flags field is never initialized properly, at least
      not for the struct socket_wq instance created in sock_alloc_inode().
      
      One particular issue I encountered because of this is that my GNU Emacs
      failed to draw anything on my desktop -- i.e. what I got is a transparent
      window, including the title bar. Bisection lead to the commit mentioned
      above and further investigation by means of strace told me that Emacs
      is indeed speaking to my Xorg through an O_ASYNC AF_UNIX socket. This is
      reproducible 100% of times and the fact that properly initializing the
      struct socket_wq ->flags fixes the issue leads me to the conclusion that
      somehow SOCKWQ_ASYNC_WAITDATA got set in the uninitialized ->flags,
      preventing my Emacs from receiving any SIGIO's due to data becoming
      available and it got stuck.
      
      Make sock_alloc_inode() set the newly created struct socket_wq's ->flags
      member to zero.
      
      Fixes: ceb5d58b ("net: fix sock_wake_async() rcu protection")
      Signed-off-by: default avatarNicolai Stange <nicstange@gmail.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      574aab1e
    • David S. Miller's avatar
      Merge branch '10GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue · a3748a9c
      David S. Miller authored
      Jeff Kirsher says:
      
      ====================
      10GbE Intel Wired LAN Driver Updates 2015-12-29
      
      This series contains updates to ixgbe and ixgbevf.
      
      William Dauchy provides a fix for ixgbevf that was implemented for ixgbe,
      commit 5d6002b7 ("ixgbe: Fix handling of NAPI budget when multiple
      queues are enabled per vector"). The issue was that the polling routine
      would increase the budget for receive to at least 1 per queue if multiple
      queues were present, which resulted in receive packets being processed
      when the budget was 0.
      
      Emil provides minor cleanups for ixgbevf, one being that we need to
      check rx_itr_setting with == and not &, since it is not a mask.  Added
      QSFP PHY support in ixgbe to allow for more accurate reporting of port
      settings.  Fixed the max RSS limit for X550 which is 63, not 64.
      
      Veola fixes ixgbe ethtool reporting of backplane type interfaces as
      1000/10000baseT link modes, instead, report the media as KR, KX or KX4
      based on the backplane interface present.
      
      Mark cleans up redundancy in the setting of hw_enc_features that makes
      it appear that X550 has more encapsulation features than other devices.
      Also do not set NETIF_F_SG any longer since that is set by the
      register_netdev() call.  Also fixed the X550EM_x revision check, which
      needs to check a value, not just a bit.
      
      Alex Duyck fixes additional bugs in ixgbe_clear_vf_vlans(), one being
      that the mask was using a divide instead of a modulus, which resulted
      in the mask bit being incorrectly set to 0 or 1 based on the value of
      the VF being tested.  Alex also found that he was not consistent in
      using the "word" argument as an offset or as a register offset, so
      made the code consistently use word as the offset in the array.
      
      v2: dropped patch 8 of the original series, as it was undoing a part of
          the fix Alex Duyck was doing in patch 9 of the original series.
          Dropped based on feedback from Emil (the author).
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a3748a9c
    • David S. Miller's avatar
      Merge branch 'be2net-next' · 1ab8c11f
      David S. Miller authored
      Sathya Perla says:
      
      ====================
      be2net: patch set
      
      The following patch set contains some feature additions, code re-organization
      and cleanup and a few non-critical fixes. Pls consider applying this to
      the net-next tree. Thanks.
      
      v3 changes: add a default case to the switch statement in patch 5 to
      satisfy the compiler (-Wswitch).
      v2 changes: replaced an if/else block that checks for error values with a
      switch/case statement in patch 5.
      
      Patch 1 fixes VF link state transition from disabled to auto that did
      not work due to an issue in the FW. This issue could not be fixed in FW due
      to some backward compatibility issues it causes with released drivers.
      The issue has been fixed by introducing a new version (v2) of the cmd
      from 10.6 FW onwards. This patch adds support for v2 version of this cmd.
      
      Patch 2 reports a EOPNOTSUPP status to ethtool when the user tries to
      configure BE3/SRIOV in VEPA mode as it is not supported by the chip.
      
      Patch 3 cleansup FW flash image related constant definitions. Many of these
      definitions (such as section offset values) were defined in decimal format
      rather than hexa-decimal. This makes this part of the code un-readable.
      Also some defines related to BE2 are labeld "g2" and defines related to BE3
      are labeled "g3".  This patch cleans up all of this to make this code more
      readable.
      
      Patch 4 moves the FW cmd code to be_cmds.c. All code relating to FW cmds
      has been in be_cmds.[ch], excepting FW flash cmd related code.
      This patch moves these routines from be_main.c to be_cmds.c.
      
      Patch 5 adds a log message to report digital signature errors while
      flashing a FW image. From FW version 11.0 onwards, the FW supports a new
      "secure mode" feature (based on a jumper setting on the adapter.) In this
      mode, the FW image when flashed is authenticated with a digital signature.
      
      Patch 6 removes a line of code that has no effect.
      
      Patch 7 removes some unused variables.
      
      Patch 8 fixes port resource descriptor query via the GET_PROFILE FW cmd.
      An earlier commit passed a specific pf_num while issuing this cmd as FW
      returns descriptors for all functions when pf_num is zero. But, when pf_num
      is set to a non-zero value, FW does not return the port resource descriptor.
      This patch fixes this by setting pf_num to 0 while issuing the query cmd
      and adds code to pick the correct NIC resource descriptor from the list of
      descriptors returned by FW.
      
      Patch 9 adds support for ethtool get-dump feature. In the past when this
      option was not yet available, this feature was supported via the
      --register-dump option as a workaround.  This patch removes support for
      FW-dump via --register-dump option as it is now available via --get-dump
      option. Even though the "ethtool --register-dump" cmd which used to work
      earlier, will now fail with ENOTSUPP error, we feel it is not an issue as
      this is used only for diagnostics purpose.
      
      Patch 10 bumps up the driver version.
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1ab8c11f
    • Suresh Reddy's avatar
    • Venkat Duvvuru's avatar
      be2net: support ethtool get-dump option · fd7ff6f0
      Venkat Duvvuru authored
      This patch adds support for ethtool's --get-dump option in be2net,
      to retrieve FW dump. In the past when this option was not yet available,
      this feature was supported via the --register-dump option as a workaround.
      This patch removes support for FW-dump via --register-dump option as it is
      now available via --get-dump option. Even though the
      "ethtool --register-dump" cmd which used to work earlier, will now fail
      with ENOTSUPP error, we feel it is not an issue as this is used only
      for diagnostics purpose.
      Signed-off-by: default avatarVenkat Duvvuru <venkatkumar.duvvuru@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fd7ff6f0
    • Suresh Reddy's avatar
      be2net: fix port-res desc query of GET_PROFILE_CONFIG FW cmd · 980df249
      Suresh Reddy authored
      Commit 72ef3a88 ("be2net: set pci_func_num while issuing
      GET_PROFILE_CONFIG cmd") passed a specific pf_num while issuing a
      GET_PROFILE_CONFIG cmd as FW returns descriptors for all functions when
      pf_num is zero. But, when pf_num is set to a non-zero value, FW does not
      return the Port resource descriptor.
      This patch fixes this by setting pf_num to 0 while issuing the query cmd
      and adds code to pick the correct NIC resource descriptor from the list of
      descriptors returned by FW.
      
      Fixes: 72ef3a88 ("be2net: set pci_func_num while issuing
      		     GET_PROFILE_CONFIG cmd")
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      980df249
    • Venkat Duvvuru's avatar
      be2net: remove unused error variables · 04e888de
      Venkat Duvvuru authored
      eeh_error, fw_timeout, hw_error variables in the be_adapter structure are
      not used anymore. An earlier patch that introduced adapter->err_flags to
      store this information missed removing these variables.
      Signed-off-by: default avatarVenkat Duvvuru <venkatkumar.duvvuru@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      04e888de
    • Sathya Perla's avatar
      be2net: remove a line of code that has no effect · fdf81bfb
      Sathya Perla authored
      This patch removes a line of code that changes adapter->recommended_prio
      value followed by yet another assignment.
      Also, the variable is used to store the vlan priority value that is already
      shifted to the PCP bits position in the vlan tag format. Hence, the name of
      this variable is changed to recommended_prio_bits.
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fdf81bfb
    • Suresh Reddy's avatar
      be2net: log digital signature errors while flashing FW image · 6b525782
      Suresh Reddy authored
      (based on a jumper setting on the adapter.) In this mode, the FW image when
      flashed is authenticated with a digital signature. This patch logs
      appropriate error messages and return a status to ethtool when errors
      relating to FW image authentication occur.
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6b525782
    • Suresh Reddy's avatar
      be2net: move FW flash cmd code to be_cmds.c · a23113b5
      Suresh Reddy authored
      All code relating to FW cmds is in be_cmds.[ch] excepting FW flash cmd
      related code. This patch moves these routines from be_main.c to be_cmds.c
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      a23113b5
    • Suresh Reddy's avatar
      be2net: cleanup FW flash image related macro defines · 8836ff48
      Suresh Reddy authored
      Many constant definitions relating to the FW-image layout
      (such as section offset values) were defined in decimal format rather than
      hexa-decimal. This makes this part of the code un-readable. Also some
      defines related to BE2 are labeld "g2" and defines related to BE3 are
      labeled "g3".  This patch cleans up all of this to make this code more
      readable.
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      8836ff48
    • Suresh Reddy's avatar
      be2net: avoid configuring VEPA mode on BE3 · ac0f5fba
      Suresh Reddy authored
      BE3 chip doesn't support VEPA mode.
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ac0f5fba
    • Suresh Reddy's avatar
      be2net: fix VF link state transition from disabled to auto · d9d426af
      Suresh Reddy authored
      The VF link state setting transition from "disable" to "auto" does not work
      due to a bug in SET_LOGICAL_LINK_CONFIG_V1 cmd in FW. This issue could not
      be fixed in FW due to some backward compatibility issues it causes with
      some released drivers. The issue has been fixed by introducing a new
      version (v2) of the cmd from 10.6 FW onwards. In v2, to set the VF link
      state to auto, both PLINK_ENABLE and PLINK_TRACK bits have to be set to 1.
      
      The VF link state setting feature now works on Lancer chips too from
      FW ver 10.6.315.0 onwards.
      Signed-off-by: default avatarSuresh Reddy <suresh.reddy@avagotech.com>
      Signed-off-by: default avatarSathya Perla <sathya.perla@avagotech.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d9d426af
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · c6169202
      Linus Torvalds authored
      Pull block fixes from Jens Axboe:
       "Make the block layer great again.
      
        Basically three amazing fixes in this pull request, split into 4
        patches.  Believe me, they should go into 4.4.  Two of them fix a
        regression, the third and last fixes an easy-to-trigger bug.
      
         - Fix a bad irq enable through null_blk, for queue_mode=1 and using
           timer completions.  Add a block helper to restart a queue
           asynchronously, and use that from null_blk.  From me.
      
         - Fix a performance issue in NVMe.  Some devices (Intel Pxxxx) expose
           a stripe boundary, and performance suffers if we cross it.  We took
           that into account for merging, but not for the newer splitting
           code.  Fix from Keith.
      
         - Fix a kernel oops in lightnvm with multiple channels.  From Matias"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        lightnvm: wrong offset in bad blk lun calculation
        null_blk: use async queue restart helper
        block: add blk_start_queue_async()
        block: Split bios on chunk boundaries
      c6169202
    • Alexander Duyck's avatar
      ixgbe: Fix bugs in ixgbe_clear_vf_vlans() · ab3a3b7b
      Alexander Duyck authored
      When I had rewritten the code for ixgbe_clear_vf_vlans() it looks like I
      had transitioned back and forth between using word as an offset and using
      word as a register offset.  As a result I honestly don't see how the code
      was working before other than the fact that resetting the VLANs on the VF
      like didn't do much to clear them.
      
      Another issue found is that the mask was using a divide instead of a
      modulus.  As a result the mask bit was incorrectly being set to either bit
      0 or 1 based on the value of the VF being tested.  As a result the wrong
      VFs were having their VLANs cleared if they were enabled.
      
      I have updated the code so that word represents the offset in the array.
      This way we can use the modulus and xor operations and they will make sense
      instead of being performed on a 4 byte aligned value.
      
      I replaced the statement "(word % 2) ^ 1" with "~word % 2" in order to
      reduce the line length as the line exceeded 80 characters with the register
      name inserted.  The two should be equivalent so the change should be safe.
      Reported-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
      Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      ab3a3b7b
    • Mark Rustad's avatar
      ixgbe: Correct X550EM_x revision check · 3ca2b250
      Mark Rustad authored
      The X550EM_x revision check needs to check a value, not just a bit.
      Use a mask and check the value. Also remove the redundant check
      inside the ixgbe_enter_lplu_t_x550em, because it can only be called
      when both the mac type and revision check pass.
      Signed-off-by: default avatarMark Rustad <mark.d.rustad@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      3ca2b250
    • Emil Tantilov's avatar
      ixgbe: fix RSS limit for X550 · e9ee3238
      Emil Tantilov authored
      X550 allows for up to 64 RSS queues, but the driver can have max
      of 63 (-1 MSIX vector for link).
      
      On systems with >= 64 CPUs the driver will set the redirection table
      for all 64 queues which will result in packets being dropped.
      Signed-off-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      e9ee3238
    • Mark Rustad's avatar
      ixgbe: Clean up redundancy in hw_enc_features · fb8ad4a5
      Mark Rustad authored
      Clean up minor redundancy in the setting of hw_enc_features that
      makes it appears that X550 uniquely has more encapsulation features
      than other devices. The driver only supports one more feature, so
      make it look that way. No longer set NETIF_F_SG since that is set
      by the register_netdev call. Thanks to Alex Duyck for noticing this
      slight confusion.
      Reported-by: default avatarAlexander Duyck <aduyck@mirantis.com>
      Signed-off-by: default avatarMark Rustad <mark.d.rustad@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      fb8ad4a5
    • Veola Nazareth's avatar
      ixgbe: report correct media type for KR, KX and KX4 interfaces · 695b816d
      Veola Nazareth authored
      Ethtool reports backplane type interfaces as 1000/10000baseT link modes.
      This has been corrected to report the media as KR, KX or KX4 based on the
      backplane interface present.
      Signed-off-by: default avatarVeola Nazareth <veola.nazareth@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      695b816d
    • Emil Tantilov's avatar
      ixgbe: add support for QSFP PHY types in ixgbe_get_settings() · af56b4d8
      Emil Tantilov authored
      Add missing QSFP PHY types to allow for more accurate reporting of
      port settings.
      Signed-off-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      af56b4d8
    • Emil Tantilov's avatar
      ixgbevf: minor cleanups for ixgbevf_set_itr() · 9ad3d6f7
      Emil Tantilov authored
      adapter->rx_itr_setting is not a mask so check it with == instead of &
      do not default to 12K interrupts in ixgbevf_set_itr()
      
      There should be no functional effect from these changes.
      Signed-off-by: default avatarEmil Tantilov <emil.s.tantilov@intel.com>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      9ad3d6f7
    • William Dauchy's avatar
      ixgbevf: Fix handling of NAPI budget when multiple queues are enabled per vector · d0f71aff
      William Dauchy authored
      This is the same patch as for ixgbe but applied differently according to
      busy polling.  See commit 5d6002b7 ("ixgbe: Fix handling of NAPI
      budget when multiple queues are enabled per vector")
      Signed-off-by: default avatarWilliam Dauchy <william@gandi.net>
      Tested-by: default avatarPhil Schmitt <phillip.j.schmitt@intel.com>
      Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
      d0f71aff
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patches from Andrew) · 866be88a
      Linus Torvalds authored
      Merge misc fixes from Andrew Morton:
       "9 fixes"
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
        mm/vmstat: fix overflow in mod_zone_page_state()
        ocfs2/dlm: clear migration_pending when migration target goes down
        mm/memory_hotplug.c: check for missing sections in test_pages_in_a_zone()
        ocfs2: fix flock panic issue
        m32r: add io*_rep helpers
        m32r: fix build failure
        arch/x86/xen/suspend.c: include xen/xen.h
        mm: memcontrol: fix possible memcg leak due to interrupted reclaim
        ocfs2: fix BUG when calculate new backup super
      866be88a
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · e25bd6ca
      Linus Torvalds authored
      Pull vfs fix from Al Viro:
       "Fix for 3.15 breakage of fcntl64() in arm OABI compat.  -stable
        fodder"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        [PATCH] arm: fix handling of F_OFD_... in oabi_fcntl64()
      e25bd6ca
    • Heiko Carstens's avatar
      mm/vmstat: fix overflow in mod_zone_page_state() · 6cdb18ad
      Heiko Carstens authored
      mod_zone_page_state() takes a "delta" integer argument.  delta contains
      the number of pages that should be added or subtracted from a struct
      zone's vm_stat field.
      
      If a zone is larger than 8TB this will cause overflows.  E.g.  for a
      zone with a size slightly larger than 8TB the line
      
          mod_zone_page_state(zone, NR_ALLOC_BATCH, zone->managed_pages);
      
      in mm/page_alloc.c:free_area_init_core() will result in a negative
      result for the NR_ALLOC_BATCH entry within the zone's vm_stat, since 8TB
      contain 0x8xxxxxxx pages which will be sign extended to a negative
      value.
      
      Fix this by changing the delta argument to long type.
      
      This could fix an early boot problem seen on s390, where we have a 9TB
      system with only one node.  ZONE_DMA contains 2GB and ZONE_NORMAL the
      rest.  The system is trying to allocate a GFP_DMA page but ZONE_DMA is
      completely empty, so it tries to reclaim pages in an endless loop.
      
      This was seen on a heavily patched 3.10 kernel.  One possible
      explaination seem to be the overflows caused by mod_zone_page_state().
      Unfortunately I did not have the chance to verify that this patch
      actually fixes the problem, since I don't have access to the system
      right now.  However the overflow problem does exist anyway.
      
      Given the description that a system with slightly less than 8TB does
      work, this seems to be a candidate for the observed problem.
      Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
      Cc: Christoph Lameter <cl@linux.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6cdb18ad