1. 29 Apr, 2018 5 commits
    • Kirill Marinushkin's avatar
      staging: bcm2835-audio: Disconnect and free vchi_instance on module_exit() · 3ea74d38
      Kirill Marinushkin authored
      In the current implementation, vchi_instance is inited during the first
      call of bcm2835_audio_open_connection(), and is never freed. It causes a
      memory leak when the module `snd_bcm2835` is removed.
      
      Here is how this commit fixes it:
      
      * the VCHI context (including vchi_instance) is created once in the
        platform's devres
      * the VCHI context is allocated and connected once during module_init()
      * all created bcm2835_chips have a pointer to this VCHI context
      * bcm2835_audio_open_connection() can access the VCHI context through the
        associated bcm2835_chip
      * the VCHI context is disconnected and freed once during module_exit()
      
      After this commit is applied, I don't see other issues with the module's
      init/exit, so I also remove the associated TODO task.
      
      Steps to reproduce the memory leak before this commit:
      
      ~~~~
      root@raspberrypi:/home/pi# aplay test0.wav
      Playing WAVE 'test0.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Ster
      ^CAborted by signal Interrupt...
      root@raspberrypi:/home/pi# rmmod snd_bcm2835
      root@raspberrypi:/home/pi# modprobe snd_bcm2835
      root@raspberrypi:/home/pi# aplay test0.wav
      Playing WAVE 'test0.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Ster
      ^CAborted by signal Interrupt...
      root@raspberrypi:/home/pi# echo scan > /sys/kernel/debug/kmemleak
      root@raspberrypi:/home/pi# cat /sys/kernel/debug/kmemleak
      unreferenced object 0xb6794c00 (size 128):
        comm "aplay", pid 406, jiffies 36870 (age 116.650s)
        hex dump (first 32 bytes):
          08 a5 82 81 01 00 00 00 08 4c 79 b6 08 4c 79 b6  .........Ly..Ly.
          00 00 00 00 00 00 00 00 ad 4e ad de ff ff ff ff  .........N......
        backtrace:
          [<802af5e0>] kmem_cache_alloc_trace+0x294/0x3d0
          [<806ce620>] vchiq_initialise+0x98/0x1b0
          [<806d0b34>] vchi_initialise+0x24/0x34
          [<7f1311ec>] 0x7f1311ec
          [<7f1303bc>] 0x7f1303bc
          [<7f130590>] 0x7f130590
          [<7f111fd8>] snd_pcm_open_substream+0x68/0xc4 [snd_pcm]
          [<7f112108>] snd_pcm_open+0xd4/0x248 [snd_pcm]
          [<7f112334>] snd_pcm_playback_open+0x4c/0x6c [snd_pcm]
          [<7f0e250c>] snd_open+0xa8/0x14c [snd]
          [<802ce590>] chrdev_open+0xac/0x188
          [<802c57b4>] do_dentry_open+0x10c/0x314
          [<802c6ba8>] vfs_open+0x5c/0x88
          [<802d9a68>] path_openat+0x368/0x944
          [<802dacd4>] do_filp_open+0x70/0xc4
          [<802c6f70>] do_sys_open+0x110/0x1d4
      ~~~~
      Signed-off-by: default avatarKirill Marinushkin <k.marinushkin@gmail.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Stefan Wahren <stefan.wahren@i2se.com>
      Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
      Cc: Florian Fainelli <f.fainelli@gmail.com>
      Cc: Ray Jui <rjui@broadcom.com>
      Cc: Scott Branden <sbranden@broadcom.com>
      Cc: Andy Shevchenko <andy.shevchenko@gmail.com>
      Cc: Dan Carpenter <dan.carpenter@oracle.com>
      Cc: bcm-kernel-feedback-list@broadcom.com
      Cc: linux-rpi-kernel@lists.infradead.org
      Cc: linux-arm-kernel@lists.infradead.org
      Cc: devel@driverdev.osuosl.org
      Cc: linux-kernel@vger.kernel.org
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3ea74d38
    • Dan Carpenter's avatar
      staging: fsl-mc/dpio: Fix the error handling in probe() · 50307552
      Dan Carpenter authored
      First of all devm_memremap() function returns an error pointer, it
      doesn't return NULL.  And second we need to set the error code on these
      paths.
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      50307552
    • Yangbo Lu's avatar
      staging: fsl-dpaa2/rtc: support phc_index of ethtool_ts_info · 3c2b8df0
      Yangbo Lu authored
      This patch is to support phc_index of ethtool_ts_info.
      Also make the rtc drvier depend on FSL_DPAA2_ETH because
      this driver is only useful when PTP programs are getting
      hardware time stamps on the PTP Ethernet packets using the
      SO_TIMESTAMPING API.
      Signed-off-by: default avatarYangbo Lu <yangbo.lu@nxp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3c2b8df0
    • Yangbo Lu's avatar
      staging: fsl-dpaa2/eth: add the get_ts_info interface for ethtool · 8c03fa03
      Yangbo Lu authored
      Since hardware timestmaping has been supported in driver, this
      patch is to add the get_ts_info interface for ethtool to show
      timestamping capability.
      Signed-off-by: default avatarYangbo Lu <yangbo.lu@nxp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8c03fa03
    • Ioana Radulescu's avatar
      staging: fsl-dpaa2/eth: Add support for hardware timestamping · 859f998e
      Ioana Radulescu authored
      Hardware timestamping is supported both on Rx and Tx paths.
      On Rx, timestamping is enabled for all frames. On Tx, we
      only instruct the hardware to timestamp the frames marked
      accordingly by the stack.
      Signed-off-by: default avatarIoana Radulescu <ruxandra.radulescu@nxp.com>
      Signed-off-by: default avatarYangbo Lu <yangbo.lu@nxp.com>
      Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      859f998e
  2. 26 Apr, 2018 35 commits