01 Oct, 2020

1 commit

  • [ Upstream commit 51c1c5f6ed64c2b65a8cf89dac136273d25ca540 ]

    Added the fix so the if driver properly sent the abort it tries to remove
    it from the firmware's list of outstanding commands regardless of the abort
    status. This means that the task gets freed 'now' rather than possibly
    getting freed later when the scsi layer thinks it's leaked but still valid.

    Link: https://lore.kernel.org/r/20191114100910.6153-10-deepak.ukey@microchip.com
    Acked-by: Jack Wang
    Signed-off-by: peter chang
    Signed-off-by: Deepak Ukey
    Signed-off-by: Viswas G
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    peter chang
     

23 Sep, 2020

1 commit

  • [ Upstream commit ea403fde7552bd61bad6ea45e3feb99db77cb31e ]

    When pm8001_tag_alloc() fails, task should be freed just like it is done in
    the subsequent error paths.

    Link: https://lore.kernel.org/r/20200823091453.4782-1-dinghao.liu@zju.edu.cn
    Acked-by: Jack Wang
    Signed-off-by: Dinghao Liu
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    Dinghao Liu
     

05 Jan, 2020

1 commit

  • [ Upstream commit ce21c63ee995b7a8b7b81245f2cee521f8c3c220 ]

    Driver was missing complete() call in mpi_sata_completion which result in
    SATA abort error handling timing out. That causes the device to be left in
    the in_recovery state so subsequent commands sent to the device fail and
    the OS removes access to it.

    Link: https://lore.kernel.org/r/20191114100910.6153-2-deepak.ukey@microchip.com
    Acked-by: Jack Wang
    Signed-off-by: peter chang
    Signed-off-by: Deepak Ukey
    Signed-off-by: Viswas G
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin

    peter chang
     

08 Aug, 2019

1 commit

  • There are several occasions where variable rc is being initialized with a
    value that is never read and error is being re-assigned a little later on.
    Clean up the code by removing rc entirely and just returning the return
    value from the call to pm8001_issue_ssp_tmf

    Addresses-Coverity: ("Unused value")
    Signed-off-by: Colin Ian King
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    Colin Ian King
     

12 Jul, 2019

1 commit


27 Jun, 2019

2 commits


21 Jun, 2019

1 commit


19 Jun, 2019

1 commit


04 Apr, 2019

2 commits


26 Mar, 2019

1 commit

  • Fixes gcc '-Wunused-but-set-variable' warning:

    drivers/scsi/pm8001/pm8001_hwi.c: In function 'mpi_smp_completion':
    drivers/scsi/pm8001/pm8001_hwi.c:2901:6: warning:
    variable 'param' set but not used [-Wunused-but-set-variable]

    drivers/scsi/pm8001/pm8001_hwi.c: In function 'pm8001_bytes_dmaed':
    drivers/scsi/pm8001/pm8001_hwi.c:3247:24: warning:
    variable 'sas_ha' set but not used [-Wunused-but-set-variable]

    They're never used since introduction, so can be removed.

    Signed-off-by: YueHaibing
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    YueHaibing
     

20 Mar, 2019

1 commit


20 Jan, 2019

1 commit

  • Pull SCSI fixes from James Bottomley:
    "A set of 17 fixes. Most of these are minor or trivial.

    The one fix that may be serious is the isci one: the bug can cause hba
    parameters to be set from uninitialized memory. I don't think it's
    exploitable, but you never know"

    * tag 'scsi-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi:
    scsi: cxgb4i: add wait_for_completion()
    scsi: qla1280: set 64bit coherent mask
    scsi: ufs: Fix geometry descriptor size
    scsi: megaraid_sas: Retry reads of outbound_intr_status reg
    scsi: qedi: Add ep_state for login completion on un-reachable targets
    scsi: ufs: Fix system suspend status
    scsi: qla2xxx: Use correct number of vectors for online CPUs
    scsi: hisi_sas: Set protection parameters prior to adding SCSI host
    scsi: tcmu: avoid cmd/qfull timers updated whenever a new cmd comes
    scsi: isci: initialize shost fully before calling scsi_add_host()
    scsi: lpfc: lpfc_sli: Mark expected switch fall-throughs
    scsi: smartpqi_init: fix boolean expression in pqi_device_remove_start
    scsi: core: Synchronize request queue PM status only on successful resume
    scsi: pm80xx: reduce indentation
    scsi: qla4xxx: check return code of qla4xxx_copy_from_fwddb_param
    scsi: megaraid_sas: correct an info message
    scsi: target/iscsi: fix error msg typo when create lio_qr_cache failed
    scsi: sd: Fix cache_type_store()

    Linus Torvalds
     

09 Jan, 2019

1 commit

  • Delete tab aligning a statement with the right hand side of a preceding
    assignment rather than the left hand side.

    Found with the help of Coccinelle.

    [mkp: added space]

    Signed-off-by: Julia Lawall
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    Julia Lawall
     

08 Jan, 2019

1 commit

  • We already need to zero out memory for dma_alloc_coherent(), as such
    using dma_zalloc_coherent() is superflous. Phase it out.

    This change was generated with the following Coccinelle SmPL patch:

    @ replace_dma_zalloc_coherent @
    expression dev, size, data, handle, flags;
    @@

    -dma_zalloc_coherent(dev, size, handle, flags)
    +dma_alloc_coherent(dev, size, handle, flags)

    Suggested-by: Christoph Hellwig
    Signed-off-by: Luis Chamberlain
    [hch: re-ran the script on the latest tree]
    Signed-off-by: Christoph Hellwig

    Luis Chamberlain
     

19 Dec, 2018

1 commit

  • Most SCSI drivers want to enable "clustering", that is merging of
    segments so that they might span more than a single page. Remove the
    ENABLE_CLUSTERING define, and require drivers to explicitly set
    DISABLE_CLUSTERING to disable this feature.

    Signed-off-by: Christoph Hellwig
    Signed-off-by: Martin K. Petersen

    Christoph Hellwig
     

18 Oct, 2018

1 commit


17 Sep, 2018

2 commits

  • Fixes gcc '-Wunused-but-set-variable' warning:

    drivers/scsi/pm8001/pm80xx_hwi.c: In function 'pm8001_set_phy_profile':
    drivers/scsi/pm8001/pm80xx_hwi.c:4679:6: warning:
    variable 'page_code' set but not used [-Wunused-but-set-variable]

    Signed-off-by: YueHaibing
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    YueHaibing
     
  • Fixes gcc '-Wunused-but-set-variable' warning:

    drivers/scsi/pm8001/pm8001_sas.c: In function 'pm8001_I_T_nexus_event_handler':
    drivers/scsi/pm8001/pm8001_sas.c:1052:6: warning:
    variable 'device_id' set but not used [-Wunused-but-set-variable]

    drivers/scsi/pm8001/pm8001_sas.c: In function 'pm8001_abort_task':
    drivers/scsi/pm8001/pm8001_sas.c:1191:6: warning:
    variable 'device_id' set but not used [-Wunused-but-set-variable]

    Signed-off-by: YueHaibing
    Acked-by: Jack Wang
    Signed-off-by: Martin K. Petersen

    YueHaibing
     

12 Sep, 2018

4 commits


13 Jun, 2018

1 commit

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

    kzalloc(a * b, gfp)

    with:
    kcalloc(a * b, gfp)

    as well as handling cases of:

    kzalloc(a * b * c, gfp)

    with:

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

    as it's slightly less ugly than:

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

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

    kzalloc(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 Coccinelle script used for this was:

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

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

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

    (
    kzalloc(
    - sizeof(u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(unsigned char) * (COUNT)
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(__u8) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - sizeof(char) * COUNT
    + COUNT
    , ...)
    |
    kzalloc(
    - 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;
    @@

    (
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_ID)
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_ID
    + COUNT_ID, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * (COUNT_CONST)
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(TYPE) * COUNT_CONST
    + COUNT_CONST, sizeof(TYPE)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_ID)
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_ID
    + COUNT_ID, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * (COUNT_CONST)
    + COUNT_CONST, sizeof(THING)
    , ...)
    |
    - kzalloc
    + kcalloc
    (
    - sizeof(THING) * COUNT_CONST
    + COUNT_CONST, sizeof(THING)
    , ...)
    )

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

    - kzalloc
    + kcalloc
    (
    - 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;
    @@

    (
    kzalloc(
    - sizeof(TYPE) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE) * COUNT * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(TYPE))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * (COUNT) * STRIDE
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - sizeof(THING) * COUNT * (STRIDE)
    + array3_size(COUNT, STRIDE, sizeof(THING))
    , ...)
    |
    kzalloc(
    - 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;
    @@

    (
    kzalloc(
    - sizeof(TYPE1) * sizeof(TYPE2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(TYPE1), sizeof(TYPE2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(THING1) * sizeof(THING2) * (COUNT)
    + array3_size(COUNT, sizeof(THING1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - sizeof(TYPE1) * sizeof(THING2) * COUNT
    + array3_size(COUNT, sizeof(TYPE1), sizeof(THING2))
    , ...)
    |
    kzalloc(
    - 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;
    @@

    (
    kzalloc(
    - (COUNT) * STRIDE * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * SIZE
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - COUNT * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * STRIDE * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - (COUNT) * (STRIDE) * (SIZE)
    + array3_size(COUNT, STRIDE, SIZE)
    , ...)
    |
    kzalloc(
    - 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;
    @@

    (
    kzalloc(C1 * C2 * C3, ...)
    |
    kzalloc(
    - (E1) * E2 * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * E3
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - (E1) * (E2) * (E3)
    + array3_size(E1, E2, E3)
    , ...)
    |
    kzalloc(
    - 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;
    @@

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

    Signed-off-by: Kees Cook

    Kees Cook
     

29 May, 2018

1 commit


22 Nov, 2017

1 commit

  • With all callbacks converted, and the timer callback prototype
    switched over, the TIMER_FUNC_TYPE cast is no longer needed,
    so remove it. Conversion was done with the following scripts:

    perl -pi -e 's|\(TIMER_FUNC_TYPE\)||g' \
    $(git grep TIMER_FUNC_TYPE | cut -d: -f1 | sort -u)

    perl -pi -e 's|\(TIMER_DATA_TYPE\)||g' \
    $(git grep TIMER_DATA_TYPE | cut -d: -f1 | sort -u)

    The now unused macros are also dropped from include/linux/timer.h.

    Signed-off-by: Kees Cook

    Kees Cook
     

15 Nov, 2017

1 commit

  • Pull SCSI updates from James Bottomley:
    "This is mostly updates of the usual suspects: lpfc, qla2xxx, hisi_sas,
    megaraid_sas, pm80xx, mpt3sas, be2iscsi, hpsa. and a host of minor
    updates.

    There's no major behaviour change or additions to the core in all of
    this, so the potential for regressions should be small (biggest
    potential being in the scsi error handler changes)"

    * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (203 commits)
    scsi: lpfc: Fix hard lock up NMI in els timeout handling.
    scsi: mpt3sas: remove a stray KERN_INFO
    scsi: mpt3sas: cleanup _scsih_pcie_enumeration_event()
    scsi: aacraid: use timespec64 instead of timeval
    scsi: scsi_transport_fc: add 64GBIT and 128GBIT port speed definitions
    scsi: qla2xxx: Suppress a kernel complaint in qla_init_base_qpair()
    scsi: mpt3sas: fix dma_addr_t casts
    scsi: be2iscsi: Use kasprintf
    scsi: storvsc: Avoid excessive host scan on controller change
    scsi: lpfc: fix kzalloc-simple.cocci warnings
    scsi: mpt3sas: Update mpt3sas driver version.
    scsi: mpt3sas: Fix sparse warnings
    scsi: mpt3sas: Fix nvme drives checking for tlr.
    scsi: mpt3sas: NVMe drive support for BTDHMAPPING ioctl command and log info
    scsi: mpt3sas: Add-Task-management-debug-info-for-NVMe-drives.
    scsi: mpt3sas: scan and add nvme device after controller reset
    scsi: mpt3sas: Set NVMe device queue depth as 128
    scsi: mpt3sas: Handle NVMe PCIe device related events generated from firmware.
    scsi: mpt3sas: API's to remove nvme drive from sml
    scsi: mpt3sas: API 's to support NVMe drive addition to SML
    ...

    Linus Torvalds
     

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
     

02 Nov, 2017

2 commits

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • 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. This requires adding a pointer to
    hold the timer's target task, as there isn't a link back from slow_task.

    Cc: John Garry
    Cc: "James E.J. Bottomley"
    Cc: "Martin K. Petersen"
    Cc: Jack Wang
    Cc: lindar_liu@usish.com
    Cc: Jens Axboe
    Cc: Hannes Reinecke
    Cc: Johannes Thumshirn
    Cc: Benjamin Block
    Cc: Baoyou Xie
    Cc: Wei Yongjun
    Cc: linux-scsi@vger.kernel.org
    Signed-off-by: Kees Cook
    Reviewed-by: Martin K. Petersen
    Acked-by: John Garry # for hisi_sas part
    Tested-by: John Garry # basic sanity test for hisi_sas
    Reviewed-by: Jack Wang

    Kees Cook
     

19 Oct, 2017

9 commits