17 Mar, 2019

8 commits


16 Feb, 2019

1 commit

  • On module unload/remove, we need to ensure that work does not run
    after we have freed resources. Concretely, cancel_delayed_work()
    may return while the callback function is still running.

    From kernel/workqueue.c:

    The work callback function may still be running on return,
    unless it returns true and the work doesn't re-arm itself.
    Explicitly flush or use cancel_delayed_work_sync() to wait on it.

    Link: https://lore.kernel.org/lkml/20190204220952.30761-1-TheSven73@googlemail.com/
    Reported-by: Sven Van Asbroeck
    Reviewed-by: Dmitry Torokhov
    Reviewed-by: Sven Van Asbroeck
    Acked-by: Robin van der Gracht
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     

22 Dec, 2018

1 commit

  • The x/y command parsing has been broken since commit 129957069e6a
    ("staging: panel: Fixed checkpatch warning about simple_strtoul()").

    Commit b34050fadb86 ("auxdisplay: charlcd: Fix and clean up handling of
    x/y commands") fixed some problems by rewriting the parsing code,
    but also broke things further by removing the check for a complete
    command before attempting to parse it. As a result, parsing is
    terminated at the first x or y character.

    This reinstates the check for a final semicolon. Whereas the original
    code use strchr(), this is wasteful seeing as the semicolon is always
    at the end of the buffer. Thus check this character directly instead.

    Signed-off-by: Mans Rullgard
    Signed-off-by: Miguel Ojeda

    Mans Rullgard
     

02 Nov, 2018

1 commit

  • Pull compiler attribute updates from Miguel Ojeda:
    "This is an effort to disentangle the include/linux/compiler*.h headers
    and bring them up to date.

    The main idea behind the series is to use feature checking macros
    (i.e. __has_attribute) instead of compiler version checks (e.g.
    GCC_VERSION), which are compiler-agnostic (so they can be shared,
    reducing the size of compiler-specific headers) and version-agnostic.

    Other related improvements have been performed in the headers as well,
    which on top of the use of __has_attribute it has amounted to a
    significant simplification of these headers (e.g. GCC_VERSION is now
    only guarding a few non-attribute macros).

    This series should also help the efforts to support compiling the
    kernel with clang and icc. A fair amount of documentation and comments
    have also been added, clarified or removed; and the headers are now
    more readable, which should help kernel developers in general.

    The series was triggered due to the move to gcc >= 4.6. In turn, this
    series has also triggered Sparse to gain the ability to recognize
    __has_attribute on its own.

    Finally, the __nonstring variable attribute series has been also
    applied on top; plus two related patches from Nick Desaulniers for
    unreachable() that came a bit afterwards"

    * tag 'compiler-attributes-for-linus-4.20-rc1' of https://github.com/ojeda/linux:
    compiler-gcc: remove comment about gcc 4.5 from unreachable()
    compiler.h: update definition of unreachable()
    Compiler Attributes: ext4: remove local __nonstring definition
    Compiler Attributes: auxdisplay: panel: use __nonstring
    Compiler Attributes: enable -Wstringop-truncation on W=1 (gcc >= 8)
    Compiler Attributes: add support for __nonstring (gcc >= 8)
    Compiler Attributes: add MAINTAINERS entry
    Compiler Attributes: add Doc/process/programming-language.rst
    Compiler Attributes: remove uses of __attribute__ from compiler.h
    Compiler Attributes: KENTRY used twice the "used" attribute
    Compiler Attributes: use feature checks instead of version checks
    Compiler Attributes: add missing SPDX ID in compiler_types.h
    Compiler Attributes: remove unneeded sparse (__CHECKER__) tests
    Compiler Attributes: homogenize __must_be_array
    Compiler Attributes: remove unneeded tests
    Compiler Attributes: always use the extra-underscores syntax
    Compiler Attributes: remove unused attributes

    Linus Torvalds
     

01 Oct, 2018

1 commit

  • Let gcc know these arrays are not meant to be NUL-terminated
    by annotating them with the new __nonstring variable attribute;
    and remove the comment since it conveys the same information.

    Tested-by: Sedat Dilek # on top of v4.19-rc5, clang 7
    Reviewed-by: Nick Desaulniers
    Reviewed-by: Luc Van Oostenryck
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     

13 Sep, 2018

2 commits

  • In order to make use of array info obtained from gpiod_get_array() and
    speed up processing of arrays matching single GPIO chip layout, that
    information must be passed to get/set array functions. Extend the
    functions' API with that additional parameter and update all users.
    Pass NULL if a user builds an array itself from single GPIOs.

    Cc: Jonathan Corbet
    Cc: Miguel Ojeda Sandonis
    Cc: Geert Uytterhoeven
    Cc: Sebastien Bourdelin
    Cc: Lukas Wunner
    Cc: Peter Korsgaard
    Cc: Peter Rosin
    Cc: Andrew Lunn
    Cc: Florian Fainelli
    Cc: "David S. Miller"
    Cc: Rojhalat Ibrahim
    Cc: Dominik Brodowski
    Cc: Russell King
    Cc: Kishon Vijay Abraham I
    Cc: Tony Lindgren
    Cc: Lars-Peter Clausen
    Cc: Michael Hennerich
    Cc: Jonathan Cameron
    Cc: Hartmut Knaack
    Cc: Peter Meerwald-Stadler
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Cc: Yegor Yefremov
    Cc: Uwe Kleine-König
    Signed-off-by: Janusz Krzysztofik
    Acked-by: Ulf Hansson
    Signed-off-by: Linus Walleij

    Janusz Krzysztofik
     
  • Most users of get/set array functions iterate consecutive bits of data,
    usually a single integer, while processing array of results obtained
    from, or building an array of values to be passed to those functions.
    Save time wasted on those iterations by changing the functions' API to
    accept bitmaps.

    All current users are updated as well.

    More benefits from the change are expected as soon as planned support
    for accepting/passing those bitmaps directly from/to respective GPIO
    chip callbacks if applicable is implemented.

    Cc: Jonathan Corbet
    Cc: Miguel Ojeda Sandonis
    Cc: Sebastien Bourdelin
    Cc: Lukas Wunner
    Cc: Peter Korsgaard
    Cc: Peter Rosin
    Cc: Andrew Lunn
    Cc: Florian Fainelli
    Cc: "David S. Miller"
    Cc: Rojhalat Ibrahim
    Cc: Dominik Brodowski
    Cc: Russell King
    Cc: Kishon Vijay Abraham I
    Cc: Tony Lindgren
    Cc: Lars-Peter Clausen
    Cc: Michael Hennerich
    Cc: Jonathan Cameron
    Cc: Hartmut Knaack
    Cc: Peter Meerwald-Stadler
    Cc: Greg Kroah-Hartman
    Cc: Jiri Slaby
    Cc: Yegor Yefremov
    Cc: Uwe Kleine-König
    Signed-off-by: Janusz Krzysztofik
    Acked-by: Ulf Hansson
    Reviewed-by: Geert Uytterhoeven
    Tested-by: Geert Uytterhoeven
    Signed-off-by: Linus Walleij

    Janusz Krzysztofik
     

19 Aug, 2018

1 commit

  • Pull char/misc driver updates from Greg KH:
    "Here is the bit set of char/misc drivers for 4.19-rc1

    There is a lot here, much more than normal, seems like everyone is
    writing new driver subsystems these days... Anyway, major things here
    are:

    - new FSI driver subsystem, yet-another-powerpc low-level hardware
    bus

    - gnss, finally an in-kernel GPS subsystem to try to tame all of the
    crazy out-of-tree drivers that have been floating around for years,
    combined with some really hacky userspace implementations. This is
    only for GNSS receivers, but you have to start somewhere, and this
    is great to see.

    Other than that, there are new slimbus drivers, new coresight drivers,
    new fpga drivers, and loads of DT bindings for all of these and
    existing drivers.

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

    * tag 'char-misc-4.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc: (255 commits)
    android: binder: Rate-limit debug and userspace triggered err msgs
    fsi: sbefifo: Bump max command length
    fsi: scom: Fix NULL dereference
    misc: mic: SCIF Fix scif_get_new_port() error handling
    misc: cxl: changed asterisk position
    genwqe: card_base: Use true and false for boolean values
    misc: eeprom: assignment outside the if statement
    uio: potential double frees if __uio_register_device() fails
    eeprom: idt_89hpesx: clean up an error pointer vs NULL inconsistency
    misc: ti-st: Fix memory leak in the error path of probe()
    android: binder: Show extra_buffers_size in trace
    firmware: vpd: Fix section enabled flag on vpd_section_destroy
    platform: goldfish: Retire pdev_bus
    goldfish: Use dedicated macros instead of manual bit shifting
    goldfish: Add missing includes to goldfish.h
    mux: adgs1408: new driver for Analog Devices ADGS1408/1409 mux
    dt-bindings: mux: add adi,adgs1408
    Drivers: hv: vmbus: Cleanup synic memory free path
    Drivers: hv: vmbus: Remove use of slow_virt_to_phys()
    Drivers: hv: vmbus: Reset the channel callback in vmbus_onoffer_rescind()
    ...

    Linus Torvalds
     

02 Aug, 2018

2 commits

  • We should get drvdata from struct device directly. Going via
    platform_device is an unneeded step back and forth.

    Signed-off-by: Wolfram Sang
    Acked-by: Linus Walleij
    Signed-off-by: Miguel Ojeda

    Wolfram Sang
     
  • The function long_sleep() calls mdelay() when in an interrupt handler.
    But only charlcd_clear_display() and charlcd_init_display calls
    long_sleep(), and my tool finds that the two functions
    are never called in an interrupt handler.
    Thus mdelay() and in_interrupt() are not necessary.

    This is found by a static analysis tool named DCNS written by myself.

    Signed-off-by: Jia-Ju Bai
    Acked-by: Willy Tarreau
    Signed-off-by: Miguel Ojeda

    Jia-Ju Bai
     

07 Jul, 2018

1 commit

  • At over 4000 #includes, is the 9th most
    #included header file in the Linux kernel. It does not need
    , so drop that header and explicitly add
    to source files that need it.

    4146 #include

    After this patch, there are 225 files that use ,
    for a reduction of around 3900 times that
    does not have to be read & parsed.

    225 #include

    This patch was build-tested on 20 different arch-es.

    It also makes these drivers SubmitChecklist#1 compliant.

    Signed-off-by: Randy Dunlap
    Reported-by: kbuild test robot # drivers/media/platform/vimc/
    Reported-by: kbuild test robot # drivers/pinctrl/pinctrl-u300.c
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

13 Jun, 2018

1 commit

  • The kmalloc() function has a 2-factor argument form, kmalloc_array(). This
    patch replaces cases of:

    kmalloc(a * b, gfp)

    with:
    kmalloc_array(a * b, gfp)

    as well as handling cases of:

    kmalloc(a * b * c, gfp)

    with:

    kmalloc(array3_size(a, b, c), gfp)

    as it's slightly less ugly than:

    kmalloc_array(array_size(a, b), c, gfp)

    This does, however, attempt to ignore constant size factors like:

    kmalloc(4 * 1024, gfp)

    though any constants defined via macros get caught up in the conversion.

    Any factors with a sizeof() of "unsigned char", "char", and "u8" were
    dropped, since they're redundant.

    The tools/ directory was manually excluded, since it has its own
    implementation of kmalloc().

    The Coccinelle script used for this was:

    // Fix redundant parens around sizeof().
    @@
    type TYPE;
    expression THING, E;
    @@

    (
    kmalloc(
    - (sizeof(TYPE)) * E
    + sizeof(TYPE) * E
    , ...)
    |
    kmalloc(
    - (sizeof(THING)) * E
    + sizeof(THING) * E
    , ...)
    )

    // Drop single-byte sizes and redundant parens.
    @@
    expression COUNT;
    typedef u8;
    typedef __u8;
    @@

    (
    kmalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kmalloc(
    - sizeof(unsigned char) * COUNT
    + COUNT
    , ...)
    )

    // 2-factor product with sizeof(type/expression) and identifier or constant.
    @@
    type TYPE;
    expression THING;
    identifier COUNT_ID;
    constant COUNT_CONST;
    @@

    (
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

    // 2-factor product, only identifiers.
    @@
    identifier SIZE, COUNT;
    @@

    - kmalloc
    + kmalloc_array
    (
    - SIZE * COUNT
    + COUNT, SIZE
    , ...)

    // 3-factor product with 1 sizeof(type) or sizeof(expression), with
    // redundant parens removed.
    @@
    expression THING;
    identifier STRIDE, COUNT;
    type TYPE;
    @@

    (
    kmalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kmalloc(
    - sizeof(THING) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    )

    // 3-factor product with 2 sizeof(variable), with redundant parens removed.
    @@
    expression THING1, THING2;
    identifier COUNT;
    type TYPE1, TYPE2;
    @@

    (
    kmalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kmalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kmalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    )

    // 3-factor product, only identifiers, with redundant parens removed.
    @@
    identifier STRIDE, SIZE, COUNT;
    @@

    (
    kmalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kmalloc(
    - COUNT * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    )

    // Any remaining multi-factor products, first at least 3-factor products,
    // when they're not all constants...
    @@
    expression E1, E2, E3;
    constant C1, C2, C3;
    @@

    (
    kmalloc(C1 * C2 * C3, ...)
    |
    kmalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kmalloc(
    - E1 * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    )

    // And then all remaining 2 factors products when they're not all constants,
    // keeping sizeof() as the second factor argument.
    @@
    expression THING, E1, E2;
    type TYPE;
    constant C1, C2, C3;
    @@

    (
    kmalloc(sizeof(THING) * C2, ...)
    |
    kmalloc(sizeof(TYPE) * C2, ...)
    |
    kmalloc(C1 * C2 * C3, ...)
    |
    kmalloc(C1 * C2, ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * (E2)
    + E2, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(TYPE) * E2
    + E2, sizeof(TYPE)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * (E2)
    + E2, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - sizeof(THING) * E2
    + E2, sizeof(THING)
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - (E1) * E2
    + E1, E2
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - (E1) * (E2)
    + E1, E2
    , ...)
    |
    - kmalloc
    + kmalloc_array
    (
    - E1 * E2
    + E1, E2
    , ...)
    )

    Signed-off-by: Kees Cook

    Kees Cook
     

13 Apr, 2018

13 commits


14 Mar, 2018

3 commits

  • The warnings are:

    drivers/auxdisplay/img-ascii-lcd.c: warning: 'err' may be used
    uninitialized in this function [-Wuninitialized]

    At lines 109 and 207. Reported by Geert using the build service
    several times, e.g.:

    https://lkml.org/lkml/2018/2/19/303

    They are two false positives, since num_chars > 0 in the three present
    configurations (boston, malta, sead3). Initialize to 0 in order to
    silence the warning.

    Cc: Geert Uytterhoeven
    Cc: Paul Burton
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • Compiling with W=1 with gcc 7.2.0 gives 2 warnings:

    drivers/auxdisplay/img-ascii-lcd.c:233: warning: Function parameter or
    member 't' not described in 'img_ascii_lcd_scroll'
    drivers/auxdisplay/img-ascii-lcd.c:233: warning: Excess function
    parameter 'arg' description in 'img_ascii_lcd_scroll'

    Cc: Paul Burton
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     
  • Compiling with W=1 with gcc 7.2.0 gives 3 warnings like:

    drivers/auxdisplay/panel.c: In function ‘panel_process_inputs’:
    drivers/auxdisplay/panel.c:1374:17: warning: this statement may fall
    through [-Wimplicit-fallthrough=]

    Cc: Willy Tarreau
    Cc: Geert Uytterhoeven
    Signed-off-by: Miguel Ojeda

    Miguel Ojeda
     

11 Jan, 2018

1 commit

  • This change resolves a new compile-time warning
    when built as a loadable module:

    WARNING: modpost: missing MODULE_LICENSE() in drivers/auxdisplay/img-ascii-lcd.o
    see include/linux/module.h for more information

    This adds the license as "GPL", which matches the header of the file.

    MODULE_DESCRIPTION and MODULE_AUTHOR are also added.

    Signed-off-by: Jesse Chan
    Signed-off-by: Arnd Bergmann
    Signed-off-by: Greg Kroah-Hartman

    Jesse Chan
     

28 Nov, 2017

1 commit


14 Nov, 2017

1 commit

  • Pull timer updates from Thomas Gleixner:
    "Yet another big pile of changes:

    - More year 2038 work from Arnd slowly reaching the point where we
    need to think about the syscalls themself.

    - A new timer function which allows to conditionally (re)arm a timer
    only when it's either not running or the new expiry time is sooner
    than the armed expiry time. This allows to use a single timer for
    multiple timeout requirements w/o caring about the first expiry
    time at the call site.

    - A new NMI safe accessor to clock real time for the printk timestamp
    work. Can be used by tracing, perf as well if required.

    - A large number of timer setup conversions from Kees which got
    collected here because either maintainers requested so or they
    simply got ignored. As Kees pointed out already there are a few
    trivial merge conflicts and some redundant commits which was
    unavoidable due to the size of this conversion effort.

    - Avoid a redundant iteration in the timer wheel softirq processing.

    - Provide a mechanism to treat RTC implementations depending on their
    hardware properties, i.e. don't inflict the write at the 0.5
    seconds boundary which originates from the PC CMOS RTC to all RTCs.
    No functional change as drivers need to be updated separately.

    - The usual small updates to core code clocksource drivers. Nothing
    really exciting"

    * 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (111 commits)
    timers: Add a function to start/reduce a timer
    pstore: Use ktime_get_real_fast_ns() instead of __getnstimeofday()
    timer: Prepare to change all DEFINE_TIMER() callbacks
    netfilter: ipvs: Convert timers to use timer_setup()
    scsi: qla2xxx: Convert timers to use timer_setup()
    block/aoe: discover_timer: Convert timers to use timer_setup()
    ide: Convert timers to use timer_setup()
    drbd: Convert timers to use timer_setup()
    mailbox: Convert timers to use timer_setup()
    crypto: Convert timers to use timer_setup()
    drivers/pcmcia: omap1: Fix error in automated timer conversion
    ARM: footbridge: Fix typo in timer conversion
    drivers/sgi-xp: Convert timers to use timer_setup()
    drivers/pcmcia: Convert timers to use timer_setup()
    drivers/memstick: Convert timers to use timer_setup()
    drivers/macintosh: Convert timers to use timer_setup()
    hwrng/xgene-rng: Convert timers to use timer_setup()
    auxdisplay: Convert timers to use timer_setup()
    sparc/led: Convert timers to use timer_setup()
    mips: ip22/32: Convert timers to use timer_setup()
    ...

    Linus Torvalds
     

04 Nov, 2017

1 commit

  • MIPS will soon not be a part of Imagination Technologies, and as such
    many @imgtec.com email addresses will no longer be valid. This patch
    updates the addresses for those who:

    - Have 10 or more patches in mainline authored using an @imgtec.com
    email address, or any patches dated within the past year.

    - Are still with Imagination but leaving as part of the MIPS business
    unit, as determined from an internal email address list.

    - Haven't already updated their email address (ie. JamesH) or expressed
    a desire to be excluded (ie. Maciej).

    - Acked v2 or earlier of this patch, which leaves Deng-Cheng, Matt &
    myself.

    New addresses are of the form firstname.lastname@mips.com, and all
    verified against an internal email address list. An entry is added to
    .mailmap for each person such that get_maintainer.pl will report the new
    addresses rather than @imgtec.com addresses which will soon be dead.

    Instances of the affected addresses throughout the tree are then
    mechanically replaced with the new @mips.com address.

    Signed-off-by: Paul Burton
    Cc: Deng-Cheng Zhu
    Cc: Deng-Cheng Zhu
    Acked-by: Dengcheng Zhu
    Cc: Matt Redfearn
    Cc: Matt Redfearn
    Acked-by: Matt Redfearn
    Cc: Andrew Morton
    Cc: linux-kernel@vger.kernel.org
    Cc: linux-mips@linux-mips.org
    Cc: trivial@kernel.org
    Signed-off-by: Linus Torvalds

    Paul Burton
     

03 Nov, 2017

1 commit

  • In preparation for unconditionally passing the struct timer_list pointer to
    all timer callbacks, switch to using the new timer_setup() and from_timer()
    to pass the timer pointer explicitly.

    Cc: Paul Burton
    Cc: Miguel Ojeda Sandonis
    Signed-off-by: Kees Cook
    Reviewed-by: Paul Burton
    Tested-by: Paul Burton # for img-ascii-lcd

    Kees Cook