1. 22 Jun, 2017 20 commits
  2. 18 Jun, 2017 20 commits
    • Johan Hovold's avatar
      NFC: nfcmrvl: allow gpio 0 for reset signalling · e33a3f84
      Johan Hovold authored
      Allow gpio 0 to be used for reset signalling, and instead use negative
      errnos to disable the reset functionality.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      e33a3f84
    • Johan Hovold's avatar
      NFC: nfcmrvl_usb: use interface as phy device · 0d1ca88b
      Johan Hovold authored
      Use the USB-interface rather than parent USB-device device, which is
      what this driver binds to, when registering the nci device.
      
      Note that using the right device is important when dealing with device-
      managed resources as the interface can be unbound independently of the
      parent device.
      
      Also note that private device pointer had already been set by
      nfcmrvl_nci_register_dev() so the redundant assignment can therefore be
      removed.
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      0d1ca88b
    • Johan Hovold's avatar
      NFC: nfcmrvl_uart: fix device-node leak during probe · d0607aa4
      Johan Hovold authored
      Make sure to release the device-node reference when done parsing the
      node.
      
      Fixes: e097dc62 ("NFC: nfcmrvl: add UART driver")
      Cc: Vincent Cuissard <cuissard@marvell.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      d0607aa4
    • Johan Hovold's avatar
      NFC: nfcmrvl: fix firmware-management initialisation · 45dd39b9
      Johan Hovold authored
      The nci-device was never deregistered in the event that
      fw-initialisation failed.
      
      Fix this by moving the firmware initialisation before device
      registration since the firmware work queue should be available before
      registering.
      
      Note that this depends on a recent fix that moved device-name
      initialisation back to to nci_allocate_device() as the
      firmware-workqueue name is now derived from the nfc-device name.
      
      Fixes: 3194c687 ("NFC: nfcmrvl: add firmware download support")
      Cc: stable <stable@vger.kernel.org>     # 4.4
      Cc: Vincent Cuissard <cuissard@marvell.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      45dd39b9
    • Johan Hovold's avatar
      NFC: nfcmrvl: use nfc-device for firmware download · e5834ac2
      Johan Hovold authored
      Use the nfc- rather than phy-device in firmware-management code that
      needs a valid struct device.
      
      This specifically fixes a NULL-pointer dereference in
      nfcmrvl_fw_dnld_init() during registration when the underlying tty is
      one end of a Unix98 pty.
      
      Note that the driver still uses the phy device for any debugging, which
      is fine for now.
      
      Fixes: 3194c687 ("NFC: nfcmrvl: add firmware download support")
      Cc: stable <stable@vger.kernel.org>     # 4.4
      Cc: Vincent Cuissard <cuissard@marvell.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      e5834ac2
    • Johan Hovold's avatar
      NFC: nfcmrvl: do not use device-managed resources · 0cbe4011
      Johan Hovold authored
      This specifically fixes resource leaks in the registration error paths.
      
      Device-managed resources is a bad fit for this driver as devices can be
      registered from the n_nci line discipline. Firstly, a tty may not even
      have a corresponding device (should it be part of a Unix98 pty)
      something which would lead to a NULL-pointer dereference when
      registering resources.
      
      Secondly, if the tty has a class device, its lifetime exceeds that of
      the line discipline, which means that resources would leak every time
      the line discipline is closed (or if registration fails).
      
      Currently, the devres interface was only being used to request a reset
      gpio despite the fact that it was already explicitly freed in
      nfcmrvl_nci_unregister_dev() (along with the private data), something
      which also prevented the resource leak at close.
      
      Note that the driver treats gpio number 0 as invalid despite it being
      perfectly valid. This will be addressed in a follow-up patch.
      
      Fixes: b2fe288e ("NFC: nfcmrvl: free reset gpio")
      Fixes: 4a2b947f ("NFC: nfcmrvl: add chip reset management")
      Cc: stable <stable@vger.kernel.org>     # 4.2: b2fe288e
      Cc: Vincent Cuissard <cuissard@marvell.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      0cbe4011
    • Johan Hovold's avatar
      NFC: nfcmrvl_uart: add missing tty-device sanity check · 15e0c59f
      Johan Hovold authored
      Make sure to check the tty-device pointer before trying to access the
      parent device to avoid dereferencing a NULL-pointer when the tty is one
      end of a Unix98 pty.
      
      Fixes: e097dc62 ("NFC: nfcmrvl: add UART driver")
      Cc: stable <stable@vger.kernel.org>     # 4.2
      Cc: Vincent Cuissard <cuissard@marvell.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      15e0c59f
    • Johan Hovold's avatar
      NFC: fix broken device allocation · 20777bc5
      Johan Hovold authored
      Commit 7eda8b8e ("NFC: Use IDR library to assing NFC devices IDs")
      moved device-id allocation and struct-device initialisation from
      nfc_allocate_device() to nfc_register_device().
      
      This broke just about every nfc-device-registration error path, which
      continue to call nfc_free_device() that tries to put the device
      reference of the now uninitialised (but zeroed) struct device:
      
      kobject: '(null)' (ce316420): is not initialized, yet kobject_put() is being called.
      
      The late struct-device initialisation also meant that various work
      queues whose names are derived from the nfc device name were also
      misnamed:
      
        421 root         0 SW<  [(null)_nci_cmd_]
        422 root         0 SW<  [(null)_nci_rx_w]
        423 root         0 SW<  [(null)_nci_tx_w]
      
      Move the id-allocation and struct-device initialisation back to
      nfc_allocate_device() and fix up the single call site which did not use
      nfc_free_device() in its error path.
      
      Fixes: 7eda8b8e ("NFC: Use IDR library to assing NFC devices IDs")
      Cc: stable <stable@vger.kernel.org>     # 3.8
      Cc: Samuel Ortiz <sameo@linux.intel.com>
      Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      20777bc5
    • Mark Greer's avatar
      NFC: trf7970a: Clean up coding style issues · e2f0f671
      Mark Greer authored
      Clean up coding style issues according to scripts/Lindent.
      Some scripts/Lindent changes were reverted when it appeared
      to make the code less readable or when it made the line run
      over 80 characters.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      e2f0f671
    • Mark Greer's avatar
      NFC: trf7970a: Convert to descriptor based GPIO interface · d34e48d6
      Mark Greer authored
      The trf7970a driver uses the deprecated integer-based GPIO consumer
      interface so convert it to use the new descriptor-based GPIO
      consumer interface.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      d34e48d6
    • Mark Greer's avatar
      NFC: trf7970a: Enable pins are active high not active low · 1877d2c5
      Mark Greer authored
      The example DTS code for the trf7970a sets the GPIOs for the EN
      and EN2 pins to active low when they are really active high so
      correct the error.
      Acked-by: default avatarRob Herring <robh@kernel.org>
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      1877d2c5
    • Mark Greer's avatar
      NFC: trf7970a: Remove support for 'vin-voltage-override' DT property · a34631c2
      Mark Greer authored
      The 'vin-voltage-override' DT property is used by the trf7970a
      driver to override the voltage presented to the driver by the
      regulator subsystem.  This is unnecessary as properly specifying
      the regulator chain via DT properties will accomplish the same
      thing.  Therefore, remove support for 'vin-voltage-override'.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      a34631c2
    • Mark Greer's avatar
      NFC: trf7970a: Remove useless comment · fcc652f6
      Mark Greer authored
      The last entry in the trf7970a_of_match[] table must be an empty
      entry to demarcate the end of the table.  Currently, there is a
      comment indicating this but it is obvious so remove the comment.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      fcc652f6
    • Mark Greer's avatar
      NFC: trf7970a: Only check 'en2-rf-quirk' if EN2 is specified · afcb9fbd
      Mark Greer authored
      The quirk indicated by the 'en2-rf-quirk' device tree property
      is only relevant when there is a GPIO connected to the EN2 pin
      of the trf7970a. This means we should only check for 'en2-rf-quirk'
      when EN2 is specified in the 'ti,enable-gpios' property of the
      device tree.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      afcb9fbd
    • Mark Greer's avatar
      NFC: trf7970a: Fix inaccurate comment in trf7970a_probe() · 69f984f0
      Mark Greer authored
      As of commit ce69b95c ("NFC: Make EN2 pin optional in the
      TRF7970A driver"), only the GPIO for the 'EN' enable pin needs
      to be specified in the device tree so update the comments that
      says both 'EN' and 'EN2' must be specified.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      69f984f0
    • Mark Greer's avatar
      NFC: trf7970a: Don't de-assert EN2 unless it was asserted · 67dec192
      Mark Greer authored
      When the trf7970a part has the bug related to 'en2-rf-quirk',
      the GPIO connected to the EN2 pin will not be asserted by the
      driver when powering up so it shouldn't be de-asserted when
      powering down.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      67dec192
    • Mark Greer's avatar
      MAINTAINERS: NFC: trf7970a: Add Mark Greer as maintainer · 581132b6
      Mark Greer authored
      Add Mark Greer as the maintainer of the trf7970a NFC driver.
      Signed-off-by: default avatarMark Greer <mgreer@animalcreek.com>
      Signed-off-by: default avatarSamuel Ortiz <sameo@linux.intel.com>
      581132b6
    • Florian Fainelli's avatar
      net: dsa: Fix legacy probing · 06d4d450
      Florian Fainelli authored
      After commit 6d3c8c0d ("net: dsa: Remove master_netdev and
      use dst->cpu_dp->netdev") and a29342e7 ("net: dsa: Associate
      slave network device with CPU port") we would be seeing NULL pointer
      dereferences when accessing dst->cpu_dp->netdev too early. In the legacy
      code, we actually know early in advance the master network device, so
      pass it down to the relevant functions.
      
      Fixes: 6d3c8c0d ("net: dsa: Remove master_netdev and use dst->cpu_dp->netdev")
      Fixes: a29342e7 ("net: dsa: Associate slave network device with CPU port")
      Reported-by: default avatarJason Cobham <jcobham@questertangent.com>
      Tested-by: default avatarJason Cobham <jcobham@questertangent.com>
      Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
      Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      06d4d450
    • Dave Watson's avatar
      tls: update Kconfig · d807ec65
      Dave Watson authored
      Missing crypto deps for some platforms.
      Default to n for new module.
      
      config: m68k-amcore_defconfig (attached as .config)
      compiler: m68k-linux-gcc (GCC) 4.9.0
      
      make.cross ARCH=m68k
      All errors (new ones prefixed by >>):
      
         net/built-in.o: In function `tls_set_sw_offload':
      >> (.text+0x732f8): undefined reference to `crypto_alloc_aead'
         net/built-in.o: In function `tls_set_sw_offload':
      >> (.text+0x7333c): undefined reference to `crypto_aead_setkey'
         net/built-in.o: In function `tls_set_sw_offload':
      >> (.text+0x73354): undefined reference to `crypto_aead_setauthsize'
      Reported-by: default avatarkbuild test robot <fengguang.wu@intel.com>
      Signed-off-by: default avatarDave Watson <davejwatson@fb.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d807ec65
    • David S. Miller's avatar
      Merge branch 'net-remove-dst-garbage-collector-logic' · ffe95ecf
      David S. Miller authored
      Wei Wang says:
      
      ====================
      remove dst garbage collector logic
      
      The current mechanism of dst release is a bit complicated. It is because
      the users of dst get divided into 2 situations:
        1. Most users take the reference count when using a dst and release the
           reference count when done.
        2. Exceptional users like IPv4/IPv6/decnet/xfrm routing code do not take
           reference count when referencing to a dst due to some histotic reasons.
      
      Due to those exceptional use cases in 2, reference count being 0 is not an
      adequate evidence to indicate that no user is using this dst. So users in 1
      can't free the dst simply based on reference count being 0 because users in
      2 might still hold reference to it.
      Instead, a dst garbage list is needed to hold the dst entries that already
      get removed by the users in 2 but are still held by users in 1. And a periodic
      garbage collector task is run to check all the dst entries in the list to see
      if the users in 1 have released the reference to those dst entries.
      If so, the dst is now ready to be freed.
      
      This logic introduces unnecessary complications in the dst code which makes it
      hard to understand and to debug.
      
      In order to get rid of the whole dst garbage collector (gc) and make the dst
      code more unified and simplified, we can make the users in 2 also take reference
      count on the dst and release it properly when done.
      This way, dst can be safely freed once the refcount drops to 0 and no gc
      thread is needed anymore.
      
      This patch series' target is to completely get rid of dst gc logic and free
      dst based on reference count only.
      Patch 1-3 are preparation patches to do some cleanup/improvement on the existing
      code to make later work easier.
      Patch 4-21 are real implementations.
      In these patches, a temporary flag DST_NOGC is used to help transition
      those exceptional users one by one. Once every component is transitioned,
      this temporary flag is removed.
      By the end of this patch series, all dst are refcounted when being used
      and released when done. And dst will be freed when its refcount drops to 0.
      No dst gc task is running anymore.
      
      Note: This patch series depends on the decnet fix that was sent right before:
            "decnet: always not take dst->__refcnt when inserting dst into hash table"
      
      v2:
        add curly braces in udp_v4/6_early_demux() in patch 02
        add EXPORT_SYMBOL() for dst_dev_put() in patch 05
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      ffe95ecf