03 Aug, 2018

40 commits

  • commit 5151842b9d8732d4cbfa8400b40bff894f501b2f upstream.

    After the bio has been updated to represent the remaining sectors, reset
    bi_done so bio_rewind_iter() does not rewind further than it should.

    This resolves a bio_integrity_process() failure on reads where the
    original request was split.

    Fixes: 63573e359d05 ("bio-integrity: Restore original iterator on verify stage")
    Signed-off-by: Greg Edwards
    Signed-off-by: Jens Axboe
    Signed-off-by: Greg Kroah-Hartman

    Greg Edwards
     
  • commit 9362dd1109f87a9d0a798fbc890cb339c171ed35 upstream.

    Fixes: 72ecad22d9f1 ("block: support a full bio worth of IO for simplified bdev direct-io")
    Reviewed-by: Ming Lei
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin Wilck
    Signed-off-by: Jens Axboe
    Signed-off-by: Greg Kroah-Hartman

    Martin Wilck
     
  • commit b403ea2404889e1227812fa9657667a1deb9c694 upstream.

    If the last page of the bio is not "full", the length of the last
    vector slot needs to be corrected. This slot has the index
    (bio->bi_vcnt - 1), but only in bio->bi_io_vec. In the "bv" helper
    array, which is shifted by the value of bio->bi_vcnt at function
    invocation, the correct index is (nr_pages - 1).

    v2: improved readability following suggestions from Ming Lei.
    v3: followed a formatting suggestion from Christoph Hellwig.

    Fixes: 2cefe4dbaadf ("block: add bio_iov_iter_get_pages()")
    Reviewed-by: Hannes Reinecke
    Reviewed-by: Ming Lei
    Reviewed-by: Jan Kara
    Reviewed-by: Christoph Hellwig
    Signed-off-by: Martin Wilck
    Signed-off-by: Jens Axboe
    Signed-off-by: Greg Kroah-Hartman

    Martin Wilck
     
  • [ Upstream commit 7056a2bccc3b5afc51f9b35b30a46f0d9219968d ]

    It seems there is a classical off-by-one typo from the beginning
    when commit

    ad7f8a1f9ced ("drm/helper: add Displayport multi-stream helper (v0.6)")

    introduced a new helper.

    Fix a typo by introducing a macro constant.

    Cc: Dave Airlie
    Signed-off-by: Andy Shevchenko
    Signed-off-by: Jani Nikula
    Link: https://patchwork.freedesktop.org/patch/msgid/20180319141932.37290-1-andriy.shevchenko@linux.intel.com
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Andy Shevchenko
     
  • [ Upstream commit 5e9cfeba6abb7e1a3f240bd24eb29178f0b83716 ]

    drm_atomic_helper_shutdown() needs to release the reference held by
    plane->fb. Since commit 49d70aeaeca8 ("drm/atomic-helper: Fix leak in
    disable_all") we're doing that by calling drm_atomic_clean_old_fb() in
    drm_atomic_helper_disable_all(). This also leaves plane->fb == NULL
    afterwards. However, since drm_atomic_helper_disable_all() is also
    used by the i915 gpu reset code
    drm_atomic_helper_commit_duplicated_state() then has to undo the
    damage and put the correct plane->fb pointers back in (and also
    adjust the ref counts to match again as well).

    That approach doesn't work so well for load detection as nothing
    sets up the plane->old_fb pointers for us. This causes us to
    leak an extra reference for each plane->fb when
    drm_atomic_helper_commit_duplicated_state() calls
    drm_atomic_clean_old_fb() after load detection.

    To fix this let's call drm_atomic_clean_old_fb() only for
    drm_atomic_helper_shutdown() as that's the only time we need to
    actually drop the plane->fb references. In all the other cases
    (load detection, gpu reset) we want to leave plane->fb alone.

    v2: Don't inflict the clean_old_fbs bool to drivers (Daniel)
    v3: Squash in the revert and rewrite the commit msg (Daniel)

    Cc: martin.peres@free.fr
    Cc: chris@chris-wilson.co.uk
    Cc: Dave Airlie
    Cc: Maarten Lankhorst
    Cc: Daniel Vetter
    Signed-off-by: Ville Syrjälä
    Link: https://patchwork.freedesktop.org/patch/msgid/20180322152313.6561-3-ville.syrjala@linux.intel.com
    Reviewed-by: Maarten Lankhorst #pre-squash
    Reviewed-by: Daniel Vetter
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ville Syrjälä
     
  • [ Upstream commit 4f212e40468650e220c1770876c7f25b8e0c1ff5 ]

    To comply with eDP1.4a this bit should be set when enabling PSR2.

    Signed-off-by: José Roberto de Souza
    Reviewed-by: Rodrigo Vivi
    Signed-off-by: Rodrigo Vivi
    Link: https://patchwork.freedesktop.org/patch/msgid/20180328223046.16125-1-jose.souza@intel.com
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    José Roberto de Souza
     
  • [ Upstream commit 933e1c4a667103c4d10ebdc9505a0a6abd8c3fbd ]

    Clock gating parameter is a part of `dai_fmt`. It is supported by
    `alsa-lib` when creating a topology binary file, but ignored by kernel
    when loading this topology file.

    After applying this commit, the clock gating parameter is not ignored any
    more. This solution is backwards compatible. The existing behaviour is
    not broken, because by default the parameter value is 0 and is ignored.

    snd_soc_tplg_hw_config.clock_gated = 0 => no effect
    snd_soc_tplg_hw_config.clock_gated = 1 => SND_SOC_DAIFMT_GATED
    snd_soc_tplg_hw_config.clock_gated = 2 => SND_SOC_DAIFMT_CONT

    For example, the following config, based on
    alsa-lib/src/conf/topology/broadwell/broadwell.conf, is now supported:

    ~~~~
    SectionHWConfig."CodecHWConfig" {
    id "1"
    format "I2S" # physical audio format.
    pm_gate_clocks "true" # clock can be gated
    }

    SectionLink."Codec" {

    # used for binding to the physical link
    id "0"

    hw_configs [
    "CodecHWConfig"
    ]

    default_hw_conf_id "1"
    }
    ~~~~

    Signed-off-by: Kirill Marinushkin
    Reviewed-by: Pierre-Louis Bossart
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: Mark Brown
    Cc: Pan Xiuli
    Cc: Liam Girdwood
    Cc: linux-kernel@vger.kernel.org
    Cc: alsa-devel@alsa-project.org
    Signed-off-by: Mark Brown
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Kirill Marinushkin
     
  • [ Upstream commit a941e2fab3207cb0d57dc4ec47b1b12c8ea78b84 ]

    The values of bclk and fsync are inverted WRT the codec. But the existing
    solution already works for Broadwell, see the alsa-lib config:

    `alsa-lib/src/conf/topology/broadwell/broadwell.conf`

    This commit provides the backwards-compatible solution to fix this misuse.

    Signed-off-by: Kirill Marinushkin
    Reviewed-by: Pierre-Louis Bossart
    Tested-by: Pan Xiuli
    Tested-by: Pierre-Louis Bossart
    Cc: Jaroslav Kysela
    Cc: Takashi Iwai
    Cc: Mark Brown
    Cc: Liam Girdwood
    Cc: linux-kernel@vger.kernel.org
    Cc: alsa-devel@alsa-project.org
    Signed-off-by: Mark Brown
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Kirill Marinushkin
     
  • [ Upstream commit 90db5c829692a0a7845e977e45719b4699216bd4 ]

    The annotations there are wrong as warned:
    drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:107:35: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: warning: incorrect type in assignment (different base types)
    drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: expected unsigned short [unsigned] [short]
    drivers/media/radio/si470x/radio-si470x-i2c.c:129:24: got restricted __be16 [usertype]
    drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16
    drivers/media/radio/si470x/radio-si470x-i2c.c:163:39: warning: cast to restricted __be16

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • [ Upstream commit ad4222a0e29664666a71685a6e732923ca7c7e45 ]

    The __user annotations at the compat32 code is not right:

    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18: expected void *base
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:81:18: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23: expected unsigned int [usertype] *xcoords_y
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:232:23: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23: expected unsigned int [usertype] *ycoords_y
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:233:23: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24: expected unsigned int [usertype] *xcoords_uv
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:234:24: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24: expected unsigned int [usertype] *ycoords_uv
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:235:24: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29: expected unsigned int [usertype] *effective_width
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:296:29: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29: expected unsigned int [usertype] *effective_width
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:360:29: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19: expected struct v4l2_framebuffer *frame
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:437:19: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29: expected unsigned short *calb_grp_values
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:481:29: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:701:39: warning: cast removes address space of expression
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21: warning: incorrect type in argument 1 (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21: expected void const volatile [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:704:21: got unsigned int [usertype] *src
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43: expected struct atomisp_shading_table *shading_table
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:737:43: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44: warning: incorrect type in argument 1 (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44: expected void [noderef] *to
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:742:44: got struct atomisp_shading_table *shading_table
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41: expected struct atomisp_morph_table *morph_table
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:755:41: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44: warning: incorrect type in argument 1 (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44: expected void [noderef] *to
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:760:44: got struct atomisp_morph_table *morph_table
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40: expected struct atomisp_dvs2_coefficients *dvs2_coefs
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:772:40: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44: warning: incorrect type in argument 1 (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44: expected void [noderef] *to
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:777:44: got struct atomisp_dvs2_coefficients *dvs2_coefs
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46: expected struct atomisp_dvs_6axis_config *dvs_6axis_config
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:788:46: got void [noderef] *
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44: warning: incorrect type in argument 1 (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44: expected void [noderef] *to
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:793:44: got struct atomisp_dvs_6axis_config *dvs_6axis_config
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17: warning: incorrect type in assignment (different address spaces)
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17: expected struct atomisp_sensor_ae_bracketing_lut_entry *lut
    drivers/staging/media/atomisp/pci/atomisp2/atomisp_compat_ioctl32.c:853:17: got void [noderef] *

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • [ Upstream commit 465891fe9237b02f8d0fd26448f733fae7236f4a ]

    The SISLite specification originally defined the context control register with
    a single field of bits to represent the LISN and also stipulated that the
    register reset value be 0. The cxlflash driver took advantage of this when
    programming the LISN for the master contexts via an unconditional write - no
    other bits were preserved.

    When unmap support was added, SISLite was updated to define bit 0 of the
    context control register as a way for the AFU to notify the context owner that
    unmap operations were supported. Thus the assumptions under which the register
    is setup changed and the existing unconditional write is clobbering the unmap
    state for master contexts. This is presently not an issue due to the order in
    which the context control register is programmed in relation to the unmap bit
    being queried but should be addressed to avoid a future regression in the
    event this code is moved elsewhere.

    To remedy this issue, preserve the bits when programming the LISN field in the
    context control register. Since the LISN will now be programmed using a read
    value, assert that the initial state of the LISN field is as described in
    SISLite (0).

    Signed-off-by: Matthew R. Ochs
    Signed-off-by: Uma Krishnan
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Matthew R. Ochs
     
  • [ Upstream commit a3feb6ef50def7c91244d7bd15a3625b7b49b81f ]

    The following Oops can be encountered if a device removal or system shutdown
    is initiated while an EEH recovery is in process:

    [c000000ff2f479c0] c008000015256f18 cxlflash_pci_slot_reset+0xa0/0x100
    [cxlflash]
    [c000000ff2f47a30] c00800000dae22e0 cxl_pci_slot_reset+0x168/0x290 [cxl]
    [c000000ff2f47ae0] c00000000003ef1c eeh_report_reset+0xec/0x170
    [c000000ff2f47b20] c00000000003d0b8 eeh_pe_dev_traverse+0x98/0x170
    [c000000ff2f47bb0] c00000000003f80c eeh_handle_normal_event+0x56c/0x580
    [c000000ff2f47c60] c00000000003fba4 eeh_handle_event+0x2a4/0x338
    [c000000ff2f47d10] c0000000000400b8 eeh_event_handler+0x1f8/0x200
    [c000000ff2f47dc0] c00000000013da48 kthread+0x1a8/0x1b0
    [c000000ff2f47e30] c00000000000b528 ret_from_kernel_thread+0x5c/0xb4

    The remove handler frees AFU memory while the EEH recovery is in progress,
    leading to a race condition. This can result in a crash if the recovery thread
    tries to access this memory.

    To resolve this issue, the cxlflash remove handler will evaluate the device
    state and yield to any active reset or probing threads.

    Signed-off-by: Uma Krishnan
    Acked-by: Matthew R. Ochs
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Uma Krishnan
     
  • [ Upstream commit 3239b8cd28fd849a2023483257d35d68c5876c74 ]

    Hardware could time out Fastpath IOs one second earlier than the timeout
    provided by the host.

    For non-RAID devices, driver provides timeout value based on OS provided
    timeout value. Under certain scenarios, if the OS provides a timeout
    value of 1 second, due to above behavior hardware will timeout
    immediately.

    Increase timeout value for non-RAID fastpath IOs by 1 second.

    Signed-off-by: Shivasharan S
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Shivasharan S
     
  • [ Upstream commit 37b37d2609cb0ac267280ef27350b962d16d272e ]

    SGI/TP9100 is not an RDAC array:
    ^^^
    https://git.opensvc.com/gitweb.cgi?p=multipath-tools/.git;a=blob;f=libmultipath/hwtable.c;h=88b4700beb1d8940008020fbe4c3cd97d62f4a56;hb=HEAD#l235

    This partially reverts commit 35204772ea03 ("[SCSI] scsi_dh_rdac :
    Consolidate rdac strings together")

    [mkp: fixed up the new entries to align with rest of struct]

    Cc: NetApp RDAC team
    Cc: Hannes Reinecke
    Cc: James E.J. Bottomley
    Cc: Martin K. Petersen
    Cc: SCSI ML
    Cc: DM ML
    Signed-off-by: Xose Vazquez Perez
    Signed-off-by: Martin K. Petersen
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Xose Vazquez Perez
     
  • [ Upstream commit 02f3703934a42417021405ef336fe45add13c3d1 ]

    In of_get_regulation_constraints() we were taking the result of
    of_map_mode() (an unsigned int) and assigning it to an int. We were
    then checking whether this value was -EINVAL. Some implementers of
    of_map_mode() were returning -EINVAL (even though the return type of
    their function needed to be unsigned int) because they needed to
    signal an error back to of_get_regulation_constraints().

    In general in the regulator framework the mode is always referred to
    as an unsigned int. While we could fix this to be a signed int (the
    highest value we store in there right now is 0x8), it's actually
    pretty clean to just define the regulator mode 0x0 (the lack of any
    bits set) as an invalid mode. Let's do that.

    Fixes: 5e5e3a42c653 ("regulator: of: Add support for parsing initial and suspend modes")
    Suggested-by: Javier Martinez Canillas
    Signed-off-by: Douglas Anderson
    Reviewed-by: Javier Martinez Canillas
    Signed-off-by: Mark Brown
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Douglas Anderson
     
  • [ Upstream commit b7e1e6859fbf60519fd82d7120cee106a6019512 ]

    The OMAP3 ISP driver manages its MMU mappings through the IOMMU-aware
    ARM DMA backend. The current code creates a dma_iommu_mapping and
    attaches this to the ISP device, but never detaches the mapping in
    either the probe failure paths or the driver remove path resulting
    in an unbalanced mapping refcount and a memory leak. Fix this properly.

    Reported-by: Pavel Machek
    Signed-off-by: Suman Anna
    Tested-by: Pavel Machek
    Reviewed-by: Laurent Pinchart
    Signed-off-by: Sakari Ailus
    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Suman Anna
     
  • [ Upstream commit ad2fdcdf75d169e7a5aec6c7cb421c0bec8ec711 ]

    In crypto_authenc_setkey we save pointers to the authenc keys in
    a local variable of type struct crypto_authenc_keys and we don't
    zeroize it after use. Fix this and don't leak pointers to the
    authenc keys.

    Signed-off-by: Tudor Ambarus
    Signed-off-by: Herbert Xu
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Tudor-Dan Ambarus
     
  • [ Upstream commit 31545df391d58a3bb60e29b1192644a6f2b5a8dd ]

    In crypto_authenc_esn_setkey we save pointers to the authenc keys
    in a local variable of type struct crypto_authenc_keys and we don't
    zeroize it after use. Fix this and don't leak pointers to the
    authenc keys.

    Signed-off-by: Tudor Ambarus
    Signed-off-by: Herbert Xu
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Tudor-Dan Ambarus
     
  • [ Upstream commit 5d111f5190848d6fb1c414dc57797efea3526a2f ]

    wait_for_connected() wait till a port change status to
    USB_PORT_STAT_CONNECTION, but this is not possible if
    the port is unpowered. The loop will only exit at timeout.

    Such case take place if an over-current incident happen
    while system is in S3. Then during resume wait_for_connected()
    will wait 2s, which may be noticeable by the user.

    Signed-off-by: Dominik Bozek
    Signed-off-by: Kuppuswamy Sathyanarayanan
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dominik Bozek
     
  • [ Upstream commit ece97f3a5fb50cf5f98886fbc63c9665f2bb199d ]

    simpleImage generation was broken for some time. This patch is fixing
    steps how simpleImage.*.ub file is generated. Steps are objdump of
    vmlinux and create .ub.
    Also make sure that there is striped elf version with .strip suffix.

    Signed-off-by: Michal Simek
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Michal Simek
     
  • [ Upstream commit 050f810e238f268670f14a8f8b793ba2dbf2e92f ]

    Platform device core assumes the ownership of dev.platform_data as
    well as that it is dynamically allocated and it will try to kfree it
    as a part of platform_device_release(). Change the code to use
    platform_device_add_data() n instead of a pointer to a static memory
    to avoid causing a BUG() when calling platform_device_put().

    The problem can be reproduced by artificially enabling the error path
    of platform_device_add() call (around line 357).

    Note that this change also allows us to constify imx7_pgc_domains,
    since we no longer need to be able to modify it.

    Cc: Stefan Agner
    Cc: Lucas Stach
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: Andrey Smirnov
    Signed-off-by: Shawn Guo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Andrey Smirnov
     
  • [ Upstream commit c1c734cb1f54b062f7e67ffc9656d82f5b412b9c ]

    As part of bringup I ended up wanting to call an earlycon driver by a
    name that was exactly 16-bytes big, specifically "qcom_geni_serial".

    Unfortunately, when I tried this I found that things compiled just
    fine. They just didn't work.

    Specifically the compiler felt perfectly justified in initting the
    ".name" field of "struct earlycon_id" with the full 16-bytes and just
    skipping the '\0'. Needless to say, that behavior didn't seem ideal,
    but I guess someone must have allowed it for a reason.

    One way to fix this is to shorten the name field to 15 bytes and then
    add an extra byte after that nobody touches. This should always be
    initted to 0 and we're golden.

    There are, of course, other ways to fix this too. We could audit all
    the users of the "name" field and make them stop at both null
    termination or at 16 bytes. We could also just make the name field
    much bigger so that we're not likely to run into this. ...but both
    seem like we'll just hit the bug again.

    Signed-off-by: Douglas Anderson
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Douglas Anderson
     
  • [ Upstream commit d8caf662b4aeeb2ac83ac0b22e40db88e9360c77 ]

    ldlm_lock_create() gets a resource, but don't put it on
    all failure paths. It should.

    Signed-off-by: NeilBrown
    Reviewed-by: James Simmons
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    NeilBrown
     
  • [ Upstream commit 1b60f6dfa38403ff7c4d0b4b7ecdb810f9789a2a ]

    In ll_xattr_set_common() detect the removexattr() case correctly by
    testing for a NULL value as well as XATTR_REPLACE.

    Signed-off-by: John L. Hammond
    Intel-bug-id: https://jira.hpdd.intel.com/browse/LU-10787
    Reviewed-on: https://review.whamcloud.com/
    Reviewed-by: Dmitry Eremin
    Reviewed-by: James Simmons
    Signed-off-by: James Simmons
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    James Simmons
     
  • [ Upstream commit 8113b89fc615cfb531df0334fb3a091cf6a45ce0 ]

    The bail out branch in case of a invalid tx_pos missed a semaphore
    release. Dan Carpenter found this with a static checker.

    Fixes: d1eab9dec610 ("staging: vchiq_core: Bail out in case of invalid tx_pos")
    Reported-by: Dan Carpenter
    Signed-off-by: Stefan Wahren
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Stefan Wahren
     
  • [ Upstream commit 23bcc480dac204c7dbdf49d96b2c918ed98223c2 ]

    Current implementation of auditing by executable name only implements
    the 'equal' operator. This patch extends it to also support the 'not
    equal' operator.

    See: https://github.com/linux-audit/audit-kernel/issues/53

    Signed-off-by: Ondrej Mosnacek
    Reviewed-by: Richard Guy Briggs
    Signed-off-by: Paul Moore
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Ondrej Mosnáček
     
  • [ Upstream commit f700546682a62a87a9615121a37ee7452dab4b76 ]

    Following overflow kernel panic is observed on some platforms while
    loading the driver. It is fixed if dynamically allocated memory is
    passed to SDIO instead of static one

    [ 927.513963] nommu_map_sg: overflow 17d54064ba7c+20 of device mask ffffffff
    [ 927.517712] Modules linked in: rsi_sdio(+) cmac bnep arc4 rsi_91x mac80211 cfg80211
    btrsi rfcomm bluetooth ecdh_generic snd_soc_sst_bytcr_rt5660
    [ 927.517861] CPU: 0 PID: 1624 Comm: insmod Tainted: G W 4.15.0-1000 #1
    [ 927.517870] RIP: 0010:sdhci_send_command+0x5f0/0xa90 [sdhci]
    [ 927.517873] RSP: 0000:ffffac3fc064b6d8 EFLAGS: 00010086
    [ 927.517895] Call Trace:
    [ 927.517908] ? __schedule+0x3cd/0x890
    [ 927.517915] ? mod_timer+0x17b/0x3c0
    [ 927.517922] sdhci_request+0x7c/0xf0 [sdhci]
    [ 927.517928] __mmc_start_request+0x5a/0x170
    [ 927.517932] mmc_start_request+0x74/0x90
    [ 927.517936] mmc_wait_for_req+0x87/0xe0
    [ 927.517940] mmc_io_rw_extended+0x2fd/0x330
    [ 927.517946] ? mmc_wait_data_done+0x30/0x30
    [ 927.517951] sdio_io_rw_ext_helper+0x160/0x210
    [ 927.517956] sdio_writesb+0x1d/0x20
    [ 927.517966] rsi_sdio_write_register_multiple+0x68/0x110 [rsi_sdio]
    [ 927.517976] rsi_hal_device_init+0x357/0x910 [rsi_91x]
    [ 927.517983] ? rsi_hal_device_init+0x357/0x910 [rsi_91x]
    [ 927.517990] rsi_probe+0x2c6/0x450 [rsi_sdio]
    [ 927.517995] sdio_bus_probe+0xfc/0x110
    [ 927.518000] driver_probe_device+0x2b3/0x490
    [ 927.518005] __driver_attach+0xdf/0xf0
    [ 927.518008] ? driver_probe_device+0x490/0x490
    [ 927.518014] bus_for_each_dev+0x6c/0xc0
    [ 927.518018] driver_attach+0x1e/0x20
    [ 927.518021] bus_add_driver+0x1f4/0x270
    [ 927.518028] ? rsi_sdio_ack_intr+0x50/0x50 [rsi_sdio]
    [ 927.518031] driver_register+0x60/0xe0
    [ 927.518038] ? rsi_sdio_ack_intr+0x50/0x50 [rsi_sdio]
    [ 927.518041] sdio_register_driver+0x20/0x30
    [ 927.518047] rsi_module_init+0x16/0x40 [rsi_sdio]

    Signed-off-by: Siva Rebbagondla
    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Kalle Valo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Siva Rebbagondla
     
  • [ Upstream commit 78e450719c702784e42af6da912d3692fd3da0cb ]

    While performing cleanup, driver is messing with card->ocr
    value by not masking rocr against ocr_avail. Below panic
    is observed with some of the SDIO host controllers due to
    this. Issue is resolved by reverting incorrect modifications
    to vdd.

    [ 927.423821] mmc1: Invalid vdd 0x1f
    [ 927.423925] Modules linked in: rsi_sdio(+) cmac bnep arc4 rsi_91x
    mac80211 cfg80211 btrsi rfcomm bluetooth ecdh_generic
    [ 927.424073] CPU: 0 PID: 1624 Comm: insmod Tainted: G W 4.15.0-1000-caracalla #1
    [ 927.424075] Hardware name: Dell Inc. Edge Gateway 3003/ , BIOS 01.00.06 01/22/2018
    [ 927.424082] RIP: 0010:sdhci_set_power_noreg+0xdd/0x190[sdhci]
    [ 927.424085] RSP: 0018:ffffac3fc064b930 EFLAGS: 00010282
    [ 927.424107] Call Trace:
    [ 927.424118] sdhci_set_power+0x5a/0x60 [sdhci]
    [ 927.424125] sdhci_set_ios+0x360/0x3b0 [sdhci]
    [ 927.424133] mmc_set_initial_state+0x92/0x120
    [ 927.424137] mmc_power_up.part.34+0x33/0x1d0
    [ 927.424141] mmc_power_up+0x17/0x20
    [ 927.424147] mmc_sdio_runtime_resume+0x2d/0x50
    [ 927.424151] mmc_runtime_resume+0x17/0x20
    [ 927.424156] __rpm_callback+0xc4/0x200
    [ 927.424161] ? idr_alloc_cyclic+0x57/0xd0
    [ 927.424165] ? mmc_runtime_suspend+0x20/0x20
    [ 927.424169] rpm_callback+0x24/0x80
    [ 927.424172] ? mmc_runtime_suspend+0x20/0x20
    [ 927.424176] rpm_resume+0x4b3/0x6c0
    [ 927.424181] __pm_runtime_resume+0x4e/0x80
    [ 927.424188] driver_probe_device+0x41/0x490
    [ 927.424192] __driver_attach+0xdf/0xf0
    [ 927.424196] ? driver_probe_device+0x490/0x490
    [ 927.424201] bus_for_each_dev+0x6c/0xc0
    [ 927.424205] driver_attach+0x1e/0x20
    [ 927.424209] bus_add_driver+0x1f4/0x270
    [ 927.424217] ? rsi_sdio_ack_intr+0x50/0x50 [rsi_sdio]
    [ 927.424221] driver_register+0x60/0xe0
    [ 927.424227] ? rsi_sdio_ack_intr+0x50/0x50 [rsi_sdio]
    [ 927.424231] sdio_register_driver+0x20/0x30
    [ 927.424237] rsi_module_init+0x16/0x40 [rsi_sdio]

    Signed-off-by: Siva Rebbagondla
    Signed-off-by: Amitkumar Karwar
    Signed-off-by: Kalle Valo
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Siva Rebbagondla
     
  • [ Upstream commit 300eec7c0a2495f771709c7642aa15f7cc148b83 ]

    ic_nameservers, which stores the list of name servers discovered by
    ipconfig, is initialised (i.e. has all of its elements set to NONE, or
    0xffffffff) by ic_nameservers_predef() in the following scenarios:

    - before the "ip=" and "nfsaddrs=" kernel command line parameters are
    parsed (in ip_auto_config_setup());
    - before autoconfiguring via DHCP or BOOTP (in ic_bootp_init()), in
    order to clear any values that may have been set after parsing "ip="
    or "nfsaddrs=" and are no longer needed.

    This means that ic_nameservers_predef() is not called when neither "ip="
    nor "nfsaddrs=" is specified on the kernel command line. In this
    scenario, every element in ic_nameservers remains set to 0x00000000,
    which is indistinguishable from ANY and causes pnp_seq_show() to write
    the following (bogus) information to /proc/net/pnp:

    #MANUAL
    nameserver 0.0.0.0
    nameserver 0.0.0.0
    nameserver 0.0.0.0

    This is potentially problematic for systems that blindly link
    /etc/resolv.conf to /proc/net/pnp.

    Ensure that ic_nameservers is also initialised when neither "ip=" nor
    "nfsaddrs=" are specified by calling ic_nameservers_predef() in
    ip_auto_config(), but only when ip_auto_config_setup() was not called
    earlier. This causes the following to be written to /proc/net/pnp, and
    is consistent with what gets written when ipconfig is configured
    manually but no name servers are specified on the kernel command line:

    #MANUAL

    Signed-off-by: Chris Novakovic
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Chris Novakovic
     
  • [ Upstream commit 2ea009095c6e7396915a1d0dd480c41f02985f79 ]

    The method struct drm_connector_helper_funcs::mode_valid is defined
    as returning an 'enum drm_mode_status' but the driver implementation
    for this method, psb_intel_lvds_mode_valid(), uses an 'int' for it.

    Fix this by using 'enum drm_mode_status' for psb_intel_lvds_mode_valid().

    Signed-off-by: Luc Van Oostenryck
    Signed-off-by: Daniel Vetter
    Link: https://patchwork.freedesktop.org/patch/msgid/20180424131458.2060-1-luc.vanoostenryck@gmail.com
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Luc Van Oostenryck
     
  • [ Upstream commit 4dc93fcf0b95dc3fda4db917effae31fbb8ad2a8 ]

    On the RAH registers there are semantic differences on the meaning of
    the "queue" parameter for traffic steering depending on the controller
    model: there is the 82575 meaning, which "queue" means a RX Hardware
    Queue, and the i350 meaning, where it is a reception pool.

    The previous behaviour was having no effect for i210 based controllers
    because the QSEL bit of the RAH register wasn't being set.

    This patch separates the condition in discrete cases, so the different
    handling is clearer.

    Fixes: 83c21335c876 ("igb: improve MAC filter handling")
    Signed-off-by: Vinicius Costa Gomes
    Tested-by: Aaron Brown
    Signed-off-by: Jeff Kirsher
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Vinicius Costa Gomes
     
  • [ Upstream commit 7c8b77f81552c2b0e5d9c560da70bc4149ce66a5 ]

    Heiko Stübner justified pretty well the change in commit e330eb86ba0b
    ("ARM: multi_v7_defconfig: enable Rockchip io-domain driver"). This
    change is also needed for arm64 rockchip boards, so, do the same for arm64.

    The io-domain driver is necessary to notify the soc about voltages
    changes happening on supplying regulators. Probably the most important
    user right now is the mmc tuning code, where the soc needs to get
    notified when the voltage is dropped to the 1.8V point.

    As this option is necessary to successfully tune UHS cards etc, it
    should get built in. Otherwise, tuning will fail with,

    dwmmc_rockchip fe320000.dwmmc: All phases bad!
    mmc0: tuning execution failed: -5

    Signed-off-by: Enric Balletbo i Serra
    Acked-by: Robin Murphy
    Signed-off-by: Heiko Stuebner
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Enric Balletbo i Serra
     
  • [ Upstream commit ea48e877994f086af481427bac110aa63686c3ce ]

    Add a new lightnvm quirk to identify CNEX’s Granby controller.

    Signed-off-by: Wei Xu
    Reviewed-by: Javier González
    Reviewed-by: Matias Bjørling
    Signed-off-by: Keith Busch
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Wei Xu
     
  • [ Upstream commit 1c74d5c0de0c2cc29fef97a19251da2ad6f579bd ]

    Currently we are enabling handling of interrupts specific to Tegra124+
    which happen to overlap with previous generations. Let's specify
    interrupts mask per SoC generation for consistency and in a preparation
    of squashing of Tegra20 driver into the common one that will enable
    handling of GART faults which may be undesirable by newer generations.

    Signed-off-by: Dmitry Osipenko
    Signed-off-by: Thierry Reding
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dmitry Osipenko
     
  • [ Upstream commit bf3fbdfbec947cdd04b2f2c4bce11534c8786eee ]

    The ISR reads interrupts-enable mask, but doesn't utilize it. Apply the
    mask to the interrupt status and don't handle interrupts that MC driver
    haven't asked for. Kernel would disable spurious MC IRQ and report the
    error. This would happen only in a case of a very severe bug.

    Signed-off-by: Dmitry Osipenko
    Signed-off-by: Thierry Reding
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Dmitry Osipenko
     
  • [ Upstream commit 02acc80d19edb0d5684c997b2004ad19f9f5236e ]

    try_to_wake_up() might invoke delayacct_blkio_end() while holding the
    pi_lock (which is a raw_spinlock_t). delayacct_blkio_end() acquires
    task_delay_info.lock which is a spinlock_t. This causes a might sleep splat
    on -RT where non raw spinlocks are converted to 'sleeping' spinlocks.

    task_delay_info.lock is only held for a short amount of time so it's not a
    problem latency wise to make convert it to a raw spinlock.

    Signed-off-by: Sebastian Andrzej Siewior
    Signed-off-by: Thomas Gleixner
    Cc: Balbir Singh
    Link: https://lkml.kernel.org/r/20180423161024.6710-1-bigeasy@linutronix.de
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Sebastian Andrzej Siewior
     
  • [ Upstream commit de5b55c1d4e30740009864eb35ce4ed856aac01d ]

    Use raw-locks in stop_machine() to allow locking in irq-off and
    preempt-disabled regions on -RT. This also documents the possible locking
    context in general.

    [bigeasy: update patch description.]
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Sebastian Andrzej Siewior
    Link: https://lkml.kernel.org/r/20180423191635.6014-1-bigeasy@linutronix.de
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     
  • [ Upstream commit bb084c0f61d659f0e6d371b096e0e57998f191d6 ]

    The documentation was wrong, gpiod_get_direction() returns 0/1 instead
    of the GPIOF_* flags. The docs were fixed with commit 94fc73094abe47
    ("gpio: correct docs about return value of gpiod_get_direction"). Now,
    fix this user (until a better, system-wide solution is in place).

    Signed-off-by: Wolfram Sang
    Acked-by: Daniel Thompson
    Reviewed-by: Simon Horman
    Signed-off-by: Lee Jones
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Wolfram Sang
     
  • [ Upstream commit 7e5d05e18ba1ed491c6f836edee7f0b90f3167bc ]

    We need to introduce a new compatible name for the Meson-AXG SoC
    in order to support the RMII 100M ethernet PHY, since the PRG_ETH0
    register of the dwmac glue layer is changed from previous old SoC.

    Signed-off-by: Yixun Lan
    Reviewed-by: Rob Herring
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Yixun Lan
     
  • [ Upstream commit 38e62046d4c95272e2fb001d2d72baf48fa090e9 ]

    This patch fixes the handling of the check when number of vports
    are detected to be more than available TPQs. Current handling causes
    an out of bounds access in hclge_map_tqp().

    Fixes: 7df7dad633e2 ("net: hns3: Refactor the mapping of tqp to vport")
    Signed-off-by: Huazhong Tan
    Signed-off-by: Peng Li
    Signed-off-by: Salil Mehta
    Signed-off-by: David S. Miller
    Signed-off-by: Sasha Levin
    Signed-off-by: Greg Kroah-Hartman

    Huazhong Tan