1. 28 2月, 2013 25 次提交
    • O
      fat: mark fs as dirty on mount and clean on umount · b88a1058
      Oleksij Rempel 提交于
      There is no documented methods to mark FAT as dirty.  Unofficially MS
      started to use reserved Byte in boot sector for this purpose, at least
      since Win 2000.  With Win 7 user is warned if fs is dirty and asked to
      clean it.
      
      Different versions of Win, handle it in different ways, but always have
      same meaning:
      
      - Win 2000 and XP, set it on write operations and
        remove it after operation was finnished
      - Win 7, set dirty flag on first write and remove it on umount.
      
      We will do it as follows:
      
      - set dirty flag on mount. If fs was initially dirty, warn user,
        remember it and do not do any changes to boot sector.
      - clean it on umount. If fs was initially dirty, leave it dirty.
      - do not do any thing if fs mounted read-only.
      - TODO: leave fs dirty if we found some error after mount.
      Signed-off-by: NOleksij Rempel <bug-track@fisher-privat.net>
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      b88a1058
    • O
      fat: add extended fileds to struct fat_boot_sector · 6b46419b
      Oleksij Rempel 提交于
      Later we will need "state" field to check if volume was cleanly unmounted.
      Signed-off-by: NOleksij Rempel <bug-track@fisher-privat.net>
      Signed-off-by: NOGAWA Hirofumi <hirofumi@mail.parknet.co.jp>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      6b46419b
    • V
      hfsplus: fix issue with unzeroed unused b-tree nodes · 899bed05
      Vyacheslav Dubeyko 提交于
      The fsck_hfs (under MacOS X) complains about unzeroed unused b-tree nodes
      after deletion of folders' tree under Linux.
      
      SYMPTOMS:
      
        Running Disk Utiltiy's "Verify Disk" on "test" gives the following:
        Verifying volume “Test”
        Checking file systemChecking Journaled HFS Plus volume.
        Checking extents overflow file.
        Checking catalog file.
        Unused node is not erased (node = 3111)
        Checking multi-linked files.
        Checking catalog hierarchy.
        Checking extended attributes file.
        Checking volume bitmap.
        Checking volume information.
        The volume Test was found corrupt and needs to be repaired.
        Error: This disk needs to be repaired. Click Repair Disk.
      
      REPRODUCING PATH:
      
      1. Prepare HFS+ (non-case sensitive) partition (for example, 5GB)
         under MacOS X.
      2. Copy linux kernel source tree (for example, 3.7-rc6 version) on
         this partition under MacOS X.
      3. Then switch to Linux and mount this prepared partition.
      4. Execute `sudo rm -r` under prepared directory with linux kernel
         source tree.
      5. Unmount and boot back into OS X.
      6. Open up Disk Utility and verify partition.
      
      REPRODUCIBILITY: 100%
      
      FIX:
      
      It is added code of node clearing in hfs_bnode_put() method for the case
      when node has flag HFS_BNODE_DELETED.
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NKyle Laracey <kalaracey@gmail.com>
      Acked-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      899bed05
    • V
      hfsplus: add support of manipulation by attributes file · 324ef39a
      Vyacheslav Dubeyko 提交于
      Add support of manipulation by attributes file.
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      324ef39a
    • V
      hfsplus: rework functionality of getting, setting and deleting of extended attributes · 127e5f5a
      Vyacheslav Dubeyko 提交于
      Rework functionality of getting, setting and deleting of extended attributes.
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      127e5f5a
    • V
      hfsplus: add functionality of manipulating by records in attributes tree · 3e05ca20
      Vyacheslav Dubeyko 提交于
      Add functionality of manipulating by records in attributes tree.
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3e05ca20
    • V
      hfsplus: add on-disk layout declarations related to attributes tree · 9ed083d8
      Vyacheslav Dubeyko 提交于
      Add all necessary on-disk layout declarations related to attributes file.
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9ed083d8
    • V
      hfsplus: add osx.* prefix for handling namespace of Mac OS X extended attributes · 5841ca09
      Vyacheslav Dubeyko 提交于
      hfsplus: reworked support of extended attributes.
      
      Current mainline implementation of hfsplus file system driver treats as
      extended attributes only two fields (fdType and fdCreator) of user_info
      field in file description record (struct hfsplus_cat_file).  It is
      possible to get or set only these two fields as extended attributes.
      But HFS+ treats as com.apple.FinderInfo extended attribute an union of
      user_info and finder_info fields as for file (struct hfsplus_cat_file)
      as for folder (struct hfsplus_cat_folder).  Moreover, current mainline
      implementation of hfsplus file system driver doesn't support special
      metadata file - attributes tree.
      
      Mac OS X 10.4 and later support extended attributes by making use of the
      HFS+ filesystem Attributes file B*-tree feature which allows for named
      forks.  Mac OS X supports only inline extended attributes, limiting
      their size to 3802 bytes.  Any regular file may have a list of extended
      attributes.  HFS+ supports an arbitrary number of named forks.  Each
      attribute is denoted by a name and the associated data.  The name is a
      null-terminated Unicode string.  It is possible to list, to get, to set,
      and to remove extended attributes from files or directories.
      
      It exists some peculiarity during getting of extended attributes list by
      means of getfattr utility.  The getfattr utility expects prefix "user."
      before any extended attribute's name.  So, it ignores any names that
      don't contained such prefix.  Such behavior of getfattr utility results
      in unexpected empty output of extended attributes list even in the case
      when file (or folder) contains extended attributes.  It needs to use
      empty string as regular expression pattern for names matching (getfattr
      --match="").
      
      For support of extended attributes in HFS+:
      1. It was added necessary on-disk layout declarations related to Attributes
         tree into hfsplus_raw.h file.
      2. It was added attributes.c file with implementation of functionality of
         manipulation by records in Attributes tree.
      3. It was reworked hfsplus_listxattr, hfsplus_getxattr, hfsplus_setxattr
         functions in ioctl.c. Moreover, it was added hfsplus_removexattr method.
      
      This patch:
      
      Add osx.* prefix for handling namespace of Mac OS X extended attributes.
      
      [akpm@linux-foundation.org: checkpatch fixes]
      Signed-off-by: NVyacheslav Dubeyko <slava@dubeyko.com>
      Reported-by: NHin-Tak Leung <htl10@users.sourceforge.net>
      Cc: Al Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Jan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5841ca09
    • I
      lib/scatterlist: use page iterator in the mapping iterator · 4225fc85
      Imre Deak 提交于
      For better code reuse use the newly added page iterator to iterate
      through the pages.  The offset, length within the page is still
      calculated by the mapping iterator as well as the actual mapping.  Idea
      from Tejun Heo.
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Cc: Maxim Levitsky <maximlevitsky@gmail.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: James Hogan <james.hogan@imgtec.com>
      Cc: Stephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      4225fc85
    • I
      lib/scatterlist: add simple page iterator · a321e91b
      Imre Deak 提交于
      Add an iterator to walk through a scatter list a page at a time starting
      at a specific page offset.  As opposed to the mapping iterator this is
      meant to be small, performing well even in simple loops like collecting
      all pages on the scatterlist into an array or setting up an iommu table
      based on the pages' DMA address.
      Signed-off-by: NImre Deak <imre.deak@intel.com>
      Cc: Maxim Levitsky <maximlevitsky@gmail.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Tested-by: NStephen Warren <swarren@wwwdotorg.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a321e91b
    • S
      MAINTAINERS: update Tegra section to capture all Tegra files · 5d96bf4d
      Stephen Warren 提交于
      The intent is to ensure that all Tegra-related patches are sent to the
      linux-tegra@ mailing list, so people can keep up-to-date on all misc
      driver changes.
      
      Doing this with a keyword is far simpler and more compact than listing
      all Tegra-related drivers, even if wildcards were used.
      
      Words such as integrate or integrator are common.  Ensure the character
      right before "tegra" isn't a-z (case-insensitive), to make sure the
      keyword doesn't match those.
      
      The only files that the keyword doesn't match are the NVEC driver.  Add
      the linux-tegra mailing list to the NVEC entry to solve this.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Cc: Joe Perches <joe@perches.com>
      Cc: Julian Andres Klode <jak@jak-linux.org>
      Cc: Marc Dietrich <marvin24@gmx.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      5d96bf4d
    • S
      get_maintainer: allow keywords to match filenames · eb90d085
      Stephen Warren 提交于
      Allow K: entries in MAINTAINERS to match directly against filenames;
      either those extracted from patch +++ or --- lines, or those specified
      on the command-line using the -f option.
      
      This potentially allows fewer lines in a MAINTAINERS entry, if all the
      relevant files are scattered throughout the whole kernel tree, yet
      contain some common keyword.  An example would be using an ARM SoC name
      as the keyword to catch all related drivers.
      
      I don't think setting exact_pattern_match_hash would be appropriate
      here; at least for intended Tegra use case, this feature is to ensure
      that all Tegra-related driver changes get Cc'd to the Tegra mailing
      list.  Setting exact_pattern_match_hash would prevent git history
      parsing for e.g.  S-o-b tags, which still seems like it would be useful.
      Hence, this flag isn't set.
      Signed-off-by: NStephen Warren <swarren@nvidia.com>
      Acked-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      eb90d085
    • O
      usermodehelper: cleanup/fix __orderly_poweroff() && argv_free() · 7ff67640
      Oleg Nesterov 提交于
      __orderly_poweroff() does argv_free() if call_usermodehelper_fns()
      returns -ENOMEM.  As Lucas pointed out, this can be wrong if -ENOMEM was
      not triggered by the failing call_usermodehelper_setup(), in this case
      both __orderly_poweroff() and argv_cleanup() can do kfree().
      
      Kill argv_cleanup() and change __orderly_poweroff() to call argv_free()
      unconditionally like do_coredump() does.  This info->cleanup() is not
      needed (and wrong) since 6c0c0d4d "fix bug in orderly_poweroff() which
      did the UMH_NO_WAIT => UMH_WAIT_EXEC change, we can rely on the fact
      that CLONE_VFORK can't return until do_execve() succeeds/fails.
      Signed-off-by: NOleg Nesterov <oleg@redhat.com>
      Reported-by: NLucas De Marchi <lucas.demarchi@profusion.mobi>
      Cc: David Howells <dhowells@redhat.com>
      Cc: James Morris <james.l.morris@oracle.com>
      Cc: hongfeng <hongfeng@marvell.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      7ff67640
    • M
      mm: use vm_unmapped_area() on frv architecture · e759a798
      Michel Lespinasse 提交于
      Update the frv arch_get_unmapped_area function to make use of
      vm_unmapped_area() instead of implementing a brute force search.
      Signed-off-by: NMichel Lespinasse <walken@google.com>
      Acked-by: NRik van Riel <riel@redhat.com>
      Acked-by: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e759a798
    • X
      ocfs2: ac->ac_allow_chain_relink=0 won't disable group relink · 309a85b6
      Xiaowei.Hu 提交于
      ocfs2_block_group_alloc_discontig() disables chain relink by setting
      ac->ac_allow_chain_relink = 0 because it grabs clusters from multiple
      cluster groups.
      
      It doesn't keep the credits for all chain relink,but
      ocfs2_claim_suballoc_bits overrides this in this call trace:
      ocfs2_block_group_claim_bits()->ocfs2_claim_clusters()->
      __ocfs2_claim_clusters()->ocfs2_claim_suballoc_bits()
      ocfs2_claim_suballoc_bits set ac->ac_allow_chain_relink = 1; then call
      ocfs2_search_chain() one time and disable it again, and then we run out
      of credits.
      
      Fix is to allow relink by default and disable it in
      ocfs2_block_group_alloc_discontig.
      
      Without this patch, End-users will run into a crash due to run out of
      credits, backtrace like this:
      
        RIP: 0010:[<ffffffffa0808b14>]  [<ffffffffa0808b14>]
        jbd2_journal_dirty_metadata+0x164/0x170 [jbd2]
        RSP: 0018:ffff8801b919b5b8  EFLAGS: 00010246
        RAX: 0000000000000000 RBX: ffff88022139ddc0 RCX: ffff880159f652d0
        RDX: ffff880178aa3000 RSI: ffff880159f652d0 RDI: ffff880087f09bf8
        RBP: ffff8801b919b5e8 R08: 0000000000000000 R09: 0000000000000000
        R10: 0000000000001e00 R11: 00000000000150b0 R12: ffff880159f652d0
        R13: ffff8801a0cae908 R14: ffff880087f09bf8 R15: ffff88018d177800
        FS:  00007fc9b0b6b6e0(0000) GS:ffff88022fd40000(0000) knlGS:0000000000000000
        CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
        CR2: 000000000040819c CR3: 0000000184017000 CR4: 00000000000006e0
        DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
        DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
        Process dd (pid: 9945, threadinfo ffff8801b919a000, task ffff880149a264c0)
        Call Trace:
          ocfs2_journal_dirty+0x2f/0x70 [ocfs2]
          ocfs2_relink_block_group+0x111/0x480 [ocfs2]
          ocfs2_search_chain+0x455/0x9a0 [ocfs2]
          ...
      Signed-off-by: NXiaowei.Hu <xiaowei.hu@oracle.com>
      Reviewed-by: NSrinivas Eeda <srinivas.eeda@oracle.com>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      309a85b6
    • J
      ocfs2: fix ocfs2_init_security_and_acl() to initialize acl correctly · 32918dd9
      Jeff Liu 提交于
      We need to re-initialize the security for a new reflinked inode with its
      parent dirs if it isn't specified to be preserved for ocfs2_reflink().
      However, the code logic is broken at ocfs2_init_security_and_acl()
      although ocfs2_init_security_get() succeed.  As a result,
      ocfs2_acl_init() does not involked and therefore the default ACL of
      parent dir was missing on the new inode.
      
      Note this was introduced by 9d8f13ba ("security: new
      security_inode_init_security API adds function callback")
      
      To reproduce:
      
          set default ACL for the parent dir(ocfs2 in this case):
          $ setfacl -m default:user:jeff:rwx ../ocfs2/
          $ getfacl ../ocfs2/
          # file: ../ocfs2/
          # owner: jeff
          # group: jeff
          user::rwx
          group::r-x
          other::r-x
          default:user::rwx
          default:user:jeff:rwx
          default:group::r-x
          default:mask::rwx
          default:other::r-x
      
          $ touch a
          $ getfacl a
          # file: a
          # owner: jeff
          # group: jeff
          user::rw-
          group::rw-
          other::r--
      
      Before patching, create reflink file b from a, the user
      default ACL entry(user:jeff:rwx)was missing:
      
          $ ./ocfs2_reflink a b
          $ getfacl b
          # file: b
          # owner: jeff
          # group: jeff
          user::rw-
          group::rw-
          other::r--
      
      In this case, the end user can also observed an error message at syslog:
      
        (ocfs2_reflink,3229,2):ocfs2_init_security_and_acl:7193 ERROR: status = 0
      
      After applying this patch, create reflink file c from a:
      
          $ ./ocfs2_reflink a c
          $ getfacl c
          # file: c
          # owner: jeff
          # group: jeff
          user::rw-
          user:jeff:rwx			#effective:rw-
          group::r-x			#effective:r--
          mask::rw-
          other::r--
      
      Test program:
      /* Usage: reflink <source> <dest> */
      #include <stdio.h>
      #include <stdint.h>
      #include <stdbool.h>
      #include <string.h>
      #include <errno.h>
      #include <sys/types.h>
      #include <sys/stat.h>
      #include <fcntl.h>
      #include <sys/ioctl.h>
      
      static int
      reflink_file(char const *src_name, char const *dst_name,
      	     bool preserve_attrs)
      {
      	int fd;
      
      #ifndef REFLINK_ATTR_NONE
      #  define REFLINK_ATTR_NONE 0
      #endif
      #ifndef REFLINK_ATTR_PRESERVE
      #  define REFLINK_ATTR_PRESERVE 1
      #endif
      #ifndef OCFS2_IOC_REFLINK
      	struct reflink_arguments {
      		uint64_t old_path;
      		uint64_t new_path;
      		uint64_t preserve;
      	};
      
      #  define OCFS2_IOC_REFLINK _IOW ('o', 4, struct reflink_arguments)
      #endif
      	struct reflink_arguments args = {
      		.old_path = (unsigned long) src_name,
      		.new_path = (unsigned long) dst_name,
      		.preserve = preserve_attrs ? REFLINK_ATTR_PRESERVE :
      					     REFLINK_ATTR_NONE,
      	};
      
      	fd = open(src_name, O_RDONLY);
      	if (fd < 0) {
      		fprintf(stderr, "Failed to open %s: %s\n",
      			src_name, strerror(errno));
      		return -1;
      	}
      
      	if (ioctl(fd, OCFS2_IOC_REFLINK, &args) < 0) {
      		fprintf(stderr, "Failed to reflink %s to %s: %s\n",
      			src_name, dst_name, strerror(errno));
      		return -1;
      	}
      }
      
      int
      main(int argc, char *argv[])
      {
      	if (argc != 3) {
      		fprintf(stdout, "Usage: %s source dest\n", argv[0]);
      		return 1;
      	}
      
      	return reflink_file(argv[1], argv[2], 0);
      }
      Signed-off-by: NJie Liu <jeff.liu@oracle.com>
      Reviewed-by: NTao Ma <boyu.mt@taobao.com>
      Cc: Mimi Zohar <zohar@linux.vnet.ibm.com>
      Cc: Joel Becker <jlbec@evilplan.org>
      Cc: Mark Fasheh <mfasheh@suse.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      32918dd9
    • N
      scripts/kernel-doc: handle struct member __aligned without numbers · 9dc30918
      Nishanth Menon 提交于
      Commit ef5da59f ("scripts/kernel-doc: handle struct member
      __aligned") permits "char something [123] __aligned(8);".
      
      However, by using \d we constraint ourselves with integers.  This is not
      always the case.  In fact, it might be better to do char something[123]
      __aligned(sizeof(u16));
      
      For example, With wireless_dev defining:
      
          u8 address[ETH_ALEN] __aligned(sizeof(u16));
      
      With \d, scripts/kernel-doc erroneously says:
      
          Warning(include/net/cfg80211.h:2618): Excess struct/union/enum/typedef member 'address' description in 'wireless_dev'
      
      This is because the regex __aligned\s*\(\d+\) fails match at \d as
      sizeof is used.
      
      So replace \d with .  to indicate "something" in kernel-doc to ignore
      __aligned(SOMETHING) in structs.  With this change, we can use integers
      OR sizeof() or macros as we please.
      Signed-off-by: NNishanth Menon <nm@ti.com>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Cc: Johannes Berg <johannes.berg@intel.com>
      Cc: Randy Dunlap <rdunlap@infradead.org>
      Cc: Michal Marek <mmarek@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9dc30918
    • M
      mm: accelerate munlock() treatment of THP pages · ff6a6da6
      Michel Lespinasse 提交于
      munlock_vma_pages_range() was always incrementing addresses by PAGE_SIZE
      at a time.  When munlocking THP pages (or the huge zero page), this
      resulted in taking the mm->page_table_lock 512 times in a row.
      
      We can do better by making use of the page_mask returned by
      follow_page_mask (for the huge zero page case), or the size of the page
      munlock_vma_page() operated on (for the true THP page case).
      Signed-off-by: NMichel Lespinasse <walken@google.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: Hugh Dickins <hughd@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ff6a6da6
    • K
      backlight: add new lp8788 backlight driver · c5a51053
      Kim, Milo 提交于
      TI LP8788 PMU supports regulators, battery charger, RTC, ADC, backlight
      dri= ver and current sinks.  This patch enables LP8788 backlight module.
      
      (Brightness mode)
      The brightness is controlled by PWM input or I2C register.
      All modes are supported in the driver.
      
      (Platform data)
      Configurable data can be defined in the platform side.
       name                  : backlight driver name. (default: "lcd-backlight")
       initial_brightness    : initial value of backlight brightness
       bl_mode               : brightness control by PWM or lp8788 register
       dim_mode              : dimming mode selection
       full_scale            : full scale current setting
       rise_time             : brightness ramp up step time
       fall_time             : brightness ramp down step time
       pwm_pol               : PWM polarity setting when bl_mode is PWM based
       period_ns             : platform specific PWM period value. unit is nano.
      
      The default values are set in case no platform data is defined.
      
      [akpm@linux-foundation.org: checkpatch fixes]
      Signed-off-by: NMilo(Woogyom) Kim <milo.kim@ti.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Cc: Thierry Reding <thierry.reding@avionic-design.de>
      Cc: "devendra.aaru" <devendra.aaru@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      c5a51053
    • J
      lib/devres.c: fix misplaced #endif · 9ed8a30f
      Jingoo Han 提交于
      A misplaced #endif causes link errors related to pcim_*() functions.
      
      This is because pcim_*() functions are related to CONFIG_PCI option,
      however these are not related to CONFIG_HAS_IOPORT option.  Therefore,
      when CONFIG_PCI is enabled and CONFIG_HAS_IOPORT is not enabled, it makes
      link errors related to pcim_*() functions as below:
      
      drivers/ata/libata-sff.c:3233: undefined reference to `pcim_iomap_regions'
      drivers/ata/libata-sff.c:3238: undefined reference to `pcim_iomap_table'
      drivers/built-in.o: In function `ata_pci_sff_init_host':
      drivers/ata/libata-sff.c:2318: undefined reference to `pcim_iomap_regions'
      drivers/ata/libata-sff.c:2329: undefined reference to `pcim_iomap_table
      Signed-off-by: NJingoo Han <jg1.han@samsung.com>
      Cc: Greg KH <greg@kroah.com>
      Cc: Tejun Heo <tj@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      9ed8a30f
    • M
      mm: use vm_unmapped_area() on parisc architecture · a0031197
      Michel Lespinasse 提交于
      Update the parisc arch_get_unmapped_area function to make use of
      vm_unmapped_area() instead of implementing a brute force search.
      
      [akpm@linux-foundation.org: remove now-unused DCACHE_ALIGN(), per James]
      Signed-off-by: NMichel Lespinasse <walken@google.com>
      Acked-by: NRik van Riel <riel@redhat.com>
      Cc: "James E.J. Bottomley" <jejb@parisc-linux.org>
      Acked-by: NHelge Deller <deller@gmx.de>
      Tested-by: NHelge Deller <deller@gmx.de>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a0031197
    • J
      drivers/video/backlight/ams369fg06.c: make power_on() call optional · f7a3c997
      Jingoo Han 提交于
      This patch makes power_on() call optional.  The voltage source can be
      provided to some boards using ams369fg06 panel, thus in this case, power
      on/off sequence is not necessary.
      Signed-off-by: NJingoo Han <jg1.han@samsung.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      f7a3c997
    • J
      checkpatch: improve CamelCase test for Page · be987d9f
      Joe Perches 提交于
      Add the ClearPage/SetPage/TestClearPage/TestSetPage variants to the not
      reported Page CamelCase variables.
      Signed-off-by: NJoe Perches <joe@perches.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      be987d9f
    • L
      sysrq: don't depend on weak undefined arrays to have an address that compares as NULL · adf96e6f
      Linus Torvalds 提交于
      When taking an address of an extern array, gcc quite naturally should be
      able to say "an address of an object can never be NULL" and just
      optimize away the test entirely.
      
      However, the new alternate sysrq reset code (commit 154b7a48:
      "Input: sysrq - allow specifying alternate reset sequence") did exactly
      that, and declared platform_sysrq_reset_seq[] as a weak array, and
      expecting that testing the address of the array would show whether it
      actually got linked against something or not.
      
      And that doesn't work with all gcc versions.  Clearly it works with
      *some* versions of gcc, and maybe it's even supposed to work, but it
      really is a very fragile concept.
      
      So instead of testing the address of the weak variable, just create a
      weak instance of that array that is empty.  If some platform then has a
      real platform_sysrq_reset_seq[] that overrides our weak one, the linker
      will switch to that one, and it all works without any run-time
      conditionals at all.
      Reported-by: NDave Airlie <airlied@gmail.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Russell King <rmk+kernel@arm.linux.org.uk>
      Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
      Acked-by: NMathieu Poirier <mathieu.poirier@linaro.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      adf96e6f
    • L
      mm: do not grow the stack vma just because of an overrun on preceding vma · 09884964
      Linus Torvalds 提交于
      The stack vma is designed to grow automatically (marked with VM_GROWSUP
      or VM_GROWSDOWN depending on architecture) when an access is made beyond
      the existing boundary.  However, particularly if you have not limited
      your stack at all ("ulimit -s unlimited"), this can cause the stack to
      grow even if the access was really just one past *another* segment.
      
      And that's wrong, especially since we first grow the segment, but then
      immediately later enforce the stack guard page on the last page of the
      segment.  So _despite_ first growing the stack segment as a result of
      the access, the kernel will then make the access cause a SIGSEGV anyway!
      
      So do the same logic as the guard page check does, and consider an
      access to within one page of the next segment to be a bad access, rather
      than growing the stack to abut the next segment.
      Reported-and-tested-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      09884964
  2. 27 2月, 2013 15 次提交
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · d895cb1a
      Linus Torvalds 提交于
      Pull vfs pile (part one) from Al Viro:
       "Assorted stuff - cleaning namei.c up a bit, fixing ->d_name/->d_parent
        locking violations, etc.
      
        The most visible changes here are death of FS_REVAL_DOT (replaced with
        "has ->d_weak_revalidate()") and a new helper getting from struct file
        to inode.  Some bits of preparation to xattr method interface changes.
      
        Misc patches by various people sent this cycle *and* ocfs2 fixes from
        several cycles ago that should've been upstream right then.
      
        PS: the next vfs pile will be xattr stuff."
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)
        saner proc_get_inode() calling conventions
        proc: avoid extra pde_put() in proc_fill_super()
        fs: change return values from -EACCES to -EPERM
        fs/exec.c: make bprm_mm_init() static
        ocfs2/dlm: use GFP_ATOMIC inside a spin_lock
        ocfs2: fix possible use-after-free with AIO
        ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path
        get_empty_filp()/alloc_file() leave both ->f_pos and ->f_version zero
        target: writev() on single-element vector is pointless
        export kernel_write(), convert open-coded instances
        fs: encode_fh: return FILEID_INVALID if invalid fid_type
        kill f_vfsmnt
        vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op
        nfsd: handle vfs_getattr errors in acl protocol
        switch vfs_getattr() to struct path
        default SET_PERSONALITY() in linux/elf.h
        ceph: prepopulate inodes only when request is aborted
        d_hash_and_lookup(): export, switch open-coded instances
        9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()
        9p: split dropping the acls from v9fs_set_create_acl()
        ...
      d895cb1a
    • L
      Merge tag 'xtensa-next-20130225' of git://github.com/czankel/xtensa-linux · 96263573
      Linus Torvalds 提交于
      Pull xtensa update from Chris Zankel:
       "Added features:
         - add support for thread local storage (TLS)
      
         - add accept4 and finit_module syscalls
      
         - support medium-priority interrupts
      
         - add support for dc232c processor variant
      
         - support file-base simulated disk for ISS simulator
      
        Bug fixes:
      
         - fix return values returned by the str[n]cmp functions
      
         - avoid mmap cache aliasing
      
         - fix handling of 'windowed registers' in ptrace"
      
      * tag 'xtensa-next-20130225' of git://github.com/czankel/xtensa-linux:
        xtensa: add accept4 syscall
        xtensa: add support for TLS
        xtensa: add missing include asm/uaccess.h to checksum.h
        xtensa: do not enable GENERIC_GPIO by default
        xtensa: complete ptrace handling of register windows
        xtensa: add support for oprofile
        xtensa: move spill_registers to traps.h
        xtensa: ISS: add host file-based simulated disk
        xtensa: fix str[n]cmp return value
        xtensa: avoid mmap cache aliasing
        xtensa: add finit_module syscall
        xtensa: pull signal definitions from signal-defs.h
        xtensa: fix ipc_parse_version selection
        xtensa: dispatch medium-priority interrupts
        xtensa: Add config files for Diamond 233L - Rev C processor variant
        xtensa: use new common dtc rule
        xtensa: rename prom_update_property to of_update_property
      96263573
    • L
      Merge branch 'next' of git://git.monstr.eu/linux-2.6-microblaze · 2b37e9a2
      Linus Torvalds 提交于
      Pull microblaze update from Michal Simek:
       "Microblaze changes.
      
        After my discussion with Arnd I have also added there asm-generic io
        patch which is Acked by him and Geert."
      
      * 'next' of git://git.monstr.eu/linux-2.6-microblaze:
        asm-generic: io: Fix ioread16/32be and iowrite16/32be
        microblaze: Do not use module.h in files which are not modules
        microblaze: Fix coding style issues
        microblaze: Add missing return from debugfs_tlb
        microblaze: Makefile clean
        microblaze: Add .gitignore entries for auto-generated files
        microblaze: Fix strncpy_from_user macro
      2b37e9a2
    • L
      Merge branch 'for-upstream' of git://openrisc.net/jonas/linux · a9a07d40
      Linus Torvalds 提交于
      Pull OpenRISC updates from Jonas Bonn:
       "An equal number of bug fixes and trivial cleanups; no new features.
      
         - Two patches to fix errors thrown by the updated toolchain.
      
         - Three other bug fixes.
      
         - Four trivial cleanups."
      
      * 'for-upstream' of git://openrisc.net/jonas/linux:
        openrisc: add missing header inclusion
        openrisc: really pass correct arg to schedule_tail
        Add bitops include needed for ext2 filesystem
        openrisc: update DTLB-miss handler last
        openrisc: fix up vmalloc page table loading
        openrisc idle: delete pm_idle
        openrisc: remove CONFIG_SYMBOL_PREFIX
        openrisc: avoid using function parameter regs in reset vector
        openrisc: remove unused current_regs
      a9a07d40
    • L
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 2003cd90
      Linus Torvalds 提交于
      Pull x86 fixes from Ingo Molnar.
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mm/pageattr: Prevent PSE and GLOABL leftovers to confuse pmd/pte_present and pmd_huge
        Revert "x86, mm: Make spurious_fault check explicitly check explicitly check the PRESENT bit"
        x86/mm/numa: Don't check if node is NUMA_NO_NODE
        x86, efi: Make "noefi" really disable EFI runtime serivces
        x86/apic: Fix parsing of the 'lapic' cmdline option
      2003cd90
    • L
      Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 24e55910
      Linus Torvalds 提交于
      Pull timer fixes from Ingo Molnar.
      
      * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        clocksource : Nomadik-mtu : fix missing irq initialization
        posix-timer: Don't call idr_find() with out-of-range ID
      24e55910
    • L
      Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · dcad0fce
      Linus Torvalds 提交于
      Pull scheduler fixes from Ingo Molnar.
      
      * 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        cputime: Use local_clock() for full dynticks cputime accounting
        cputime: Constify timeval_to_cputime(timeval) argument
        sched: Move RR_TIMESLICE from sysctl.h to rt.h
        sched: Fix /proc/sched_debug failure on very very large systems
        sched: Fix /proc/sched_stat failure on very very large systems
        sched/core: Remove the obsolete and unused nr_uninterruptible() function
      dcad0fce
    • L
      Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f8ef15d6
      Linus Torvalds 提交于
      Pull perf fixes from Ingo Molnar.
      
      * 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        perf/x86: Add Intel IvyBridge event scheduling constraints
        ftrace: Call ftrace cleanup module notifier after all other notifiers
        tracing/syscalls: Allow archs to ignore tracing compat syscalls
      f8ef15d6
    • L
      Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4 · 6515925b
      Linus Torvalds 提交于
      Pull ext4 updates from Theodore Ts'o:
       "The one new feature added in this patch series is the ability to use
        the "punch hole" functionality for inodes that are not using extent
        maps.
      
        In the bug fix category, we fixed some races in the AIO and fstrim
        code, and some potential NULL pointer dereferences and memory leaks in
        error handling code paths.
      
        In the optimization category, we fixed a performance regression in the
        jbd2 layer introduced by commit d9b01934 ("jbd: fix fsync() tid
        wraparound bug", introduced in v3.0) which shows up in the AIM7
        benchmark.  We also further optimized jbd2 by minimize the amount of
        time that transaction handles are held active.
      
        This patch series also features some additional enhancement of the
        extent status tree, which is now used to cache extent information in a
        more efficient/compact form than what we use on-disk."
      
      * tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4: (65 commits)
        ext4: fix free clusters calculation in bigalloc filesystem
        ext4: no need to remove extent if len is 0 in ext4_es_remove_extent()
        ext4: fix xattr block allocation/release with bigalloc
        ext4: reclaim extents from extent status tree
        ext4: adjust some functions for reclaiming extents from extent status tree
        ext4: remove single extent cache
        ext4: lookup block mapping in extent status tree
        ext4: track all extent status in extent status tree
        ext4: let ext4_ext_map_blocks return EXT4_MAP_UNWRITTEN flag
        ext4: rename and improbe ext4_es_find_extent()
        ext4: add physical block and status member into extent status tree
        ext4: refine extent status tree
        ext4: use ERR_PTR() abstraction for ext4_append()
        ext4: refactor code to read directory blocks into ext4_read_dirblock()
        ext4: add debugging context for warning in ext4_da_update_reserve_space()
        ext4: use KERN_WARNING for warning messages
        jbd2: use module parameters instead of debugfs for jbd_debug
        ext4: use module parameters instead of debugfs for mballoc_debug
        ext4: start handle at the last possible moment when creating inodes
        ext4: fix the number of credits needed for acl ops with inline data
        ...
      6515925b
    • L
      Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs · bbbd27e6
      Linus Torvalds 提交于
      Pull ext2, ext3, udf updates from Jan Kara:
       "Several UDF fixes, a support for UDF extent cache, and couple of ext2
        and ext3 cleanups and minor fixes"
      
      * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs:
        Ext2: remove the static function release_blocks to optimize the kernel
        Ext2: mark inode dirty after the function dquot_free_block_nodirty is called
        Ext2: remove the overhead check about sb in the function ext2_new_blocks
        udf: Remove unused s_extLength from udf_bitmap
        udf: Make s_block_bitmap standard array
        udf: Fix bitmap overflow on large filesystems with small block size
        udf: add extent cache support in case of file reading
        udf: Write LVID to disk after opening / closing
        Ext3: return ENOMEM rather than EIO if sb_getblk fails
        Ext2: return ENOMEM rather than EIO if sb_getblk fails
        Ext3: use unlikely to improve the efficiency of the kernel
        Ext2: use unlikely to improve the efficiency of the kernel
        Ext3: add necessary check in case IO error happens
        Ext2: free memory allocated and forget buffer head when io error happens
        ext3: Fix memory leak when quota options are specified multiple times
        ext3, ext4, ocfs2: remove unused macro NAMEI_RA_INDEX
      bbbd27e6
    • L
      Merge tag 'upstream-3.9-rc1' of git://git.infradead.org/linux-ubifs · a6590b9f
      Linus Torvalds 提交于
      Pull ubifs updates from Artem Bityutskiy:
       "It's been quite silent and we have only a couple of bug-fixes for the
        orphans handling code plus one cosmetic change."
      
      * tag 'upstream-3.9-rc1' of git://git.infradead.org/linux-ubifs:
        UBIFS: fix double free of ubifs_orphan objects
        UBIFS: fix use of freed ubifs_orphan objects
        UBIFS: rename random32() to prandom_u32()
      a6590b9f
    • L
      Merge tag 'f2fs-for-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs · 1085db4a
      Linus Torvalds 提交于
      Pull f2fs update from Jaegeuk Kim:
       "[Major bug fixes]
         o Store device file information correctly
         o Fix -EIO handling with respect to power-off-recovery
         o Allocate blocks with global locks
         o Fix wrong calculation of the SSR cost
      
        [Cleanups]
         o Get rid of fake on-stack dentries
      
        [Enhancement]
         o Support (un)freeze_fs
         o Enhance the f2fs_gc flow
         o Support 32-bit binary execution on 64-bit kernel"
      
      * tag 'f2fs-for-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs: (29 commits)
        f2fs: avoid build warning
        f2fs: add compat_ioctl to provide backward compatability
        f2fs: fix calculation of max. gc cost in the SSR case
        f2fs: clarify and enhance the f2fs_gc flow
        f2fs: optimize the return condition for has_not_enough_free_secs
        f2fs: make an accessor to get sections for particular block type
        f2fs: mark gc_thread as NULL when thread creation is failed
        f2fs: name gc task as per the block device
        f2fs: remove unnecessary gc option check and balance_fs
        f2fs: remove repeated F2FS_SET_SB_DIRT call
        f2fs: when check superblock failed, try to check another superblock
        f2fs: use F2FS_BLKSIZE to judge bloksize and page_cache_size
        f2fs: add device name in debugfs
        f2fs: stop repeated checking if cp is needed
        f2fs: avoid balanc_fs during evict_inode
        f2fs: remove the use of page_cache_release
        f2fs: fix typo mistake for data_version description
        f2fs: reorganize code for ra_node_page
        f2fs: avoid redundant call to has_not_enough_free_secs in f2fs_gc
        f2fs: add un/freeze_fs into super_operations
        ...
      1085db4a
    • L
      Merge tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux · 3c834b6f
      Linus Torvalds 提交于
      Pull virtio updates from Rusty Russell:
       "All trivial, thanks to the stuff which didn't quite make it time"
      
      * tag 'virtio-next-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:
        virtio_console: Initialize guest_connected=true for rproc_serial
        virtio: use module_virtio_driver.
        virtio: Add module driver macro for virtio drivers.
        virtio_console: Use virtio device index to generate port name
        virtio: make pci_device_id const
        virtio: make config_ops const
        virtio-mmio: fix wrong comment about register offset
        virtio_console: Let unconnected rproc device receive data.
      3c834b6f
    • L
      Merge tag 'vfio-v3.9-rc1' of git://github.com/awilliam/linux-vfio · 515d01f7
      Linus Torvalds 提交于
      Pull VFIO updates from Alex Williamson:
       - Fixes PCIe v1 extended capability support
      
       - Cleans up read/write access functions
      
       - Fix Removal test to properly wait until devices are unused
      
       - Enable pcieport driver usage for non-accessible devices w/in groups
      
       - Extensions for PCI VGA support
      
      * tag 'vfio-v3.9-rc1' of git://github.com/awilliam/linux-vfio:
        drivers/vfio: remove depends on CONFIG_EXPERIMENTAL
        vfio-pci: Add support for VGA region access
        vfio-pci: Manage user power state transitions
        vfio: whitelist pcieport
        vfio: Protect vfio_dev_present against device_del
        vfio-pci: Cleanup BAR access
        vfio-pci: Cleanup read/write functions
        vfio-pci: Enable PCIe extended capabilities on v1
      515d01f7
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 1cef9350
      Linus Torvalds 提交于
      Pull networking fixes from David Miller:
      
       1) ping_err() ICMP error handler looks at wrong ICMP header, from Li
          Wei.
      
       2) TCP socket hash function on ipv6 is too weak, from Eric Dumazet.
      
       3) netif_set_xps_queue() forgets to drop mutex on errors, fix from
          Alexander Duyck.
      
       4) sum_frag_mem_limit() can deadlock due to lack of BH disabling, fix
          from Eric Dumazet.
      
       5) TCP SYN data is miscalculated in tcp_send_syn_data(), because the
          amount of TCP option space was not taken into account properly in
          this code path.  Fix from yuchung Cheng.
      
       6) MLX4 driver allocates device queues with the wrong size, from Kleber
          Sacilotto.
      
       7) sock_diag can access past the end of the sock_diag_handlers[] array,
          from Mathias Krause.
      
       8) vlan_set_encap_proto() makes incorrect assumptions about where
          skb->data points, rework the logic so that it works regardless of
          where skb->data happens to be.  From Jesse Gross.
      
       9) Fix gianfar build failure with NET_POLL enabled, from Paul
          Gortmaker.
      
      10) Fix Ipv4 ID setting and checksum calculations in GRE driver, from
         Pravin B Shelar.
      
      11) bgmac driver does:
      
              int i;
      
              for (i = 0; ...; ...) {
                      ...
                      for (i = 0; ...; ...) {
      
          effectively corrupting the outer loop index, use a seperate
          variable for the inner loops.  From Rafał Miłecki.
      
      12) Fix suspend bugs in smsc95xx driver, from Ming Lei.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (35 commits)
        usbnet: smsc95xx: rename FEATURE_AUTOSUSPEND
        usbnet: smsc95xx: fix broken runtime suspend
        usbnet: smsc95xx: fix suspend failure
        bgmac: fix indexing of 2nd level loops
        b43: Fix lockdep splat on module unload
        Revert "ip_gre: propogate target device GSO capability to the tunnel device"
        IP_GRE: Fix GRE_CSUM case.
        VXLAN: Use tunnel_ip_select_ident() for tunnel IP-Identification.
        IP_GRE: Fix IP-Identification.
        net/pasemi: Fix missing coding style
        vmxnet3: fix ethtool ring buffer size setting
        vmxnet3: make local function static
        bnx2x: remove dead code and make local funcs static
        gianfar: fix compile fail for NET_POLL=y due to struct packing
        vlan: adjust vlan_set_encap_proto() for its callers
        sock_diag: Simplify sock_diag_handlers[] handling in __sock_diag_rcv_msg
        sock_diag: Fix out-of-bounds access to sock_diag_handlers[]
        vxlan: remove depends on CONFIG_EXPERIMENTAL
        mlx4_en: fix allocation of CPU affinity reverse-map
        mlx4_en: fix allocation of device tx_cq
        ...
      1cef9350