1. 28 10月, 2020 2 次提交
    • D
      drm/shme-helpers: Fix dma_buf_mmap forwarding bug · f49a51bf
      Daniel Vetter 提交于
      When we forward an mmap to the dma_buf exporter, they get to own
      everything. Unfortunately drm_gem_mmap_obj() overwrote
      vma->vm_private_data after the driver callback, wreaking the
      exporter complete. This was noticed because vb2_common_vm_close blew
      up on mali gpu with panfrost after commit 26d3ac3c
      ("drm/shmem-helpers: Redirect mmap for imported dma-buf").
      
      Unfortunately drm_gem_mmap_obj also acquires a surplus reference that
      we need to drop in shmem helpers, which is a bit of a mislayer
      situation. Maybe the entire dma_buf_mmap forwarding should be pulled
      into core gem code.
      
      Note that the only two other drivers which forward mmap in their own
      code (etnaviv and exynos) get this somewhat right by overwriting the
      gem mmap code. But they seem to still have the leak. This might be a
      good excuse to move these drivers over to shmem helpers completely.
      Reviewed-by: NBoris Brezillon <boris.brezillon@collabora.com>
      Acked-by: NChristian König <christian.koenig@amd.com>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Sumit Semwal <sumit.semwal@linaro.org>
      Cc: Lucas Stach <l.stach@pengutronix.de>
      Cc: Russell King <linux+etnaviv@armlinux.org.uk>
      Cc: Christian Gmeiner <christian.gmeiner@gmail.com>
      Cc: Inki Dae <inki.dae@samsung.com>
      Cc: Joonyoung Shim <jy0922.shim@samsung.com>
      Cc: Seung-Woo Kim <sw0312.kim@samsung.com>
      Cc: Kyungmin Park <kyungmin.park@samsung.com>
      Fixes: 26d3ac3c ("drm/shmem-helpers: Redirect mmap for imported dma-buf")
      Cc: Boris Brezillon <boris.brezillon@collabora.com>
      Cc: Thomas Zimmermann <tzimmermann@suse.de>
      Cc: Gerd Hoffmann <kraxel@redhat.com>
      Cc: Rob Herring <robh@kernel.org>
      Cc: dri-devel@lists.freedesktop.org
      Cc: linux-media@vger.kernel.org
      Cc: linaro-mm-sig@lists.linaro.org
      Cc: <stable@vger.kernel.org> # v5.9+
      Reported-and-tested-by: piotr.oniszczuk@gmail.com
      Cc: piotr.oniszczuk@gmail.com
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201027214922.3566743-1-daniel.vetter@ffwll.ch
      f49a51bf
    • M
      drm/vc4: hdmi: Avoid sleeping in atomic context · 58d04369
      Maxime Ripard 提交于
      When running the trigger hook, ALSA by default will take a spinlock, and
      thus will run the trigger hook in atomic context.
      
      However, our HDMI driver will send the infoframes as part of the trigger
      hook, and part of that process is to wait for a bit to be cleared for up to
      100ms. To be nicer to the system, that wait has some usleep_range that
      interact poorly with the atomic context.
      
      There's several ways we can fix this, but the more obvious one is to make
      ALSA take a mutex instead by setting the nonatomic flag on the DAI link.
      That doesn't work though, since now the cyclic callback installed by the
      dmaengine helpers in ALSA will take a mutex, while that callback is run by
      dmaengine's virt-chan code in a tasklet where sleeping is not allowed
      either.
      
      Given the delay we need to poll the bit for, changing the usleep_range for
      a udelay and keep running it from a context where interrupts are disabled
      is not really a good option either.
      
      However, we can move the infoframe setup code in the hw_params hook, like
      is usually done in other HDMI controllers, that isn't protected by a
      spinlock and thus where we can sleep. Infoframes will be sent on a regular
      basis anyway, and since hw_params is where the audio parameters that end up
      in the infoframes are setup, this also makes a bit more sense.
      
      Fixes: bb7d7856 ("drm/vc4: Add HDMI audio support")
      Suggested-by: NMark Brown <broonie@kernel.org>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Reviewed-by: NMark Brown <broonie@kernel.org>
      Reviewed-by: NTakashi Iwai <tiwai@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201027101558.427256-1-maxime@cerno.tech
      58d04369
  2. 27 10月, 2020 5 次提交
  3. 26 10月, 2020 6 次提交
  4. 25 10月, 2020 2 次提交
    • H
      i2c: core: Restore acpi_walk_dep_device_list() getting called after registering the ACPI i2c devs · 8058d699
      Hans de Goede 提交于
      Commit 21653a41 ("i2c: core: Call i2c_acpi_install_space_handler()
      before i2c_acpi_register_devices()")'s intention was to only move the
      acpi_install_address_space_handler() call to the point before where
      the ACPI declared i2c-children of the adapter where instantiated by
      i2c_acpi_register_devices().
      
      But i2c_acpi_install_space_handler() had a call to
      acpi_walk_dep_device_list() hidden (that is I missed it) at the end
      of it, so as an unwanted side-effect now acpi_walk_dep_device_list()
      was also being called before i2c_acpi_register_devices().
      
      Move the acpi_walk_dep_device_list() call to the end of
      i2c_acpi_register_devices(), so that it is once again called *after*
      the i2c_client-s hanging of the adapter have been created.
      
      This fixes the Microsoft Surface Go 2 hanging at boot.
      
      Fixes: 21653a41 ("i2c: core: Call i2c_acpi_install_space_handler() before i2c_acpi_register_devices()")
      Link: https://bugzilla.kernel.org/show_bug.cgi?id=209627Reported-by: NRainer Finke <rainer@finke.cc>
      Reported-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      Suggested-by: NMaximilian Luz <luzmaximilian@gmail.com>
      Tested-by: NKieran Bingham <kieran.bingham@ideasonboard.com>
      Signed-off-by: NHans de Goede <hdegoede@redhat.com>
      Signed-off-by: NWolfram Sang <wsa@kernel.org>
      8058d699
    • G
      random32: make prandom_u32() output unpredictable · c51f8f88
      George Spelvin 提交于
      Non-cryptographic PRNGs may have great statistical properties, but
      are usually trivially predictable to someone who knows the algorithm,
      given a small sample of their output.  An LFSR like prandom_u32() is
      particularly simple, even if the sample is widely scattered bits.
      
      It turns out the network stack uses prandom_u32() for some things like
      random port numbers which it would prefer are *not* trivially predictable.
      Predictability led to a practical DNS spoofing attack.  Oops.
      
      This patch replaces the LFSR with a homebrew cryptographic PRNG based
      on the SipHash round function, which is in turn seeded with 128 bits
      of strong random key.  (The authors of SipHash have *not* been consulted
      about this abuse of their algorithm.)  Speed is prioritized over security;
      attacks are rare, while performance is always wanted.
      
      Replacing all callers of prandom_u32() is the quick fix.
      Whether to reinstate a weaker PRNG for uses which can tolerate it
      is an open question.
      
      Commit f227e3ec ("random32: update the net random state on interrupt
      and activity") was an earlier attempt at a solution.  This patch replaces
      it.
      Reported-by: NAmit Klein <aksecurity@gmail.com>
      Cc: Willy Tarreau <w@1wt.eu>
      Cc: Eric Dumazet <edumazet@google.com>
      Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>
      Cc: Andy Lutomirski <luto@kernel.org>
      Cc: Kees Cook <keescook@chromium.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: tytso@mit.edu
      Cc: Florian Westphal <fw@strlen.de>
      Cc: Marc Plumb <lkml.mplumb@gmail.com>
      Fixes: f227e3ec ("random32: update the net random state on interrupt and activity")
      Signed-off-by: NGeorge Spelvin <lkml@sdf.org>
      Link: https://lore.kernel.org/netdev/20200808152628.GA27941@SDF.ORG/
      [ willy: partial reversal of f227e3ec; moved SIPROUND definitions
        to prandom.h for later use; merged George's prandom_seed() proposal;
        inlined siprand_u32(); replaced the net_rand_state[] array with 4
        members to fix a build issue; cosmetic cleanups to make checkpatch
        happy; fixed RANDOM32_SELFTEST build ]
      Signed-off-by: NWilly Tarreau <w@1wt.eu>
      c51f8f88
  5. 24 10月, 2020 2 次提交
  6. 23 10月, 2020 16 次提交
  7. 22 10月, 2020 7 次提交