22 Jul, 2016

5 commits

  • When debugging (using --profile or --show-trying) you want to
    avoid supressing output, use --quiet instead. While at it, extend
    documentation for SPFLAGS use.

    For instance one can use:

    $ export COCCI=scripts/coccinelle/misc/irqf_oneshot.cocci
    $ make coccicheck DEBUG_FILE="poo.err" MODE=report SPFLAGS="--profile --show-trying" M=./drivers/mfd/arizona-irq.c

    Expand Documentation/coccinelle.txt as well.

    v4: expand Documentation/coccinelle.txt
    v3: rebased, resolve conflicts, expand Documentation/coccinelle.txt
    v2: use egrep instead of the *"=--option"* check, this doesn't work for
    disjunctions.

    Signed-off-by: Luis R. Rodriguez
    Acked-by: Julia Lawall
    Signed-off-by: Michal Marek

    Luis R. Rodriguez
     
  • Enable to capture stderr via a DEBUG_FILE variable passed to
    coccicheck. You can now do:

    $ rm -f cocci.err
    $ export COCCI=scripts/coccinelle/free/kfree.cocci
    $ make coccicheck MODE=report DEBUG_FILE=cocci.err
    ...
    $ cat cocci.err

    This will be come more useful once we add support to
    use more things which would go into stderr, such as
    profiling. That will be done separately in another
    commit.

    Expand Documentation/coccinelle.txt with details.

    Signed-off-by: Luis R. Rodriguez
    Acked-by: Nicolas Palix
    Signed-off-by: Michal Marek

    Luis R. Rodriguez
     
  • Coccinelle has had parmap support since 1.0.2, this means
    it supports --jobs, enabling built-in multithreaded functionality,
    instead of needing one to script it out. Just look for --jobs
    in the help output to determine if this is supported and use it
    only if your number of processors detected is > 1.

    If parmap is enabled also enable the load balancing to be dynamic, so
    that if a thread finishes early we keep feeding it.

    stderr is currently sent to /dev/null, addressing a way to capture
    that will be addressed next.

    If --jobs is not supported we fallback to the old mechanism.
    We expect to deprecate the old mechanism as soon as we can get
    confirmation all users are ready.

    While at it propagate back into the shell script any coccinelle error
    code. When used in serialized mode where all cocci files are run this
    also stops processing if an error has occured. This lets us handle some
    errors in coccinelle cocci files and if they bail out we should inspect
    the errors. This will be more useful later to help annotate coccinelle
    version dependency requirements. This will let you run only SmPL files
    that your system supports.

    Extend Documentation/coccinelle.txt as well.

    As a small example, prior to this change, on an 8-core system:

    Before:

    $ export COCCI=scripts/coccinelle/free/kfree.cocci
    $ time make coccicheck MODE=report
    ...

    real 29m14.912s
    user 103m1.796s
    sys 0m4.464s

    After:

    real 16m22.435s
    user 128m30.060s
    sys 0m2.712s

    v4:

    o expand Documentation/coccinelle.txt to reflect parmap support info
    o update commit log to reflect what we actually do now with stderr
    o split out DEBUG_FILE use into another patch
    o detect number of CPUs and if its 1 then skip parmap support,
    note that if you still support parmap, but have 1 CPU you will
    also go through the new branches, so the old complex multithreaded process
    is skipped as well.

    v3:

    o move USE_JOBS to avoid being overriden

    v2:

    o redirect coccinelle stderr to /dev/null by default and
    only if DEBUG_FILE is used do we pass it to a file
    o fix typo of paramap/parmap

    Signed-off-by: Luis R. Rodriguez
    Acked-by: Nicolas Palix
    Signed-off-by: Michal Marek

    Luis R. Rodriguez
     
  • SPFLAGS is set early, it means that any heuristics done on
    coccicheck cannot be overridden currently. Move SPFLAGS
    after OPTIONS and set this at the end. This lets you override
    any heuristics as coccinelle treats conflicts by only listening
    to the last option that makes sense.

    v3: this patch was added in the v3 series
    v4: Update Documentation/coccinelle.txt explaining how
    SPFLAGS works as well.

    Signed-off-by: Luis R. Rodriguez
    Acked-by: Nicolas Palix
    Signed-off-by: Michal Marek

    Luis R. Rodriguez
     
  • This has no functional changes. This is being done
    to enable us to later use spatch binary for some
    flag checking for certain features early on.

    Signed-off-by: Luis R. Rodriguez
    Acked-by: Nicolas Palix
    Signed-off-by: Michal Marek

    Luis R. Rodriguez
     

19 Jul, 2016

1 commit

  • On May 4th, Bjørn Mork provided patch 697bbc7b8320 ("builddeb: include
    objtool binary in headers package"). However, that one only works if
    $srctree=$objtree, because the objtool binaries are not written to the
    srctree, but to the objtree.

    Signed-off-by: Wilfried Klaebe
    Fixes: 697bbc7b8320 ("builddeb: include objtool binary in headers package")
    Signed-off-by: Michal Marek

    Wilfried Klaebe
     

21 Jun, 2016

4 commits

  • krealloc() must not be used against devm_*() allocated
    memory regions:

    - if a bigger memory is to be allocated, krealloc() and
    __krealloc() could return a different pointer than the
    one given to them, creating a memory region which is not
    managed, thus it will not be automatically released on
    device removal.

    - if a bigger memory is to be allocated, krealloc() could
    kfree() the managed memory region which is passed to it.
    The old pointer is left registered as a resource for the
    device. On device removal, this dangling pointer will be
    used and an unrelated memory region could be released.

    - if the requested size is equal to 0, krealloc() can also
    just behave like kfree(). Here too, the old pointer is
    kept associated with the device. On device removal, this
    invalid pointer will be used and an unrelated memory
    region could be released.

    For all these reasons, krealloc() must not be used on a
    pointer returned by devm_*() functions.

    Cc: Tejun Heo
    Cc: Pekka Enberg
    Acked-by: Julia Lawall
    Signed-off-by: Yann Droneaud
    Signed-off-by: Michal Marek

    Yann Droneaud
     
  • Updates free/devm_free.cocci to recognize functions added by:

    - commit 64c862a839a8 ('devres: add kernel standard devm_k.alloc functions')
    - commit e31108cad3de ('devres: introduce API "devm_kstrdup"')
    - commit 3046365bb470 ('devres: introduce API "devm_kmemdup')
    - commit 43339bed7010 ('devres: Add devm_get_free_pages API')
    - commit 75f2a4ead5d5 ('devres: Add devm_kasprintf and devm_kvasprintf API')

    See also Documentation/driver-model/devres.txt

    Cc: Joe Perches
    Cc: Manish Badarkhe
    Cc: Srinivas Pandruvada
    Cc: Eli Billauer
    Cc: Himangi Saraogi
    Cc: Geert Uytterhoeven
    Cc: Wolfram Sang
    Cc: Daniel Thompson
    Acked-by: Julia Lawall
    Signed-off-by: Yann Droneaud
    Signed-off-by: Michal Marek

    Yann Droneaud
     
  • Since commit 3ef0e5ba4673 ('slab: introduce kzfree()'),
    kfree() is no more the only function to be considered:
    kzfree() should be recognized too.

    In particular, kzfree() must not be called on memory
    allocated through devm_*() functions.

    Cc: Johannes Weiner
    Acked-by: Julia Lawall
    Signed-off-by: Yann Droneaud
    Signed-off-by: Michal Marek

    Yann Droneaud
     
  • Documentation/coccinelle.txt suggests using the SPFLAGS
    make variable to pass additional options to spatch.

    Reorder the way SPFLAGS is added to FLAGS, to allow
    for options in the SPFLAGS to override the default
    --very-quiet option.

    Similarly, rearrage the FLAGS for org or report mode.
    This allows for overriding of the default --no-show-diff
    option through SPFLAGS.

    Signed-off-by: Deepa Dinamani
    Cc: Gilles Muller
    Acked-by: Nicolas Palix
    Acked-by: Julia Lawall
    Signed-off-by: Michal Marek

    Deepa Dinamani
     

20 Jun, 2016

1 commit


27 May, 2016

3 commits

  • Pull misc kbuild updates from Michal Marek:
    "This is the non-critical part of kbuild:

    - Coccinelle fixes, one semantic patch less in this round [Vaishali
    Thakkar, Wolfram Sang, Kees Cook]

    - rpm-pkg support for (open)SUSE's update-bootloader [Jiří Kosian]

    - rpm-pkg restored support for $RPMOPTS [Srinivas Pandruvada]

    - deb-pkg fixes for the linux-headers package [Bjørn Mork, Azriel
    Samson]"

    * 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    coccicheck: Fix missing 0 index in kill loop
    scripts/package/Makefile: rpmbuild add support of RPMOPTS
    builddeb: fix missing headers in linux-headers package
    builddeb: include objtool binary in headers package
    kbuild/mkspec: support 'update-bootloader'-based systems
    scripts: coccinelle: remove check to move constants to right
    Coccinelle: setup_timer: Add space in front of parentheses

    Linus Torvalds
     
  • Pull kconfig update from Michal Marek:

    - fix for behavior of tristate choice items and fix for documentation
    of existing kconfig behavior [Dirk Gouders]

    - more helpful "unexpected data" kconfig warning [Paul Bolle]

    * 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild:
    kconfig/symbol.c: handle choice_values that depend on 'm' symbols
    kconfig-language: elaborate on the type of a choice
    kconfig-language: fix comment on dependency-generated menu structures.
    kconfig: add unexpected data itself to warning

    Linus Torvalds
     
  • Pull kbuild updates from Michal Marek:

    - new option CONFIG_TRIM_UNUSED_KSYMS which does a two-pass build and
    unexports symbols which are not used in the current config [Nicolas
    Pitre]

    - several kbuild rule cleanups [Masahiro Yamada]

    - warning option adjustments for gcov etc [Arnd Bergmann]

    - a few more small fixes

    * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild: (31 commits)
    kbuild: move -Wunused-const-variable to W=1 warning level
    kbuild: fix if_change and friends to consider argument order
    kbuild: fix adjust_autoksyms.sh for modules that need only one symbol
    kbuild: fix ksym_dep_filter when multiple EXPORT_SYMBOL() on the same line
    gcov: disable -Wmaybe-uninitialized warning
    gcov: disable tree-loop-im to reduce stack usage
    gcov: disable for COMPILE_TEST
    Kbuild: disable 'maybe-uninitialized' warning for CONFIG_PROFILE_ALL_BRANCHES
    Kbuild: change CC_OPTIMIZE_FOR_SIZE definition
    kbuild: forbid kernel directory to contain spaces and colons
    kbuild: adjust ksym_dep_filter for some cmd_* renames
    kbuild: Fix dependencies for final vmlinux link
    kbuild: better abstract vmlinux sequential prerequisites
    kbuild: fix call to adjust_autoksyms.sh when output directory specified
    kbuild: Get rid of KBUILD_STR
    kbuild: rename cmd_as_s_S to cmd_cpp_s_S
    kbuild: rename cmd_cc_i_c to cmd_cpp_i_c
    kbuild: drop redundant "PHONY += FORCE"
    kbuild: delete unnecessary "@:"
    kbuild: mark help target as PHONY
    ...

    Linus Torvalds
     

24 May, 2016

17 commits

  • A recent addition to the DRM tree for 4.7 added 'extern "C"' guards
    for c++ to all the DRM headers, and that now causes warnings
    in 'make headers_check':

    usr/include/drm/amdgpu_drm.h:38: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/drm.h:63: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/drm.h:699: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/drm_fourcc.h:30: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/drm_mode.h:33: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/drm_sarea.h:38: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/exynos_drm.h:21: userspace cannot reference function or variable defined in the kernel
    usr/include/drm/i810_drm.h:7: userspace cannot reference function or variable defined in the kernel

    This changes the headers_check.pl script to not warn about this.
    I'm listing the merge commit as introducing the problem, because
    there are several patches in this branch that each do this for
    one file.

    Signed-off-by: Arnd Bergmann
    Fixes: 7c10ddf87472 ("Merge branch 'drm-uapi-extern-c-fixes' of https://github.com/evelikov/linux into drm-next")
    Reviewed-by: Emil Velikov
    Signed-off-by: Dave Airlie

    Arnd Bergmann
     
  • The recent fixes to lx-dmesg, now allow the command to print
    successfully on Python3, however the python interpreter wraps the bytes
    for each line with a b'' marker.

    To remove this, we need to decode the line, where .decode() will default
    to 'UTF-8'

    Link: http://lkml.kernel.org/r/d67ccf93f2479c94cb3399262b9b796e0dbefcf2.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Acked-by: Dom Cote
    Tested-by: Dom Cote
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • When built against Python 3, GDB differs in the return type for its
    read_memory function, causing the lx-dmesg command to fail.

    Now that we have an improved read_16() we can use the new
    read_memoryview() abstraction to make lx-dmesg return valid data on both
    current Python APIs

    Tested with python 3.4 and 2.7
    Tested with gdb 7.7

    Link: http://lkml.kernel.org/r/28477b727ff7fe3101fd4e426060e8a68317a639.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Dom Cote
    [kieran@bingham.xyz: Adjusted commit log to better reflect code changes]
    Tested-by: Kieran Bingham (Py2.7,Py3.4,GDB10)
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dom Cote
     
  • Change the read_u16 function so it accepts both 'str' and 'byte' as type
    for the arguments.

    When calling read_memory() from gdb API, depending on if it was built
    with 2.7 or 3.X, the format used to return the data will differ ( 'str'
    for 2.7, and 'byte' for 3.X ).

    Add a function read_memoryview() to be able to get a 'memoryview' object
    back from read_memory() both with python 2.7 and 3.X .

    Tested with python 3.4 and 2.7
    Tested with gdb 7.7

    Link: http://lkml.kernel.org/r/73621f564503137a002a639d174e4fb35f73f462.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Dom Cote
    Tested-by: Kieran Bingham (Py2.7,Py3.4,GDB10)
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dom Cote
     
  • The tasks module already provides helpers to find the task struct by
    pid, and the thread_info by task struct; however this is cumbersome to
    utilise on the gdb commandline.

    Wrap these two functionalities together in an extra single helper to
    allow exploring the thread info, from a PID value

    Link: http://lkml.kernel.org/r/dadc5667f053ec811eb3e3033d99d937fedbc93b.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Linux makes use of the Radix Tree data structure to store pointers
    indexed by integer values. This structure is utilised across many
    structures in the kernel including the IRQ descriptor tables, and
    several filesystems.

    This module provides a method to lookup values from a structure given
    its head node.

    Usage:

    The function lx_radix_tree_lookup, must be given a symbol of type struct
    radix_tree_root, and an index into that tree.

    The object returned is a generic integer value, and must be cast
    correctly to the type based on the storage in the data structure.

    For example, to print the irq descriptor in the sparse irq_desc_tree at
    index 18, try the following:

    (gdb) print (struct irq_desc)$lx_radix_tree_lookup(irq_desc_tree, 18)

    Link: http://lkml.kernel.org/r/d2028c55e50cf95a9b7f8ca0d11885174b0cc709.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • We won't see more than 2 billion CPUs any time soon, and having cpu_list
    return long makes the output of lx-cpus a bit ugly.

    Link: http://lkml.kernel.org/r/dcb45c3b0a59e0fd321fa56ff7aa398458c689b3.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kiszka
     
  • The linux kernel provides macro's for iterating against values from the
    cpu_list masks. By providing some commonly used masks, we can mirror
    the kernels helper macros with easy to use generators.

    Link: http://lkml.kernel.org/r/d045c6599771ada1999d49612ee30fd2f9acf17f.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • lx-mounts will identify current mount points based on the 'init_task'
    namespace by default, as we do not yet have a kernel thread list
    implementation to select the current running thread.

    Optionally, a user can specify a PID to list from that process'
    namespace

    Link: http://lkml.kernel.org/r/e614c7bc32d2350b4ff1627ec761a7148e65bfe6.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Provide iomem_resource and ioports_resource printers and command hooks

    It can be quite interesting to halt the kernel as it's booting and check
    to see this list as it is being populated.

    It should be useful in the event that a kernel is not booting, you can
    identify what memory resources have been registered

    Link: http://lkml.kernel.org/r/f0a6b9fa9c92af4d7ed2e7343ccc84150e9c6fc5.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Walk the VFS entries, pre-pending the iname strings to generate a full
    VFS path name from a dentry.

    Link: http://lkml.kernel.org/r/4328fdb2d15ba7f1b21ad21c2eecc38d9cfc4d13.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • If CONFIG_MODULES is not enabled, lx-lsmod tries to find a non-existent
    symbol and generates an unfriendly traceback:

    (gdb) lx-lsmod
    Address Module Size Used by
    Traceback (most recent call last):
    File "scripts/gdb/linux/modules.py", line 75, in invoke
    for module in module_list():
    File "scripts/gdb/linux/modules.py", line 24, in module_list
    module_ptr_type = module_type.get_type().pointer()
    File "scripts/gdb/linux/utils.py", line 28, in get_type
    self._type = gdb.lookup_type(self._name)
    gdb.error: No struct type named module.
    Error occurred in Python command: No struct type named module.

    Catch the error and return an empty module_list() for a clean command
    output as follows:

    (gdb) lx-lsmod
    Address Module Size Used by
    (gdb)

    Link: http://lkml.kernel.org/r/94d533819437408b85ae5864f939dd7ca6fbfcd6.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • If we attempt to read a value that is not available to GDB, an exception
    is raised. Most of the time, this is a good thing; however on occasion
    we will want to be able to determine if a symbol is available.

    By catching the exception to simply return None, we can determine if we
    tried to read an invalid value, without the exception taking our
    execution context away from us

    Link: http://lkml.kernel.org/r/c72b25c06fc66e1d68371154097e2cbb112555d8.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Simplify the module list functions with the new list_for_each_entry
    abstractions

    Link: http://lkml.kernel.org/r/ad0101c9391088608166fcec26af179868973d86.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Facilitate linked-list items by providing a generator to return the
    dereferenced, and type-cast objects from a kernel linked list

    Link: http://lkml.kernel.org/r/2b0998564e6e5abe53585d466f87e491331fd2a4.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Cc: Jeff Mahoney
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • Some macro's and defines are needed when parsing memory, and without
    compiling the kernel as -g3 they are not available in the debug-symbols.

    We use the pre-processor here to extract constants to a dedicated module
    for the linux debugger extensions

    Top level Kbuild is used to call in and generate the constants file,
    while maintaining dependencies on autogenerated files in
    include/generated

    Link: http://lkml.kernel.org/r/bc3df9c25f57ea72177c066a51a446fc19e2c27f.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Kieran Bingham
    Signed-off-by: Jan Kiszka
    Cc: Michal Marek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kieran Bingham
     
  • This takes the MODULE_REF_BASE into account.

    Link: http://lkml.kernel.org/r/d926d2d54caa034adb964b52215090cbdb875249.1462865983.git.jan.kiszka@siemens.com
    Signed-off-by: Jan Kiszka
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kiszka
     

21 May, 2016

9 commits

  • Merge more updates from Andrew Morton:

    - the rest of MM

    - KASAN updates

    - procfs updates

    - exit, fork updates

    - printk updates

    - lib/ updates

    - radix-tree testsuite updates

    - checkpatch updates

    - kprobes updates

    - a few other misc bits

    * emailed patches from Andrew Morton : (162 commits)
    samples/kprobes: print out the symbol name for the hooks
    samples/kprobes: add a new module parameter
    kprobes: add the "tls" argument for j_do_fork
    init/main.c: simplify initcall_blacklisted()
    fs/efs/super.c: fix return value
    checkpatch: improve --git shortcut
    checkpatch: reduce number of `git log` calls with --git
    checkpatch: add support to check already applied git commits
    checkpatch: add --list-types to show message types to show or ignore
    checkpatch: advertise the --fix and --fix-inplace options more
    checkpatch: whine about ACCESS_ONCE
    checkpatch: add test for keywords not starting on tabstops
    checkpatch: improve CONSTANT_COMPARISON test for structure members
    checkpatch: add PREFER_IS_ENABLED test
    lib/GCD.c: use binary GCD algorithm instead of Euclidean
    radix-tree: free up the bottom bit of exceptional entries for reuse
    dax: move RADIX_DAX_ definitions to dax.c
    radix-tree: make radix_tree_descend() more useful
    radix-tree: introduce radix_tree_replace_clear_tags()
    radix-tree: tidy up __radix_tree_create()
    ...

    Linus Torvalds
     
  • Pull driver core updates from Greg KH:
    "Here's the "big" driver core update for 4.7-rc1.

    Mostly just debugfs changes, the long-known and messy races with
    removing debugfs files should be fixed thanks to the great work of
    Nicolai Stange. We also have some isa updates in here (the x86
    maintainers told me to take it through this tree), a new warning when
    we run out of dynamic char major numbers, and a few other assorted
    changes, details in the shortlog.

    All have been in linux-next for some time with no reported issues"

    * tag 'driver-core-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (32 commits)
    Revert "base: dd: don't remove driver_data in -EPROBE_DEFER case"
    gpio: ws16c48: Utilize the ISA bus driver
    gpio: 104-idio-16: Utilize the ISA bus driver
    gpio: 104-idi-48: Utilize the ISA bus driver
    gpio: 104-dio-48e: Utilize the ISA bus driver
    watchdog: ebc-c384_wdt: Utilize the ISA bus driver
    iio: stx104: Utilize the module_isa_driver and max_num_isa_dev macros
    iio: stx104: Add X86 dependency to STX104 Kconfig option
    Documentation: Add ISA bus driver documentation
    isa: Implement the max_num_isa_dev macro
    isa: Implement the module_isa_driver macro
    pnp: pnpbios: Add explicit X86_32 dependency to PNPBIOS
    isa: Decouple X86_32 dependency from the ISA Kconfig option
    driver-core: use 'dev' argument in dev_dbg_ratelimited stub
    base: dd: don't remove driver_data in -EPROBE_DEFER case
    kernfs: Move faulting copy_user operations outside of the mutex
    devcoredump: add scatterlist support
    debugfs: unproxify files created through debugfs_create_u32_array()
    debugfs: unproxify files created through debugfs_create_blob()
    debugfs: unproxify files created through debugfs_create_bool()
    ...

    Linus Torvalds
     
  • Pull char / misc driver updates from Greg KH:
    "Here's the big char and misc driver update for 4.7-rc1.

    Lots of different tiny driver subsystems have updates here with new
    drivers and functionality. Details in the shortlog.

    All have been in linux-next with no reported issues for a while"

    * tag 'char-misc-4.7-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (125 commits)
    mcb: Delete num_cells variable which is not required
    mcb: Fixed bar number assignment for the gdd
    mcb: Replace ioremap and request_region with the devm version
    mcb: Implement bus->dev.release callback
    mcb: export bus information via sysfs
    mcb: Correctly initialize the bus's device
    mei: bus: call mei_cl_read_start under device lock
    coresight: etb10: adjust read pointer only when needed
    coresight: configuring ETF in FIFO mode when acting as link
    coresight: tmc: implementing TMC-ETF AUX space API
    coresight: moving struct cs_buffers to header file
    coresight: tmc: keep track of memory width
    coresight: tmc: make sysFS and Perf mode mutually exclusive
    coresight: tmc: dump system memory content only when needed
    coresight: tmc: adding mode of operation for link/sinks
    coresight: tmc: getting rid of multiple read access
    coresight: tmc: allocating memory when needed
    coresight: tmc: making prepare/unprepare functions generic
    coresight: tmc: splitting driver in ETB/ETF and ETR components
    coresight: tmc: cleaning up header file
    ...

    Linus Torvalds
     
  • The --git shortcut can be confused by a tag with a dash
    like v4.4-rc1.

    Improve the test to verify the expression ends with a
    dash followed by a numeric value.

    Improve the git log result to verify the " " output
    as well.

    Link: http://lkml.kernel.org/r/c4a3f759291d967641860c3a54bb81177f34325f.1462711962.git.joe@perches.com
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • checkpatch currently calls git log multiple times to first get the
    sha1 values and again to get the subject for each
    individual sha1 commit.

    Always get the sha1 and subject at the same time instead. Store the
    subject in a sha1 hash to avoid the second git log exec.

    Link: http://lkml.kernel.org/r/274efab2332ad2308ab5de85a95d255f6e2de5f3.1462711962.git.joe@perches.com
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • It's sometimes useful to scan already committed patches.

    Add --git to scan specific or multiple commits.

    Single commits are scanned with
    --git
    Multiple commits are scanned with
    --git
    --git -

    [joe@perches.com:
    o Don't exec git for each -,
    use a single "git log - "
    o Consolidate the git exec for the and - variants
    o Output 12 character commit hash ids
    o Don't scan git commit merges
    o Use -M to reduce the size of rename commits]

    Signed-off-by: "Du, Changbin"
    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Du, Changbin
     
  • The message types are not currently knowable without reading the code.
    Add a mechanism to see what they are.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • The --fix option is relatively unknown and underutilized.

    Add some text to show that it's available when style defects are found.

    Signed-off-by: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • Add a test for use of ACCESS_ONCE that could be written using READ_ONCE or
    WRITE_ONCE.

    --fix it too if desired.

    The WRITE_ONCE fixes are less correct than the coccinelle script below as
    checkpatch cannot have a completely correct "expression" mechanism because
    checkpatch works on patches and not complete files.

    $ cat access_once.cocci
    @@
    expression e1;
    expression e2;
    @@

    - ACCESS_ONCE(e1) = e2
    + WRITE_ONCE(e1, e2)

    @@
    expression e1;
    @@

    - ACCESS_ONCE(e1)
    + READ_ONCE(e1)

    Signed-off-by: Joe Perches
    Cc: Julia Lawall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches