1. 08 Aug, 2014 4 commits
    • Johannes Weiner's avatar
      mm: memcontrol: rewrite uncharge API · 0a31bc97
      Johannes Weiner authored
      The memcg uncharging code that is involved towards the end of a page's
      lifetime - truncation, reclaim, swapout, migration - is impressively
      complicated and fragile.
      
      Because anonymous and file pages were always charged before they had their
      page->mapping established, uncharges had to happen when the page type
      could still be known from the context; as in unmap for anonymous, page
      cache removal for file and shmem pages, and swap cache truncation for swap
      pages.  However, these operations happen well before the page is actually
      freed, and so a lot of synchronization is necessary:
      
      - Charging, uncharging, page migration, and charge migration all need
        to take a per-page bit spinlock as they could race with uncharging.
      
      - Swap cache truncation happens during both swap-in and swap-out, and
        possibly repeatedly before the page is actually freed.  This means
        that the memcg swapout code is called from many contexts that make
        no sense and it has to figure out the direction from page state to
        make sure memory and memory+swap are always correctly charged.
      
      - On page migration, the old page might be unmapped but then reused,
        so memcg code has to prevent untimely uncharging in that case.
        Because this code - which should be a simple charge transfer - is so
        special-cased, it is not reusable for replace_page_cache().
      
      But now that charged pages always have a page->mapping, introduce
      mem_cgroup_uncharge(), which is called after the final put_page(), when we
      know for sure that nobody is looking at the page anymore.
      
      For page migration, introduce mem_cgroup_migrate(), which is called after
      the migration is successful and the new page is fully rmapped.  Because
      the old page is no longer uncharged after migration, prevent double
      charges by decoupling the page's memcg association (PCG_USED and
      pc->mem_cgroup) from the page holding an actual charge.  The new bits
      PCG_MEM and PCG_MEMSW represent the respective charges and are transferred
      to the new page during migration.
      
      mem_cgroup_migrate() is suitable for replace_page_cache() as well,
      which gets rid of mem_cgroup_replace_page_cache().  However, care
      needs to be taken because both the source and the target page can
      already be charged and on the LRU when fuse is splicing: grab the page
      lock on the charge moving side to prevent changing pc->mem_cgroup of a
      page under migration.  Also, the lruvecs of both pages change as we
      uncharge the old and charge the new during migration, and putback may
      race with us, so grab the lru lock and isolate the pages iff on LRU to
      prevent races and ensure the pages are on the right lruvec afterward.
      
      Swap accounting is massively simplified: because the page is no longer
      uncharged as early as swap cache deletion, a new mem_cgroup_swapout() can
      transfer the page's memory+swap charge (PCG_MEMSW) to the swap entry
      before the final put_page() in page reclaim.
      
      Finally, page_cgroup changes are now protected by whatever protection the
      page itself offers: anonymous pages are charged under the page table lock,
      whereas page cache insertions, swapin, and migration hold the page lock.
      Uncharging happens under full exclusion with no outstanding references.
      Charging and uncharging also ensure that the page is off-LRU, which
      serializes against charge migration.  Remove the very costly page_cgroup
      lock and set pc->flags non-atomically.
      
      [mhocko@suse.cz: mem_cgroup_charge_statistics needs preempt_disable]
      [vdavydov@parallels.com: fix flags definition]
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Vladimir Davydov <vdavydov@parallels.com>
      Tested-by: default avatarJet Chen <jet.chen@intel.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Tested-by: default avatarFelipe Balbi <balbi@ti.com>
      Signed-off-by: default avatarVladimir Davydov <vdavydov@parallels.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0a31bc97
    • Johannes Weiner's avatar
      mm: memcontrol: rewrite charge API · 00501b53
      Johannes Weiner authored
      These patches rework memcg charge lifetime to integrate more naturally
      with the lifetime of user pages.  This drastically simplifies the code and
      reduces charging and uncharging overhead.  The most expensive part of
      charging and uncharging is the page_cgroup bit spinlock, which is removed
      entirely after this series.
      
      Here are the top-10 profile entries of a stress test that reads a 128G
      sparse file on a freshly booted box, without even a dedicated cgroup (i.e.
       executing in the root memcg).  Before:
      
          15.36%              cat  [kernel.kallsyms]   [k] copy_user_generic_string
          13.31%              cat  [kernel.kallsyms]   [k] memset
          11.48%              cat  [kernel.kallsyms]   [k] do_mpage_readpage
           4.23%              cat  [kernel.kallsyms]   [k] get_page_from_freelist
           2.38%              cat  [kernel.kallsyms]   [k] put_page
           2.32%              cat  [kernel.kallsyms]   [k] __mem_cgroup_commit_charge
           2.18%          kswapd0  [kernel.kallsyms]   [k] __mem_cgroup_uncharge_common
           1.92%          kswapd0  [kernel.kallsyms]   [k] shrink_page_list
           1.86%              cat  [kernel.kallsyms]   [k] __radix_tree_lookup
           1.62%              cat  [kernel.kallsyms]   [k] __pagevec_lru_add_fn
      
      After:
      
          15.67%           cat  [kernel.kallsyms]   [k] copy_user_generic_string
          13.48%           cat  [kernel.kallsyms]   [k] memset
          11.42%           cat  [kernel.kallsyms]   [k] do_mpage_readpage
           3.98%           cat  [kernel.kallsyms]   [k] get_page_from_freelist
           2.46%           cat  [kernel.kallsyms]   [k] put_page
           2.13%       kswapd0  [kernel.kallsyms]   [k] shrink_page_list
           1.88%           cat  [kernel.kallsyms]   [k] __radix_tree_lookup
           1.67%           cat  [kernel.kallsyms]   [k] __pagevec_lru_add_fn
           1.39%       kswapd0  [kernel.kallsyms]   [k] free_pcppages_bulk
           1.30%           cat  [kernel.kallsyms]   [k] kfree
      
      As you can see, the memcg footprint has shrunk quite a bit.
      
         text    data     bss     dec     hex filename
        37970    9892     400   48262    bc86 mm/memcontrol.o.old
        35239    9892     400   45531    b1db mm/memcontrol.o
      
      This patch (of 4):
      
      The memcg charge API charges pages before they are rmapped - i.e.  have an
      actual "type" - and so every callsite needs its own set of charge and
      uncharge functions to know what type is being operated on.  Worse,
      uncharge has to happen from a context that is still type-specific, rather
      than at the end of the page's lifetime with exclusive access, and so
      requires a lot of synchronization.
      
      Rewrite the charge API to provide a generic set of try_charge(),
      commit_charge() and cancel_charge() transaction operations, much like
      what's currently done for swap-in:
      
        mem_cgroup_try_charge() attempts to reserve a charge, reclaiming
        pages from the memcg if necessary.
      
        mem_cgroup_commit_charge() commits the page to the charge once it
        has a valid page->mapping and PageAnon() reliably tells the type.
      
        mem_cgroup_cancel_charge() aborts the transaction.
      
      This reduces the charge API and enables subsequent patches to
      drastically simplify uncharging.
      
      As pages need to be committed after rmap is established but before they
      are added to the LRU, page_add_new_anon_rmap() must stop doing LRU
      additions again.  Revive lru_cache_add_active_or_unevictable().
      
      [hughd@google.com: fix shmem_unuse]
      [hughd@google.com: Add comments on the private use of -EAGAIN]
      Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Cc: Tejun Heo <tj@kernel.org>
      Cc: Vladimir Davydov <vdavydov@parallels.com>
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      00501b53
    • Oleg Nesterov's avatar
      vm_is_stack: use for_each_thread() rather then buggy while_each_thread() · 4449a51a
      Oleg Nesterov authored
      Aleksei hit the soft lockup during reading /proc/PID/smaps.  David
      investigated the problem and suggested the right fix.
      
      while_each_thread() is racy and should die, this patch updates
      vm_is_stack().
      Signed-off-by: default avatarOleg Nesterov <oleg@redhat.com>
      Reported-by: default avatarAleksei Besogonov <alex.besogonov@gmail.com>
      Tested-by: default avatarAleksei Besogonov <alex.besogonov@gmail.com>
      Suggested-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4449a51a
    • Joonsoo Kim's avatar
      Revert "slab: remove BAD_ALIEN_MAGIC" · edcad250
      Joonsoo Kim authored
      This reverts commit a6406168 ("slab: remove BAD_ALIEN_MAGIC").
      
      commit a6406168 ("slab: remove BAD_ALIEN_MAGIC") assumes that the
      system with !CONFIG_NUMA has only one memory node.  But, it turns out to
      be false by the report from Geert.  His system, m68k, has many memory
      nodes and is configured in !CONFIG_NUMA.  So it couldn't boot with above
      change.
      
      Here goes his failure report.
      
        With latest mainline, I'm getting a crash during bootup on m68k/ARAnyM:
      
        enable_cpucache failed for radix_tree_node, error 12.
        kernel BUG at /scratch/geert/linux/linux-m68k/mm/slab.c:1522!
        *** TRAP #7 ***   FORMAT=0
        Current process id is 0
        BAD KERNEL TRAP: 00000000
        Modules linked in:
        PC: [<0039c92c>] kmem_cache_init_late+0x70/0x8c
        SR: 2200  SP: 00345f90  a2: 0034c2e8
        d0: 0000003d    d1: 00000000    d2: 00000000    d3: 003ac942
        d4: 00000000    d5: 00000000    a0: 0034f686    a1: 0034f682
        Process swapper (pid: 0, task=0034c2e8)
        Frame format=0
        Stack from 00345fc4:
                002f69ef 002ff7e5 000005f2 000360fa 0017d806 003921d4 00000000
                00000000 00000000 00000000 00000000 00000000 003ac942 00000000
                003912d6
        Call Trace: [<000360fa>] parse_args+0x0/0x2ca
         [<0017d806>] strlen+0x0/0x1a
         [<003921d4>] start_kernel+0x23c/0x428
         [<003912d6>] _sinittext+0x2d6/0x95e
      
        Code: f7e5 4879 002f 69ef 61ff ffca 462a 4e47 <4879> 0035 4b1c 61ff
        fff0 0cc4 7005 23c0 0037 fd20 588f 265f 285f 4e75 48e7 301c
        Disabling lock debugging due to kernel taint
        Kernel panic - not syncing: Attempted to kill the idle task!
      
      Although there is a alternative way to fix this issue such as disabling
      use of alien cache on !CONFIG_NUMA, but, reverting issued commit is better
      to me in this time.
      Signed-off-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
      Reported-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Vladimir Davydov <vdavydov@parallels.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      edcad250
  2. 07 Aug, 2014 36 commits
    • Linus Torvalds's avatar
      Merge tag 'microblaze-3.17-rc1' of git://git.monstr.eu/linux-2.6-microblaze · 7f0d32e0
      Linus Torvalds authored
      Pull microblaze updates from Michal Simek:
       - add new syscall and fix comment
       - fix udelay implementation
       - fix libgcc for modules
      
      * tag 'microblaze-3.17-rc1' of git://git.monstr.eu/linux-2.6-microblaze:
        microblaze: Change libgcc-style functions from lib-y to obj-y
        microblaze: Wire-up renameat2 syscall
        microblaze: Add syscall number comment
        microblaze: delay.h fix udelay and ndelay for 8 bit args
      7f0d32e0
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32 · 8b076738
      Linus Torvalds authored
      Pull avr32 fix from Hans-Christian Egtvedt.
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/egtvedt/linux-avr32:
        avr32: fix error return code
      8b076738
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · f536b3ca
      Linus Torvalds authored
      Pull powerpc updates from Ben Herrenschmidt:
       "This is the powerpc new goodies for 3.17.  The short story:
      
        The biggest bit is Michael removing all of pre-POWER4 processor
        support from the 64-bit kernel.  POWER3 and rs64.  This gets rid of a
        ton of old cruft that has been bitrotting in a long while.  It was
        broken for quite a few versions already and nobody noticed.  Nobody
        uses those machines anymore.  While at it, he cleaned up a bunch of
        old dusty cabinets, getting rid of a skeletton or two.
      
        Then, we have some base VFIO support for KVM, which allows assigning
        of PCI devices to KVM guests, support for large 64-bit BARs on
        "powernv" platforms, support for HMI (Hardware Management Interrupts)
        on those same platforms, some sparse-vmemmap improvements (for memory
        hotplug),
      
        There is the usual batch of Freescale embedded updates (summary in the
        merge commit) and fixes here or there, I think that's it for the
        highlights"
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (102 commits)
        powerpc/eeh: Export eeh_iommu_group_to_pe()
        powerpc/eeh: Add missing #ifdef CONFIG_IOMMU_API
        powerpc: Reduce scariness of interrupt frames in stack traces
        powerpc: start loop at section start of start in vmemmap_populated()
        powerpc: implement vmemmap_free()
        powerpc: implement vmemmap_remove_mapping() for BOOK3S
        powerpc: implement vmemmap_list_free()
        powerpc: Fail remap_4k_pfn() if PFN doesn't fit inside PTE
        powerpc/book3s: Fix endianess issue for HMI handling on napping cpus.
        powerpc/book3s: handle HMIs for cpus in nap mode.
        powerpc/powernv: Invoke opal call to handle hmi.
        powerpc/book3s: Add basic infrastructure to handle HMI in Linux.
        powerpc/iommu: Fix comments with it_page_shift
        powerpc/powernv: Handle compound PE in config accessors
        powerpc/powernv: Handle compound PE for EEH
        powerpc/powernv: Handle compound PE
        powerpc/powernv: Split ioda_eeh_get_state()
        powerpc/powernv: Allow to freeze PE
        powerpc/powernv: Enable M64 aperatus for PHB3
        powerpc/eeh: Aux PE data for error log
        ...
      f536b3ca
    • Linus Torvalds's avatar
      Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus · e6698305
      Linus Torvalds authored
      Pull MIPS updates from Ralf Baechle:
       "This is the main pull request for 3.17.  It contains:
      
         - misc Cavium Octeon, BCM47xx, BCM63xx and Alchemy  updates
         - MIPS ptrace updates and cleanups
         - various fixes that will also go to -stable
         - a number of cleanups and small non-critical fixes.
         - NUMA support for the Loongson 3.
         - more support for MSA
         - support for MAAR
         - various FP enhancements and fixes"
      
      * 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus: (139 commits)
        MIPS: jz4740: remove unnecessary null test before debugfs_remove
        MIPS: Octeon: remove unnecessary null test before debugfs_remove_recursive
        MIPS: ZBOOT: implement stack protector in compressed boot phase
        MIPS: mipsreg: remove duplicate MIPS_CONF4_FTLBSETS_SHIFT
        MIPS: Bonito64: remove a duplicate define
        MIPS: Malta: initialise MAARs
        MIPS: Initialise MAARs
        MIPS: detect presence of MAARs
        MIPS: define MAAR register accessors & bits
        MIPS: mark MSA experimental
        MIPS: Don't build MSA support unless it can be used
        MIPS: consistently clear MSA flags when starting & copying threads
        MIPS: 16 byte align MSA vector context
        MIPS: disable preemption whilst initialising MSA
        MIPS: ensure MSA gets disabled during boot
        MIPS: fix read_msa_* & write_msa_* functions on non-MSA toolchains
        MIPS: fix MSA context for tasks which don't use FP first
        MIPS: init upper 64b of vector registers when MSA is first used
        MIPS: save/disable MSA in lose_fpu
        MIPS: preserve scalar FP CSR when switching vector context
        ...
      e6698305
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux · ebb067d2
      Linus Torvalds authored
      Pull s390 updates from Martin Schwidefsky:
       "Mostly cleanups and bug-fixes, with two exceptions.
      
        The first is lazy flushing of I/O-TLBs for PCI to improve performance,
        the second is software dirty bits in the pmd for the madvise-free
        implementation"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: (24 commits)
        s390/locking: Reenable optimistic spinning
        s390/mm: implement dirty bits for large segment table entries
        KVM: s390/mm: Fix page table locking vs. split pmd lock
        s390/dasd: fix camel case
        s390/3215: fix hanging console issue
        s390/irq: improve displayed interrupt order in /proc/interrupts
        s390/seccomp: fix error return for filtered system calls
        s390/pci: introduce lazy IOTLB flushing for DMA unmap
        dasd: fix error recovery for alias devices during format
        dasd: fix list_del corruption during format
        dasd: fix unresponsive device during format
        dasd: use aliases for formatted devices during format
        s390/pci: fix kmsg component
        s390/kdump: Return NOTIFY_OK for all actions other than MEM_GOING_OFFLINE
        s390/watchdog: Fix module name in Kconfig help text
        s390/dasd: replace seq_printf by seq_puts
        s390/dasd: replace pr_warning by pr_warn
        s390/dasd: Move EXPORT_SYMBOL after function/variable
        s390/dasd: remove unnecessary null test before debugfs_remove
        s390/zfcp: use qdio buffer helpers
        ...
      ebb067d2
    • Julia Lawall's avatar
      avr32: fix error return code · 686913aa
      Julia Lawall authored
      Convert a zero return value on error to a negative one, as returned
      elsewhere in the function.
      
      A simplified version of the semantic match that finds this problem is as
      follows: (http://coccinelle.lip6.fr/)
      
      // <smpl>
      @@
      identifier ret; expression e1,e2;
      @@
      (
      if (\(ret < 0\|ret != 0\))
       { ... return ret; }
      |
      ret = 0
      )
      ... when != ret = e1
          when != &ret
      *if(...)
      {
        ... when != ret = e2
            when forall
       return ret;
      }
      // </smpl>
      Signed-off-by: default avatarJulia Lawall <Julia.Lawall@lip6.fr>
      Acked-by: default avatarHans-Christian Egtvedt <egtvedt@samfundet.no>
      686913aa
    • Linus Torvalds's avatar
      Merge branch 'akpm' (patchbomb from Andrew Morton) · 33caee39
      Linus Torvalds authored
      Merge incoming from Andrew Morton:
       - Various misc things.
       - arch/sh updates.
       - Part of ocfs2.  Review is slow.
       - Slab updates.
       - Most of -mm.
       - printk updates.
       - lib/ updates.
       - checkpatch updates.
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (226 commits)
        checkpatch: update $declaration_macros, add uninitialized_var
        checkpatch: warn on missing spaces in broken up quoted
        checkpatch: fix false positives for --strict "space after cast" test
        checkpatch: fix false positive MISSING_BREAK warnings with --file
        checkpatch: add test for native c90 types in unusual order
        checkpatch: add signed generic types
        checkpatch: add short int to c variable types
        checkpatch: add for_each tests to indentation and brace tests
        checkpatch: fix brace style misuses of else and while
        checkpatch: add --fix option for a couple OPEN_BRACE misuses
        checkpatch: use the correct indentation for which()
        checkpatch: add fix_insert_line and fix_delete_line helpers
        checkpatch: add ability to insert and delete lines to patch/file
        checkpatch: add an index variable for fixed lines
        checkpatch: warn on break after goto or return with same tab indentation
        checkpatch: emit a warning on file add/move/delete
        checkpatch: add test for commit id formatting style in commit log
        checkpatch: emit fewer kmalloc_array/kcalloc conversion warnings
        checkpatch: improve "no space after cast" test
        checkpatch: allow multiple const * types
        ...
      33caee39
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 6456a043
      Linus Torvalds authored
      Pull networking fixes from David Miller:
       "This fixes the most immediate fallout from yesterday's networking
        merge:
      
         1) sock_tx_timestamp() must not clear the passed in tx_flags, but
            rather add to them.  Fix from Eric Dumazet.
      
         2) The hyperv driver sendbuf region increase needs to be decreased
            slightly to handle older backends.  From KY Srinivasan.
      
         3) Fix RCU lockdep splats in netlink diag after recent hashing
            changes, from Thomas Graf.
      
         4) The new IPV6_FLOWLABEL was given a socket option number that
            overlapped with an existing IP6 tables one, breaking ip6_tables.
            Fixed by Pablo Neira Ayuso"
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
        netlink: hold nl_sock_hash_lock during diag dump
        tcp: md5: check md5 signature without socket lock
        net: fix USB network driver config option.
        net: reallocate new socket option number for IPV6_AUTOFLOWLABEL
        vmxnet3: fix decimal printf format specifiers prefixed with 0x
        net-timestamp: cumulative tcp timestamping fixes
        hyperv: Adjust the size of sendbuf region to support ws2008r2
        cxgb4: Fix for SR-IOV VF initialization
        net-timestamp: sock_tx_timestamp() fix
      6456a043
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial · 158c1294
      Linus Torvalds authored
      Pull trivial tree changes from Jiri Kosina:
       "Summer edition of trivial tree updates"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (23 commits)
        doc: fix two typos in watchdog-api.txt
        irq-gic: remove file name from heading comment
        MAINTAINERS: Add miscdevice.h to file list for char/misc drivers.
        scsi: mvsas: mv_sas.c: Fix for possible null pointer dereference
        doc: replace "practise" with "practice" in Documentation
        befs: remove check for CONFIG_BEFS_RW
        scsi: doc: fix 'SCSI_NCR_SETUP_MASTER_PARITY'
        drivers/usb/phy/phy.c: remove a leading space
        mfd: fix comment
        cpuidle: fix comment
        doc: hpfall.c: fix missing null-terminate after strncpy call
        usb: doc: hotplug.txt code typos
        kbuild: fix comment in Makefile.modinst
        SH: add proper prompt to SH_MAGIC_PANEL_R2_VERSION
        ARM: msm: Remove MSM_SCM
        crypto: Remove MPILIB_EXTRA
        doc: CN: remove dead link, kerneltrap.org no longer works
        media: update reference, kerneltrap.org no longer works
        hexagon: update reference, kerneltrap.org no longer works
        doc: LSM: update reference, kerneltrap.org no longer works
        ...
      158c1294
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 172bfe09
      Linus Torvalds authored
      Pull HID updates from Jiri Kosina:
       "Some highlights:
      
         - hid-sony improvements of Sixaxis device support by Antonio Ospite
         - hid-hyperv driven devices can now be used as wakeup source, by
           Dexuan Cui
         - hid-lenovo driver is now more generic and supports more devices, by
           Jamie Lentin
         - hid-huion now supports wider range of tablets, by Nikolai
           Kondrashov
         - other various unsorted fixes and device ID additions"
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid: (30 commits)
        HID: hyperv: register as a wakeup source
        HID: sony: Default initialize all elements of the LED max_brightness array to 1
        HID: huion: Fix sparse warnings
        HID: usbhid: Use flag HID_DISCONNECTED when a usb device is removed
        HID: ignore jabra gn9350e
        HID: cp2112: add I2C mode
        HID: use multi input quirk for 22b9:2968
        HID: rmi: only bind the hid-rmi driver to the mouse interface of composite USB devices
        HID: rmi: check that report ids exist in the report_id_hash before accessing their size
        HID: lenovo: Add support for Compact (BT|USB) keyboard
        HID: lenovo: Don't call function in condition, show error codes
        HID: lenovo: Prepare support for adding other devices
        HID: lenovo: Rename hid-lenovo-tpkbd to hid-lenovo
        HID: huion: Handle tablets with UC-Logic vendor ID
        HID: huion: Switch to generating report descriptor
        HID: huion: Don't ignore other interfaces
        HID: huion: Use "tablet" instead of specific model
        HID: add quirk for 0x04d9:0xa096 device
        HID: i2c-hid: call the hid driver's suspend and resume callbacks
        HID: rmi: change logging level of log messages related to unexpected reports
        ...
      172bfe09
    • Linus Torvalds's avatar
      Merge git://www.linux-watchdog.org/linux-watchdog · a1b0a006
      Linus Torvalds authored
      Pull watchdog updates from Wim Van Sebroeck:
       - remove unnecessary checks after platform_get_resource()
       - fix watchdog api documentation typo's
       - imx2_wdt: adds big endianness support
       - move restart code to the sunxi watchdog driver
      
      * git://www.linux-watchdog.org/linux-watchdog:
        wdt: sunxi: Move restart code to the watchdog driver
        Documentation: fix two typos in watchdog-api.txt
        watchdog: imx2_wdt: adds big endianness support.
        watchdog: shwdt: Remove the unnecessary check of resource after platform_get_resource()
        watchdog: lantiq_wdt: Remove the un-necessary check of resource after platform_get_resource()
        watchdog: dw_wdt: Remove the un-necessary check after platform_get_resource()
      a1b0a006
    • Linus Torvalds's avatar
      Merge tag 'pm+acpi-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 77251319
      Linus Torvalds authored
      Pull ACPI and power management updates from Rafael Wysocki:
       "Again, ACPICA leads the pack (47 commits), followed by cpufreq (18
        commits) and system suspend/hibernation (9 commits).
      
        From the new code perspective, the ACPICA update brings ACPI 5.1 to
        the table, including a new device configuration object called _DSD
        (Device Specific Data) that will hopefully help us to operate device
        properties like Device Trees do (at least to some extent) and changes
        related to supporting ACPI on ARM.
      
        Apart from that we have hibernation changes making it use radix trees
        to store memory bitmaps which should speed up some operations carried
        out by it quite significantly.  We also have some power management
        changes related to suspend-to-idle (the "freeze" sleep state) support
        and more preliminary changes needed to support ACPI on ARM (outside of
        ACPICA).
      
        The rest is fixes and cleanups pretty much everywhere.
      
        Specifics:
      
         - ACPICA update to upstream version 20140724.  That includes ACPI 5.1
           material (support for the _CCA and _DSD predefined names, changes
           related to the DMAR and PCCT tables and ARM support among other
           things) and cleanups related to using ACPICA's header files.  A
           major part of it is related to acpidump and the core code used by
           that utility.  Changes from Bob Moore, David E Box, Lv Zheng,
           Sascha Wildner, Tomasz Nowicki, Hanjun Guo.
      
         - Radix trees for memory bitmaps used by the hibernation core from
           Joerg Roedel.
      
         - Support for waking up the system from suspend-to-idle (also known
           as the "freeze" sleep state) using ACPI-based PCI wakeup signaling
           (Rafael J Wysocki).
      
         - Fixes for issues related to ACPI button events (Rafael J Wysocki).
      
         - New device ID for an ACPI-enumerated device included into the
           Wildcat Point PCH from Jie Yang.
      
         - ACPI video updates related to backlight handling from Hans de Goede
           and Linus Torvalds.
      
         - Preliminary changes needed to support ACPI on ARM from Hanjun Guo
           and Graeme Gregory.
      
         - ACPI PNP core cleanups from Arjun Sreedharan and Zhang Rui.
      
         - Cleanups related to ACPI_COMPANION() and ACPI_HANDLE() macros
           (Rafael J Wysocki).
      
         - ACPI-based device hotplug cleanups from Wei Yongjun and Rafael J
           Wysocki.
      
         - Cleanups and improvements related to system suspend from Lan
           Tianyu, Randy Dunlap and Rafael J Wysocki.
      
         - ACPI battery cleanup from Wei Yongjun.
      
         - cpufreq core fixes from Viresh Kumar.
      
         - Elimination of a deadband effect from the cpufreq ondemand governor
           and intel_pstate driver cleanups from Stratos Karafotis.
      
         - 350MHz CPU support for the powernow-k6 cpufreq driver from Mikulas
           Patocka.
      
         - Fix for the imx6 cpufreq driver from Anson Huang.
      
         - cpuidle core and governor cleanups from Daniel Lezcano, Sandeep
           Tripathy and Mohammad Merajul Islam Molla.
      
         - Build fix for the big_little cpuidle driver from Sachin Kamat.
      
         - Configuration fix for the Operation Performance Points (OPP)
           framework from Mark Brown.
      
         - APM cleanup from Jean Delvare.
      
         - cpupower utility fixes and cleanups from Peter Senna Tschudin,
           Andrey Utkin, Himangi Saraogi, Rickard Strandqvist, Thomas
           Renninger"
      
      * tag 'pm+acpi-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (118 commits)
        ACPI / LPSS: add LPSS device for Wildcat Point PCH
        ACPI / PNP: Replace faulty is_hex_digit() by isxdigit()
        ACPICA: Update version to 20140724.
        ACPICA: ACPI 5.1: Update for PCCT table changes.
        ACPICA/ARM: ACPI 5.1: Update for GTDT table changes.
        ACPICA/ARM: ACPI 5.1: Update for MADT changes.
        ACPICA/ARM: ACPI 5.1: Update for FADT changes.
        ACPICA: ACPI 5.1: Support for the _CCA predifined name.
        ACPICA: ACPI 5.1: New notify value for System Affinity Update.
        ACPICA: ACPI 5.1: Support for the _DSD predefined name.
        ACPICA: Debug object: Add current value of Timer() to debug line prefix.
        ACPICA: acpihelp: Add UUID support, restructure some existing files.
        ACPICA: Utilities: Fix local printf issue.
        ACPICA: Tables: Update for DMAR table changes.
        ACPICA: Remove some extraneous printf arguments.
        ACPICA: Update for comments/formatting. No functional changes.
        ACPICA: Disassembler: Add support for the ToUUID opererator (macro).
        ACPICA: Remove a redundant cast to acpi_size for ACPI_OFFSET() macro.
        ACPICA: Work around an ancient GCC bug.
        ACPI / processor: Make it possible to get local x2apic id via _MAT
        ...
      77251319
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi · 6b22df74
      Linus Torvalds authored
      Pull SCSI updates from James Bottomley:
       "This patch set consists of the usual driver updates (ufs, storvsc,
        pm8001 hpsa).  It also has removal of the user space target driver
        code (everyone is using LIO now), a partial PCI MSI-X update, more
        multi-queue updates, conversion to 64 bit LUNs (so we could
        theoretically cope with any LUN returned by a device) and placeholder
        support for the ZBC device type (Shingle drives), plus an assortment
        of minor updates and bug fixes"
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (143 commits)
        scsi: do not issue SCSI RSOC command to Promise Vtrak E610f
        vmw_pvscsi: Use pci_enable_msix_exact() instead of pci_enable_msix()
        pm8001: Fix invalid return when request_irq() failed
        lpfc: Remove superfluous call to pci_disable_msix()
        isci: Use pci_enable_msix_exact() instead of pci_enable_msix()
        bfa: Use pci_enable_msix_exact() instead of pci_enable_msix()
        bfa: Cleanup bfad_setup_intr() function
        bfa: Do not call pci_enable_msix() after it failed once
        fnic: Use pci_enable_msix_exact() instead of pci_enable_msix()
        scsi: use short driver name for per-driver cmd slab caches
        scsi_debug: support scsi-mq, queues and locks
        Drivers: add blist flags
        scsi: ufs: fix endianness sparse warnings
        scsi: ufs: make undeclared functions static
        bnx2i: Update driver version to 2.7.10.1
        pm8001: fix a memory leak in nvmd_resp
        pm8001: fix update_flash
        pm8001: fix a memory leak in flash_update
        pm8001: Cleaning up uninitialized variables
        pm8001: Fix to remove null pointer checks that could never happen
        ...
      6b22df74
    • Linus Torvalds's avatar
      Merge tag 'sound-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 930e0312
      Linus Torvalds authored
      Pull sound updates from Takashi Iwai:
       "There've been many updates in ASoC side at this time, especially the
        framework enhancement for multiple CODECs on a single DAI and more
        componentization works.
      
        The only major change in ALSA core is the addition of timestamp type
        in sw_params field.  This should behave in backward compatible way.
      
        Other than that, there are lots of small changes and new drivers in
        wide range, including a large code cut in HD-audio driver for
        deprecated static quirks.  Some highlights are below:
      
        ALSA Core:
         - Add the new timestamp type field to sw_params to choose
           MONOTONIC_RAW type
      
        HD-audio:
         - Continued conversion to standard printk macros, generic code
           cleanups
         - Removal of obsoleted static quirk codes for Conexant and C-Media
           codecs
         - Fixups for HP Envy TS, Dell XPS 15, HP and Dell mute/mic LED,
           Gigabyte BXBT-2807 mobo
         - Intel Braswell support
      
        ASoC:
         - Support for multiple CODECs attached to a single DAI, enabling
           systems with for example multiple DAC/speaker drivers on a single
           link, contributed by Benoit Cousson based on work from Misael Lopez
           Cruz
         - Support for byte controls larger than 256 bytes based on the use of
           TLVs contributed by Omair Mohammed Abdullah
         - More componentisation work from Lars-Peter Clausen
         - The remainder of the conversions of CODEC drivers to params_width()
           by Mark Brown
         - Drivers for Cirrus Logic CS4265, Freescale i.MX ASRC blocks,
           Realtek RT286 and RT5670, Rockchip RK3xxx I2S controllers and Texas
           Instruments TAS2552
         - Lots of updates and fixes, especially to the DaVinci, Intel,
           Freescale, Realtek, and rcar drivers"
      
      * tag 'sound-3.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (402 commits)
        ALSA: usb-audio: Whitespace cleanups for sound/usb/midi.*
        ALSA: usb-audio: Respond to suspend and resume callbacks for MIDI input
        sound/oss/pss: Remove typedefs pss_mixerdata and pss_confdata
        sound/oss/opl3: Remove typedef opl_devinfo
        ALSA: fireworks: fix specifiers in format strings for propper output
        ASoC: imx-audmux: Use uintptr_t for port numbers
        ASoC: davinci: Enable menuconfig entry for McASP
        ASoC: fsl_asrc: Don't access members of config before checking it
        ASoC: fsl_sarc_dma: Check pair before using it
        ASoC: adau1977: Fix truncation warning on 64 bit architectures
        ALSA: virtuoso: add Xonar Essence STX II support
        ALSA: riptide: fix %d confusingly prefixed with 0x in format strings
        ALSA: fireworks: fix %d confusingly prefixed with 0x in format strings
        ALSA: hda - add codec ID for Braswell display audio codec
        ALSA: hda - add PCI IDs for Intel Braswell
        ALSA: usb-audio: Adjust Gamecom 780 volume level
        ALSA: usb-audio: improve dmesg source grepability
        ASoC: rt5670: Fix duplicate const warnings
        ASoC: rt5670: Staticise non-exported symbols
        ASoC: Intel: update stream only on stream IPC msgs
        ...
      930e0312
    • Linus Torvalds's avatar
      Merge tag 'hsi-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi · ec6c0a77
      Linus Torvalds authored
      Pull HSI changes from Sebastian Reichel:
       "Misc fixes in SSI related drivers"
      
      * tag 'hsi-for-3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-hsi:
        HSI: omap_ssi: Fix return value check in ssi_debug_add_ctrl()
        HSI: omap_ssi_port: Fix return value check in ssi_debug_add_port()
        HSI: ssi_protocol: Fix sparse non static symbol warning
        drivers/hsi/controllers/omap_ssi{,_port}.c: fix failure checks
      ec6c0a77
    • Linus Torvalds's avatar
      Merge tag 'for-v3.17' of git://git.infradead.org/battery-2.6 · 0498cf84
      Linus Torvalds authored
      Pull power supply changes from Sebastian Reichel:
       - Added iPaq h3xxx battery driver
       - Added Broadcom STB reset driver
       - DT support for rx51-battery
       - misc. fixes
      
      * tag 'for-v3.17' of git://git.infradead.org/battery-2.6:
        ipaq_micro_battery: fix sparse non static symbol warning
        power: add driver for battery reading on iPaq h3xxx
        power: twl4030_charger: detect battery presence prior to enabling charger
        power: reset: Add reboot driver for brcmstb
        power_supply: Fix sparse non static symbol warning
        power_supply: Add inlmt,iterm, min/max temp props
        charger: tps65090: Allow charger module to be used when no irq
        power/reset: Fix GPL v2 license string typo
        power: poweroff: gpio: convert to use descriptors
        bq27000: report missing device better.
        bq27x00_battery: Introduce the use of the managed version of kzalloc
        Documentation: DT: Document rx51-battery binding
        rx51_battery: convert to iio consumer
        bq2415x_charger: Fix Atomic Sleep Bug
      0498cf84
    • Gavin Shan's avatar
      powerpc/eeh: Export eeh_iommu_group_to_pe() · 537e5400
      Gavin Shan authored
      The function is used by VFIO driver, which might be built as a
      dynamic module. So it should be exported.
      Signed-off-by: default avatarGavin Shan <gwshan@linux.vnet.ibm.com>
      Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
      537e5400
    • Thomas Graf's avatar
      netlink: hold nl_sock_hash_lock during diag dump · 6c8f7e70
      Thomas Graf authored
      Although RCU protection would be possible during diag dump, doing
      so allows for concurrent table mutations which can render the
      in-table offset between individual Netlink messages invalid and
      thus cause legitimate sockets to be skipped in the dump.
      
      Since the diag dump is relatively low volume and consistency is
      more important than performance, the table mutex is held during
      dump.
      Reported-by: default avatarAndrey Wagin <avagin@gmail.com>
      Signed-off-by: default avatarThomas Graf <tgraf@suug.ch>
      Fixes: e341694e ("netlink: Convert netlink_lookup() to use RCU protected hash table")
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6c8f7e70
    • Joe Perches's avatar
      checkpatch: update $declaration_macros, add uninitialized_var · f8422308
      Joe Perches authored
      Using uninitialized_var reports a false positive for "Missing blank line
      after declarations".
      
      Fix it by adding uninitialized_var to the $declaration_macros exceptions
      list.
      
      Move the macro list after $Type is declared.
      
      Add optional prefixes to DECLARE_<FOO> and DEFINE_<BAR>
      macro declarations to allow forms like:
      	MLX4_DECLARE_DOORBELL_LOCK
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarDotan Barak <dotanb@mellanox.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f8422308
    • Dan Carpenter's avatar
      checkpatch: warn on missing spaces in broken up quoted · ece9659f
      Dan Carpenter authored
      Checkpatch already complains when people break up quoted strings but
      it's still pretty common.  One mistake that people often make is they
      leave out the space character between the two strings.
      
      This check adds around 450 new warnings and has a low rate of false
      positives.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Cc: Andy Whitcroft <apw@canonical.com>
      Acked-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ece9659f
    • Joe Perches's avatar
      checkpatch: fix false positives for --strict "space after cast" test · 308cc8d8
      Joe Perches authored
      Commit 89da401f6cff ("checkpatch: improve "no space after cast" test")
      in -next improved the cast test for non pointer types, but also
      introduced false positives for some types of static inlines.
      
      Add a test for an open brace to the exclusions to avoid these false
      positives.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarHartley Sweeten <HartleyS@visionengravers.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      308cc8d8
    • Joe Perches's avatar
      checkpatch: fix false positive MISSING_BREAK warnings with --file · e81f239b
      Joe Perches authored
      Using --file mode can give false positives with MISSING_BREAK
      fall-through warnings on simple but long multiple consecutive case
      statements.
      
      Look for all lines before a case statement for a switch or a statement
      when using --file mode.
      
      Fix a misspelling of preceded while there.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarLee Jones <lee.jones@linaro.org>
      Acked-by: default avatarLee Jones <lee.jones@linaro.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e81f239b
    • Joe Perches's avatar
      checkpatch: add test for native c90 types in unusual order · 1813087d
      Joe Perches authored
      c90 section "6.7.2 Type Specifiers" says:
          "type specifiers may occur in any order"
      
      That means that:
          short int is the same as int short
          unsigned short int is the same as int unsigned short
          etc...
      
      checkpatch currently parses only a subset of these allowed types.
      
      For instance: "unsigned short" and "signed short" are found by
      checkpatch as a specific type, but none of the or "int short" or "int
      signed short" variants are found.
      
      Add another table for the "kernel style misordered" variants.
      
      Add this misordered table to the findable types.
      
      Warn when the misordered style is used.
      
      This improves the "Missing a blank line after declarations" test as it
      depends on the correct parsing of the $Declare variable which looks for
      "$Type $Ident;" (ie: declarations like "int foo;").
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Acked-by: default avatarAndy Whitcroft <apw@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1813087d
    • Joe Perches's avatar
      checkpatch: add signed generic types · 0c773d9d
      Joe Perches authored
      Current generic types are unsigned or unspecified.  Add signed to the
      types.
      
      Reorder the types to find the longest match first.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Acked-by: default avatarAndy Whitcroft <apw@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0c773d9d
    • Joe Perches's avatar
      checkpatch: add short int to c variable types · 3f7bc4e1
      Joe Perches authored
      short int is one of the 6.7.2 c90 types.
      Find it appropriately.
      
      This fixes a defect in checkpatch where it suggests that a line break
      after declaration is required using an input like:
      
      	int foo;
      	short int bar;
      
      Without this change, it warns on the short int line.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarHartley Sweeten <HartleyS@visionengravers.com>
      Acked-by: default avatarAndy Whitcroft <apw@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3f7bc4e1
    • Joe Perches's avatar
      checkpatch: add for_each tests to indentation and brace tests · 0fe3dc2b
      Joe Perches authored
      All the various for_each loop macros were not tested for trailing brace
      on the following lines and for bad indentation.
      
      Add them.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarGreg KH <gregkh@linuxfoundation.org>
      Cc: Andy Whitcroft <apw@canonical.com
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0fe3dc2b
    • Joe Perches's avatar
      checkpatch: fix brace style misuses of else and while · 8b8856f4
      Joe Perches authored
      Add --fix corrections for ELSE_AFTER_BRACE and WHILE_AFTER_BRACE
      misuses.
      
      	if (x) {
      		...
      	}
      	else {
      		...
      	}
      
      is corrected to
      
      	if (x) {
      		...
      	} else {
      		...
      	}
      
      and
      
      	do {
      		...
      	}
      	while (x);
      
      is corrected to
      
      	do {
      		...
      	} while (x);
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8b8856f4
    • Joe Perches's avatar
      checkpatch: add --fix option for a couple OPEN_BRACE misuses · 8d182478
      Joe Perches authored
      Style misuses of these types are corrected:
      
        typedef struct foo
        {
              int bar;
        };
      
        int foo(int bar) { return bar+1;
        }
      
        int foo(int bar) {
              return bar+1;
        }
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8d182478
    • Joe Perches's avatar
      checkpatch: use the correct indentation for which() · bd474ca0
      Joe Perches authored
      I copied the which subroutine from get_maintainer.pl.
      
      Unfortunately, get_maintainer uses a 4 space indentation so use the
      proper tab indentation instead.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      bd474ca0
    • Joe Perches's avatar
      checkpatch: add fix_insert_line and fix_delete_line helpers · f2d7e4d4
      Joe Perches authored
      Neaten the uses of patch/file line insertions or deletions.  Hide the
      mechanism used.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f2d7e4d4
    • Joe Perches's avatar
      checkpatch: add ability to insert and delete lines to patch/file · d752fcc8
      Joe Perches authored
      This can be valuable to insert or delete blank lines as well as fix
      misplaced brace or else uses.
      
      Store indexes of lines to be added/deleted and the new lines.
      
      When creating the --fix file, insert or delete the appropriate lines and
      update the patch range information.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Cc: Andy Whitcroft <apw@canonical.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Josh Triplett <josh@joshtriplett.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d752fcc8
    • Joe Perches's avatar
      checkpatch: add an index variable for fixed lines · 194f66fc
      Joe Perches authored
      Make the fix code a bit easier to read.
      
      This should also start to allow an easier mechanism to insert/delete
      lines eventually too.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Cc: Andy Whitcroft <apw@canonical.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: Josh Triplett <josh@joshtriplett.org>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      194f66fc
    • Joe Perches's avatar
      checkpatch: warn on break after goto or return with same tab indentation · c00df19a
      Joe Perches authored
      Using break; after a goto or return is unnecessary so emit a warning
      when the break is at the same indent level.
      
      So this emits a warning on:
      
      	switch (foo) {
      	case 1:
      		goto err;
      		break;
      	}
      
      but not on:
      
      	switch (foo) {
      	case 1:
      		if (bar())
      			goto err;
      		break;
      	}
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c00df19a
    • Joe Perches's avatar
      checkpatch: emit a warning on file add/move/delete · 13f1937e
      Joe Perches authored
      Whenever files are added, moved, or deleted, the MAINTAINERS file
      patterns can be out of sync or outdated.
      
      To try to keep MAINTAINERS more up-to-date, add a one-time warning
      whenever a patch does any of those.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Acked-by: default avatarAndy Whitcroft <apw@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      13f1937e
    • Joe Perches's avatar
      checkpatch: add test for commit id formatting style in commit log · d311cd44
      Joe Perches authored
      Commit logs have various forms of commit id references.
      
      Try to standardize on a 12 character long lower case commit id along
      with a description of parentheses and the quoted subject line.
      
      ie: commit 0123456789ab ("commit description")
      
      If git and a git tree exists, look up the commit id and emit the
      appropriate line as part of the message.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Requested-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d311cd44
    • Joe Perches's avatar
      checkpatch: emit fewer kmalloc_array/kcalloc conversion warnings · e367455a
      Joe Perches authored
      Avoid matching allocs that appear to be known small multiplications of a
      sizeof with a constant because gcc as of 4.8 cannot optimize the code in
      a calloc() exactly the same way as an alloc().
      
      Look for numeric constants or what appear to be upper case only macro
      #defines.
      Signed-off-by: default avatarJoe Perches <joe@perches.com>
      Reported-by: default avatarTheodore Ts'o <tytso@mit.edu>
      Original-patch-by: default avatarFabian Frederick <fabf@skynet.be>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      e367455a