Skip to content
  1. Oct 07, 2017
  2. Oct 06, 2017
    • Tim Hansen's avatar
      net/ipv6: remove unused err variable on icmpv6_push_pending_frames · cc71b7b0
      Tim Hansen authored
      int err is unused by icmpv6_push_pending_frames(), this patch returns removes the variable and returns the function with 0.
      
      git bisect shows this variable has been around since linux has been in git in commit 1da177e4.
      
      This was found by running make coccicheck M=net/ipv6/ on linus' tree on commit 77ede3a0
      
       (current HEAD as of this patch).
      
      Signed-off-by: default avatarTim Hansen <devtimhansen@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cc71b7b0
    • Lin Zhang's avatar
      net: ipv6: remove unused code in ipv6_find_hdr() · 380537b4
      Lin Zhang authored
      
      
      Storing the left length of skb into 'len' actually has no effect
      so we can remove it.
      
      Signed-off-by: default avatarLin Zhang <xiaolou4617@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      380537b4
    • David S. Miller's avatar
      Merge branch 'libbpf-support-more-map-options' · d433b3f3
      David S. Miller authored
      
      
      Craig Gallek says:
      
      ====================
      libbpf: support more map options
      
      The functional change to this series is the ability to use flags when
      creating maps from object files loaded by libbpf.  In order to do this,
      the first patch updates the library to handle map definitions that
      differ in size from libbpf's struct bpf_map_def.
      
      For object files with a larger map definition, libbpf will continue to load
      if the unknown fields are all zero, otherwise the map is rejected.  If the
      map definition in the object file is smaller than expected, libbpf will use
      zero as a default value in the missing fields.
      ====================
      
      Acked-by: default avatarAlexei Starovoitov <ast@kernel.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d433b3f3
    • Craig Gallek's avatar
      libbpf: use map_flags when creating maps · fe9b5f77
      Craig Gallek authored
      
      
      This is required to use BPF_MAP_TYPE_LPM_TRIE or any other map type
      which requires flags.
      
      Signed-off-by: default avatarCraig Gallek <kraig@google.com>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fe9b5f77
    • Craig Gallek's avatar
      libbpf: parse maps sections of varying size · b13c5c14
      Craig Gallek authored
      
      
      This library previously assumed a fixed-size map options structure.
      Any new options were ignored.  In order to allow the options structure
      to grow and to support parsing older programs, this patch updates
      the maps section parsing to handle varying sizes.
      
      Object files with maps sections smaller than expected will have the new
      fields initialized to zero.  Object files which have larger than expected
      maps sections will be rejected unless all of the unrecognized data is zero.
      
      This change still assumes that each map definition in the maps section
      is the same size.
      
      Signed-off-by: default avatarCraig Gallek <kraig@google.com>
      Acked-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Acked-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b13c5c14
    • Colin Ian King's avatar
      net: qcom/emac: make function emac_isr static · d009313c
      Colin Ian King authored
      
      
      The function emac_isr is local to the source and does not need to
      be in global scope, so make it static.
      
      Cleans up sparse warnings:
      symbol 'emac_isr' was not declared. Should it be static?
      
      Signed-off-by: default avatarColin Ian King <colin.king@canonical.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d009313c
    • David S. Miller's avatar
      Merge branch 'tcp-improving-RACK-cpu-performance' · cec451ce
      David S. Miller authored
      
      
      Yuchung Cheng says:
      
      ====================
      tcp: improving RACK cpu performance
      
      This patch set improves the CPU consumption of the RACK TCP loss
      recovery algorithm, in particular for high-speed networks. Currently,
      for every ACK in recovery RACK can potentially iterate over all sent
      packets in the write queue. On large BDP networks with non-trivial
      losses the RACK write queue walk CPU usage becomes unreasonably high.
      
      This patch introduces a new queue in TCP that keeps only skbs sent and
      not yet (s)acked or marked lost, in time order instead of sequence
      order.  With that, RACK can examine this time-sorted list and only
      check packets that were sent recently, within the reordering window,
      per ACK. This is the fastest way without any write queue walks. The
      number of skbs examined per ACK is reduced by orders of magnitude.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      cec451ce
    • Yuchung Cheng's avatar
      tcp: a small refactor of RACK loss detection · bef06223
      Yuchung Cheng authored
      
      
      Refactor the RACK loop to improve readability and speed up the checks.
      
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bef06223
    • Yuchung Cheng's avatar
      tcp: more efficient RACK loss detection · 043b87d7
      Yuchung Cheng authored
      
      
      Use the new time-ordered list to speed up RACK. The detection
      logic is identical. But since the list is chronologically ordered
      by skb_mstamp and contains only skbs not yet acked or sacked,
      RACK can abort the loop upon hitting skbs that were sent more
      recently. On YouTube servers this patch reduces the iterations on
      write queue by 40x. The improvement is even bigger with large
      BDP networks.
      
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      043b87d7
    • Eric Dumazet's avatar
      tcp: new list for sent but unacked skbs for RACK recovery · e2080072
      Eric Dumazet authored
      
      
      This patch adds a new queue (list) that tracks the sent but not yet
      acked or SACKed skbs for a TCP connection. The list is chronologically
      ordered by skb->skb_mstamp (the head is the oldest sent skb).
      
      This list will be used to optimize TCP Rack recovery, which checks
      an skb's timestamp to judge if it has been lost and needs to be
      retransmitted. Since TCP write queue is ordered by sequence instead
      of sent time, RACK has to scan over the write queue to catch all
      eligible packets to detect lost retransmission, and iterates through
      SACKed skbs repeatedly.
      
      Special cares for rare events:
      1. TCP repair fakes skb transmission so the send queue needs adjusted
      2. SACK reneging would require re-inserting SACKed skbs into the
         send queue. For now I believe it's not worth the complexity to
         make RACK work perfectly on SACK reneging, so we do nothing here.
      3. Fast Open: currently for non-TFO, send-queue correctly queues
         the pure SYN packet. For TFO which queues a pure SYN and
         then a data packet, send-queue only queues the data packet but
         not the pure SYN due to the structure of TFO code. This is okay
         because the SYN receiver would never respond with a SACK on a
         missing SYN (i.e. SYN is never fast-retransmitted by SACK/RACK).
      
      In order to not grow sk_buff, we use an union for the new list and
      _skb_refdst/destructor fields. This is a bit complicated because
      we need to make sure _skb_refdst and destructor are properly zeroed
      before skb is cloned/copied at transmit, and before being freed.
      
      Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e2080072
    • Avinash Repaka's avatar
      RDS: IB: Initialize max_items based on underlying device attributes · b1fb67fa
      Avinash Repaka authored
      
      
      Use max_1m_mrs/max_8k_mrs while setting max_items, as the former
      variables are set based on the underlying device attributes.
      
      Signed-off-by: default avatarAvinash Repaka <avinash.repaka@oracle.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b1fb67fa
    • Avinash Repaka's avatar
      RDS: IB: Limit the scope of has_fr/has_fmr variables · 9dff9936
      Avinash Repaka authored
      
      
      This patch fixes the scope of has_fr and has_fmr variables as they are
      needed only in rds_ib_add_one().
      
      Signed-off-by: default avatarAvinash Repaka <avinash.repaka@oracle.com>
      Acked-by: default avatarSantosh Shilimkar <santosh.shilimkar@oracle.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      9dff9936
    • Tim Hansen's avatar
      net/ipv4: Remove unused variable in route.c · 1bcdca3f
      Tim Hansen authored
      
      
      int rc is unmodified after initalization in net/ipv4/route.c, this patch simply cleans up that variable and returns 0.
      
      This was found with coccicheck M=net/ipv4/ on linus' tree.
      
      Signed-off-by: default avatarTim Hansen <devtimhansen@gmail.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1bcdca3f
    • Wei Wang's avatar
      tcp: clean up TFO server's initial tcp_rearm_rto() call · 6d05081e
      Wei Wang authored
      
      
      This commit does a cleanup and moves tcp_rearm_rto() call in the TFO
      server case into a previous spot in tcp_rcv_state_process() to make
      it more compact.
      This is only a cosmetic change.
      
      Suggested-by: default avatarYuchung Cheng <ycheng@google.com>
      Signed-off-by: default avatarWei Wang <weiwan@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6d05081e
    • Wei Wang's avatar
      tcp: uniform the set up of sockets after successful connection · 27204aaa
      Wei Wang authored
      
      
      Currently in the TCP code, the initialization sequence for cached
      metrics, congestion control, BPF, etc, after successful connection
      is very inconsistent. This introduces inconsistent bevhavior and is
      prone to bugs. The current call sequence is as follows:
      
      (1) for active case (tcp_finish_connect() case):
              tcp_mtup_init(sk);
              icsk->icsk_af_ops->rebuild_header(sk);
              tcp_init_metrics(sk);
              tcp_call_bpf(sk, BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB);
              tcp_init_congestion_control(sk);
              tcp_init_buffer_space(sk);
      
      (2) for passive case (tcp_rcv_state_process() TCP_SYN_RECV case):
              icsk->icsk_af_ops->rebuild_header(sk);
              tcp_call_bpf(sk, BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB);
              tcp_init_congestion_control(sk);
              tcp_mtup_init(sk);
              tcp_init_buffer_space(sk);
              tcp_init_metrics(sk);
      
      (3) for TFO passive case (tcp_fastopen_create_child()):
              inet_csk(child)->icsk_af_ops->rebuild_header(child);
              tcp_init_congestion_control(child);
              tcp_mtup_init(child);
              tcp_init_metrics(child);
              tcp_call_bpf(child, BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB);
              tcp_init_buffer_space(child);
      
      This commit uniforms the above functions to have the following sequence:
              tcp_mtup_init(sk);
              icsk->icsk_af_ops->rebuild_header(sk);
              tcp_init_metrics(sk);
              tcp_call_bpf(sk, BPF_SOCK_OPS_ACTIVE/PASSIVE_ESTABLISHED_CB);
              tcp_init_congestion_control(sk);
              tcp_init_buffer_space(sk);
      This sequence is the same as the (1) active case. We pick this sequence
      because this order correctly allows BPF to override the settings
      including congestion control module and initial cwnd, etc from
      the route, and then allows the CC module to see those settings.
      
      Suggested-by: default avatarNeal Cardwell <ncardwell@google.com>
      Tested-by: default avatarNeal Cardwell <ncardwell@google.com>
      Signed-off-by: default avatarWei Wang <weiwan@google.com>
      Acked-by: default avatarNeal Cardwell <ncardwell@google.com>
      Acked-by: default avatarYuchung Cheng <ycheng@google.com>
      Acked-by: default avatarEric Dumazet <edumazet@google.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      27204aaa
    • David S. Miller's avatar
      Merge branch 'VSOCK-sock_diag' · 5820299a
      David S. Miller authored
      
      
      Stefan Hajnoczi says:
      
      ====================
      VSOCK: add sock_diag interface
      
      v3:
       * Rebased onto net-next/master and resolved Hyper-V transport conflict
      
      v2:
       * Moved tests to tools/testing/vsock/.  I was unable to put them in selftests/
         because they require manual setup of a VMware/KVM guest.
       * Moved to __vsock_in_bound/connected_table() to af_vsock.h
       * Fixed local variable ordering in Patch 4
      
      There is currently no way for userspace to query open AF_VSOCK sockets.  This
      means ss(8), netstat(8), and other utilities cannot display AF_VSOCK sockets.
      
      This patch series adds the netlink sock_diag interface for AF_VSOCK.  Userspace
      programs sent a DUMP request including an sk_state bitmap to filter sockets
      based on their state (connected, listening, etc).  The vsock_diag.ko module
      replies with information about matching sockets.  This userspace ABI is defined
      in <linux/vm_sockets_diag.h>.
      
      The final patch adds a test suite that exercises the basic cases.
      
      Jorgen and Dexuan: I have only tested the virtio transport but this should also
      work for VMCI and Hyper-V.  Please give it a shot if you have time.
      ====================
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5820299a
    • Stefan Hajnoczi's avatar
      VSOCK: add tools/testing/vsock/vsock_diag_test · 0b025033
      Stefan Hajnoczi authored
      
      
      This patch adds tests for the vsock_diag.ko module.
      
      These tests are not self-tests because they require manual set up of a
      KVM or VMware guest.  Please see tools/testing/vsock/README for
      instructions.
      
      The control.h and timeout.h infrastructure can be used for additional
      AF_VSOCK tests in the future.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      0b025033
    • Stefan Hajnoczi's avatar
      VSOCK: add sock_diag interface · 413a4317
      Stefan Hajnoczi authored
      
      
      This patch adds the sock_diag interface for querying sockets from
      userspace.  Tools like ss(8) and netstat(8) can use this interface to
      list open sockets.
      
      The userspace ABI is defined in <linux/vm_sockets_diag.h> and includes
      netlink request and response structs.  The request can query sockets
      based on their sk_state (e.g. listening sockets only) and the response
      contains socket information fields including the local/remote addresses,
      inode number, etc.
      
      This patch does not dump VMCI pending sockets because I have only tested
      the virtio transport, which does not use pending sockets.  Support can
      be added later by extending vsock_diag_dump() if needed by VMCI users.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      413a4317
    • Stefan Hajnoczi's avatar
      VSOCK: use TCP state constants for sk_state · 3b4477d2
      Stefan Hajnoczi authored
      
      
      There are two state fields: socket->state and sock->sk_state.  The
      socket->state field uses SS_UNCONNECTED, SS_CONNECTED, etc while the
      sock->sk_state typically uses values that match TCP state constants
      (TCP_CLOSE, TCP_ESTABLISHED).  AF_VSOCK does not follow this convention
      and instead uses SS_* constants for both fields.
      
      The sk_state field will be exposed to userspace through the vsock_diag
      interface for ss(8), netstat(8), and other programs.
      
      This patch switches sk_state to TCP state constants so that the meaning
      of this field is consistent with other address families.  Not just
      AF_INET and AF_INET6 use the TCP constants, AF_UNIX and others do too.
      
      The following mapping was used to convert the code:
      
        SS_FREE -> TCP_CLOSE
        SS_UNCONNECTED -> TCP_CLOSE
        SS_CONNECTING -> TCP_SYN_SENT
        SS_CONNECTED -> TCP_ESTABLISHED
        SS_DISCONNECTING -> TCP_CLOSING
        VSOCK_SS_LISTEN -> TCP_LISTEN
      
      In __vsock_create() the sk_state initialization was dropped because
      sock_init_data() already initializes sk_state to TCP_CLOSE.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      3b4477d2
    • Stefan Hajnoczi's avatar
      VSOCK: move __vsock_in_bound/connected_table() to af_vsock.h · bf359b81
      Stefan Hajnoczi authored
      
      
      The vsock_diag.ko module will need to check socket table membership.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      bf359b81
    • Stefan Hajnoczi's avatar
      VSOCK: export socket tables for sock_diag interface · 44f20980
      Stefan Hajnoczi authored
      
      
      The socket table symbols need to be exported from vsock.ko so that the
      vsock_diag.ko module will be able to traverse sockets.
      
      Signed-off-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      44f20980
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 53954cf8
      David S. Miller authored
      
      
      Just simple overlapping changes.
      
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      53954cf8
    • Linus Torvalds's avatar
      Merge tag 'pm-4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 7a92616c
      Linus Torvalds authored
      Pull power management fix from Rafael Wysocki:
       "This fixes a code ordering issue in the main suspend-to-idle loop that
        causes some "low power S0 idle" conditions to be incorrectly reported
        as unmet with suspend/resume debug messages enabled"
      
      * tag 'pm-4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        PM / s2idle: Invoke the ->wake() platform callback earlier
      7a92616c
    • Rafael J. Wysocki's avatar
      Merge branch 'pm-sleep' · ca935f8e
      Rafael J. Wysocki authored
      * pm-sleep:
        PM / s2idle: Invoke the ->wake() platform callback earlier
      ca935f8e
    • Linus Torvalds's avatar
      Merge tag 'for-4.14/dm-fixes' of... · 076264ad
      Linus Torvalds authored
      Merge tag 'for-4.14/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm
      
      Pull device mapper fixes from Mike Snitzer:
      
       - a stable fix for the alignment of the event number reported at the
         end of the 'DM_LIST_DEVICES' ioctl.
      
       - a couple stable fixes for the DM crypt target.
      
       - a DM raid health status reporting fix.
      
      * tag 'for-4.14/dm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
        dm raid: fix incorrect status output at the end of a "recover" process
        dm crypt: reject sector_size feature if device length is not aligned to it
        dm crypt: fix memory leak in crypt_ctr_cipher_old()
        dm ioctl: fix alignment of event number in the device list
      076264ad
    • Jonathan Brassow's avatar
      dm raid: fix incorrect status output at the end of a "recover" process · 41dcf197
      Jonathan Brassow authored
      
      
      There are three important fields that indicate the overall health and
      status of an array: dev_health, sync_ratio, and sync_action.  They tell
      us the condition of the devices in the array, and the degree to which
      the array is synchronized.
      
      This commit fixes a condition that is reported incorrectly.  When a member
      of the array is being rebuilt or a new device is added, the "recover"
      process is used to synchronize it with the rest of the array.  When the
      process is complete, but the sync thread hasn't yet been reaped, it is
      possible for the state of MD to be:
       mddev->recovery = [ MD_RECOVERY_RUNNING MD_RECOVERY_RECOVER MD_RECOVERY_DONE ]
       curr_resync_completed = <max dev size> (but not MaxSector)
       and all rdevs to be In_sync.
      This causes the 'array_in_sync' output parameter that is passed to
      rs_get_progress() to be computed incorrectly and reported as 'false' --
      or not in-sync.  This in turn causes the dev_health status characters to
      be reported as all 'a', rather than the proper 'A'.
      
      This can cause erroneous output for several seconds at a time when tools
      will want to be checking the condition due to events that are raised at
      the end of a sync process.  Fix this by properly calculating the
      'array_in_sync' return parameter in rs_get_progress().
      
      Also, remove an unnecessary intermediate 'recovery_cp' variable in
      rs_get_progress().
      
      Signed-off-by: default avatarJonathan Brassow <jbrassow@redhat.com>
      Signed-off-by: default avatarMike Snitzer <snitzer@redhat.com>
      41dcf197
    • Linus Torvalds's avatar
      Merge tag 'sound-4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · 0f380715
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "A collection of small fixes, mostly with stable ones:
      
       - X32 ABI fix for PCM; likely not so many people suffer from it, but
         still better to fix
      
       - Two minor kernel warning fixes on USB audio devices spotted by
         syzkaller
      
       - Regression fix of echoaudio due to its inconsistent dimension
      
       - Fix for HBR support on Intel DP audio, on some recent chips
      
       - USB-audio quirk for yet another Plantronics devices
      
       - Fix for potential double-fetch in ASIHPI FIFO queue"
      
      * tag 'sound-4.14-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
        ALSA: usx2y: Suppress kernel warning at page allocation failures
        Revert "ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members"
        ALSA: usb-audio: Check out-of-bounds access by corrupted buffer descriptor
        ALSA: pcm: Fix structure definition for X32 ABI
        ALSA: usb-audio: Add sample rate quirk for Plantronics C310/C520-M
        ALSA: hda - program ICT bits to support HBR audio
        ALSA: asihpi: fix a potential double-fetch bug when copying puhm
        ALSA: compress: Remove unused variable
      0f380715
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid · 77ede3a0
      Linus Torvalds authored
      Pull HID subsystem fixes from Jiri Kosina:
      
       - buffer management size fix for i2c-hid driver, from Adrian Salido
      
       - tool ID regression fixes for Wacom driver from Jason Gerecke
      
       - a few small assorted fixes and a few device ID additions
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid:
        Revert "HID: multitouch: Support ALPS PTP stick with pid 0x120A"
        HID: hidraw: fix power sequence when closing device
        HID: wacom: Always increment hdev refcount within wacom_get_hdev_data
        HID: wacom: generic: Clear ABS_MISC when tool leaves proximity
        HID: wacom: generic: Send MSC_SERIAL and ABS_MISC when leaving prox
        HID: i2c-hid: allocate hid buffers for real worst case
        HID: rmi: Make sure the HID device is opened on resume
        HID: multitouch: Support ALPS PTP stick with pid 0x120A
        HID: multitouch: support buttons and trackpoint on Lenovo X1 Tab Gen2
        HID: wacom: Correct coordinate system of touchring and pen twist
        HID: wacom: Properly report negative values from Intuos Pro 2 Bluetooth
        HID: multitouch: Fix system-control buttons not working
        HID: add multi-input quirk for IDC6680 touchscreen
        HID: wacom: leds: Don't try to control the EKR's read-only LEDs
        HID: wacom: bits shifted too much for 9th and 10th buttons
      77ede3a0
  3. Oct 05, 2017