Middle button of trackpoint doesn't work

Bug #1715271 reported by AaronMa on 2017-09-06
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
HWE Next
Critical
AaronMa
linux (Ubuntu)
Critical
AaronMa
Xenial
Critical
Unassigned
Zesty
Critical
Unassigned
Artful
Critical
AaronMa

Bug Description

Middle button doesn't work on several Thinkpad laptops like E570, E475, E470, E575 and X1Carbon.

When middle button fails to work, logs show:
psmouse serio2: trackpoint: failed to get extended button data

It fails to read out ext button info via PS2 command.
Almost all the Thinkpad have 3 buttons, so set it to 3 button when it fails to read button info.

And on Lenovo X1, there is a new version of trackpoint, add this ID for this new device.

CVE References

AaronMa (mapengyu) wrote :

commit ec667683c532c93fb41e100e5d61a518971060e2
Author: Aaron Ma <email address hidden>
Date: Fri Aug 18 12:17:21 2017 -0700

    Input: trackpoint - add new trackpoint firmware ID

    Synaptics add new TP firmware ID: 0x2 and 0x3, for now both lower 2 bits
    are indicated as TP. Change the constant to bitwise values.

    This makes trackpoint to be recognized on Lenovo Carbon X1 Gen5 instead
    of it being identified as "PS/2 Generic Mouse".

    Signed-off-by: Aaron Ma <email address hidden>
    Cc: <email address hidden>
    Signed-off-by: Dmitry Torokhov <email address hidden>

AaronMa (mapengyu) wrote :

The 1st patch was already sent to stable kernel, so don't need to merge to Ubuntu kernel.

AaronMa (mapengyu) wrote :

commit 293b915fd9bebf33cdc906516fb28d54649a25ac
Author: Oscar Campos <email address hidden>
Date: Tue Jul 18 17:20:36 2017 -0700

    Input: trackpoint - assume 3 buttons when buttons detection fails

    Trackpoint buttons detection fails on ThinkPad 570 and 470 series,
    this makes the middle button of the trackpoint to not being recogized.
    As I don't believe there is any trackpoint with less than 3 buttons this
    patch just assumes three buttons when the extended button information
    read fails.

    Signed-off-by: Oscar Campos <email address hidden>
    Acked-by: Peter Hutterer <email address hidden>
    Signed-off-by: Dmitry Torokhov <email address hidden>

This 2nd need to be merged to ubuntu kernel.

Changed in linux (Ubuntu):
status: New → In Progress
importance: Undecided → Critical
assignee: nobody → AaronMa (mapengyu)
AaronMa (mapengyu) on 2017-09-06
tags: added: originate-from-1695149 sutton
Changed in hwe-next:
status: New → In Progress
importance: Undecided → Critical
assignee: nobody → AaronMa (mapengyu)
AaronMa (mapengyu) wrote :

1st patch is included in stable kernel v4.4.85

Andreas Lindhé (lindhe) wrote :

I don't get it. Is this patch supposed to make things better? It just made my button *not work*. Is there a patch for the patch on the way, or do I need to rollback and recompile things in order to get rid of your patch?

AaronMa (mapengyu) wrote :

2 patches above are needed, could you confirm the 2 patches are included in your kernel?

And how your button can not work? please upload the dmesg.

Andreas Lindhé (lindhe) wrote :

To be honest I don't know. I'm on Arch Linux, and found that when upgrading to 4.12.10 the middle mouse button on my Lenovo ThinkPad X1 Carbon Gen5 stopped working. I looked into [the changelog](https://cdn.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.12.10) and found your patch which I naively assumed to be the cause of my newfound issue.

I'm currently on 4.12.10-1-ARCH, but I don't know from the top of my head to double check exactly what's included there. If you can't tell from only the version number, please let me know and I'll have to figure that out some time next week.

Kai-Heng Feng (kaihengfeng) wrote :

Andreas,

Maybe just revert the patch then build a new kernel to test it?

Andreas Lindhé (lindhe) wrote :

Sure, I might have time for that within the next week or next few weeks at least, but not right now. I know I can fix it if I put in some effort. I'm mostly annoyed that there are broken stuff in the stable kernel.

It seems like I'm not the only one with this problem: https://www.reddit.com/r/LinuxOnThinkpads/comments/6ydvly/did_your_middle_mouse_button_just_stop_working/

AaronMa (mapengyu) wrote :

4.12.10 contains this commit:
commit 38c36f9d1fca5b5e6d2d1be13ab82d1ce714e4b1
Author: Aaron Ma <email address hidden>
Date: Fri Aug 18 12:17:21 2017 -0700

    Input: trackpoint - add new trackpoint firmware ID

    commit ec667683c532c93fb41e100e5d61a518971060e2 upstream.

    Synaptics add new TP firmware ID: 0x2 and 0x3, for now both lower 2 bits
    are indicated as TP. Change the constant to bitwise values.

    This makes trackpoint to be recognized on Lenovo Carbon X1 Gen5 instead
    of it being identified as "PS/2 Generic Mouse".

    Signed-off-by: Aaron Ma <email address hidden>
    Signed-off-by: Dmitry Torokhov <email address hidden>
    Signed-off-by: Greg Kroah-Hartman <email address hidden>

This issue should be that stable-kernel lack this commit:
commit 293b915fd9bebf33cdc906516fb28d54649a25ac
Author: Oscar Campos <email address hidden>
Date: Tue Jul 18 17:20:36 2017 -0700

    Input: trackpoint - assume 3 buttons when buttons detection fails

    Trackpoint buttons detection fails on ThinkPad 570 and 470 series,
    this makes the middle button of the trackpoint to not being recogized.
    As I don't believe there is any trackpoint with less than 3 buttons this
    patch just assumes three buttons when the extended button information
    read fails.

    Signed-off-by: Oscar Campos <email address hidden>
    Acked-by: Peter Hutterer <email address hidden>
    Signed-off-by: Dmitry Torokhov <email address hidden>

Please try 4.13.0 kernel, not stable branch, this will make middle button work.

AaronMa (mapengyu) wrote :

Send 2nd patch to <email address hidden>.
Waiting for maintainer's feedback.

Changed in linux (Ubuntu Zesty):
status: New → In Progress
Changed in linux (Ubuntu Xenial):
status: New → In Progress
importance: Undecided → Critical
Changed in linux (Ubuntu Zesty):
importance: Undecided → Critical
tags: added: kernel-da-key
Seth Forshee (sforshee) on 2017-09-08
Changed in linux (Ubuntu Artful):
status: In Progress → Fix Committed
Andreas Lindhé (lindhe) wrote :

Works again for me since 4.12.12-1

Stefan Bader (smb) on 2017-09-15
Changed in linux (Ubuntu Zesty):
status: In Progress → Fix Committed
Changed in linux (Ubuntu Xenial):
status: In Progress → Fix Committed

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-xenial' to 'verification-done-xenial'. If the problem still exists, change the tag 'verification-needed-xenial' to 'verification-failed-xenial'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

tags: added: verification-needed-xenial
tags: added: verification-needed-zesty

This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-zesty' to 'verification-done-zesty'. If the problem still exists, change the tag 'verification-needed-zesty' to 'verification-failed-zesty'.

If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.

See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you!

AaronMa (mapengyu) wrote :

Tested on E470 with Xenial 4.4.0.97-120 kernel, works fine.

tags: added: verification-done-xenial
removed: verification-needed-xenial
AaronMa (mapengyu) wrote :

The first patch in #1 is still missing in Zesty kernel.
I will send it to zesty kernel.

AaronMa (mapengyu) wrote :

Ubuntu Artful needs the 2nd patch in comment #3 too.
Please apply it on artful kernel 4.13

AaronMa (mapengyu) on 2017-09-28
Changed in linux (Ubuntu Artful):
status: Fix Committed → In Progress
AaronMa (mapengyu) wrote :

Quoted from Seth:

"
Artful is based on 4.13 and the patch went upstream in 4.13-rc6, so
artful does have the patch already.

Seth
"

Double checked Artful OK.

Changed in linux (Ubuntu Artful):
status: In Progress → Fix Committed
AaronMa (mapengyu) on 2017-09-30
Changed in linux (Ubuntu Zesty):
status: Fix Committed → In Progress
tags: added: verification-failed-zesty
removed: verification-needed-zesty
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 4.10.0-37.41

---------------
linux (4.10.0-37.41) zesty; urgency=low

  * CVE-2017-1000255
    - SAUCE: powerpc/64s: Use emergency stack for kernel TM Bad Thing program
      checks
    - SAUCE: powerpc/tm: Fix illegal TM state in signal handler

linux (4.10.0-36.40) zesty; urgency=low

  * linux: 4.10.0-36.40 -proposed tracker (LP: #1718143)

  * Neighbour confirmation broken, breaks ARP cache aging (LP: #1715812)
    - sock: add sk_dst_pending_confirm flag
    - net: add dst_pending_confirm flag to skbuff
    - sctp: add dst_pending_confirm flag
    - tcp: replace dst_confirm with sk_dst_confirm
    - net: add confirm_neigh method to dst_ops
    - net: use dst_confirm_neigh for UDP, RAW, ICMP, L2TP
    - net: pending_confirm is not used anymore

  * SRIOV: warning if unload VFs (LP: #1715073)
    - PCI: Lock each enable/disable num_vfs operation in sysfs
    - PCI: Disable VF decoding before pcibios_sriov_disable() updates resources

  * Kernel has troule recognizing Corsair Strafe RGB keyboard (LP: #1678477)
    - usb: quirks: add delay init quirk for Corsair Strafe RGB keyboard

  * CVE-2017-14106
    - tcp: initialize rcv_mss to TCP_MIN_MSS instead of 0

  * [CIFS] Fix maximum SMB2 header size (LP: #1713884)
    - CIFS: Fix maximum SMB2 header size

  * Middle button of trackpoint doesn't work (LP: #1715271)
    - Input: trackpoint - assume 3 buttons when buttons detection fails

  * Drop GPL from of_node_to_nid() export to match other arches (LP: #1709179)
    - powerpc: Drop GPL from of_node_to_nid() export to match other arches

  * vhost guest network randomly drops under stress (kvm) (LP: #1711251)
    - Revert "vhost: cache used event for better performance"

  * arm64 arch_timer fixes (LP: #1713821)
    - Revert "UBUNTU: SAUCE: arm64: arch_timer: Enable CNTVCT_EL0 trap if
      workaround is enabled"
    - arm64: arch_timer: Enable CNTVCT_EL0 trap if workaround is enabled
    - clocksource/arm_arch_timer: Fix arch_timer_mem_find_best_frame()
    - clocksource/drivers/arm_arch_timer: Fix read and iounmap of incorrect
      variable
    - clocksource/drivers/arm_arch_timer: Fix mem frame loop initialization
    - clocksource/drivers/arm_arch_timer: Avoid infinite recursion when ftrace is
      enabled

  * Touchpad not detected (LP: #1708852)
    - Input: elan_i2c - add ELAN0608 to the ACPI table

 -- Thadeu Lima de Souza Cascardo <email address hidden> Fri, 06 Oct 2017 16:45:48 -0300

Changed in linux (Ubuntu Zesty):
status: In Progress → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (7.8 KiB)

This bug was fixed in the package linux - 4.4.0-97.120

---------------
linux (4.4.0-97.120) xenial; urgency=low

  * linux: 4.4.0-97.120 -proposed tracker (LP: #1718149)

  * blk-mq: possible deadlock on CPU hot(un)plug (LP: #1670634)
    - [Config] s390x -- disable CONFIG_{DM, SCSI}_MQ_DEFAULT

  * Xenial update to 4.4.87 stable release (LP: #1715678)
    - irqchip: mips-gic: SYNC after enabling GIC region
    - i2c: ismt: Don't duplicate the receive length for block reads
    - i2c: ismt: Return EMSGSIZE for block reads with bogus length
    - ceph: fix readpage from fscache
    - cpumask: fix spurious cpumask_of_node() on non-NUMA multi-node configs
    - cpuset: Fix incorrect memory_pressure control file mapping
    - alpha: uapi: Add support for __SANE_USERSPACE_TYPES__
    - CIFS: remove endian related sparse warning
    - wl1251: add a missing spin_lock_init()
    - xfrm: policy: check policy direction value
    - drm/ttm: Fix accounting error when fail to get pages for pool
    - kvm: arm/arm64: Fix race in resetting stage2 PGD
    - kvm: arm/arm64: Force reading uncached stage2 PGD
    - epoll: fix race between ep_poll_callback(POLLFREE) and ep_free()/ep_remove()
    - crypto: algif_skcipher - only call put_page on referenced and used pages
    - Linux 4.4.87

  * Xenial update to 4.4.86 stable release (LP: #1715430)
    - scsi: isci: avoid array subscript warning
    - ALSA: au88x0: Fix zero clear of stream->resources
    - btrfs: remove duplicate const specifier
    - i2c: jz4780: drop superfluous init
    - gcov: add support for gcc version >= 6
    - gcov: support GCC 7.1
    - lightnvm: initialize ppa_addr in dev_to_generic_addr()
    - p54: memset(0) whole array
    - lpfc: Fix Device discovery failures during switch reboot test.
    - arm64: mm: abort uaccess retries upon fatal signal
    - x86/io: Add "memory" clobber to insb/insw/insl/outsb/outsw/outsl
    - arm64: fpsimd: Prevent registers leaking across exec
    - scsi: sg: protect accesses to 'reserved' page array
    - scsi: sg: reset 'res_in_use' after unlinking reserved array
    - drm/i915: fix compiler warning in drivers/gpu/drm/i915/intel_uncore.c
    - Linux 4.4.86

  * Xenial update to 4.4.85 stable release (LP: #1714298)
    - af_key: do not use GFP_KERNEL in atomic contexts
    - dccp: purge write queue in dccp_destroy_sock()
    - dccp: defer ccid_hc_tx_delete() at dismantle time
    - ipv4: fix NULL dereference in free_fib_info_rcu()
    - net_sched/sfq: update hierarchical backlog when drop packet
    - ipv4: better IP_MAX_MTU enforcement
    - sctp: fully initialize the IPv6 address in sctp_v6_to_addr()
    - tipc: fix use-after-free
    - ipv6: reset fn->rr_ptr when replacing route
    - ipv6: repair fib6 tree in failure case
    - tcp: when rearming RTO, if RTO time is in past then fire RTO ASAP
    - irda: do not leak initialized list.dev to userspace
    - net: sched: fix NULL pointer dereference when action calls some targets
    - net_sched: fix order of queue length updates in qdisc_replace()
    - mei: me: add broxton pci device ids
    - mei: me: add lewisburg device ids
    - Input: trackpoint - add new trackpoint firmware ID
    - Input: elan_i2c...

Read more...

Changed in linux (Ubuntu Xenial):
status: Fix Committed → Fix Released

Setting the Zesty task back to 'Fix Committed' since the second patch for this issue is now queued for the next SRU update.

Changed in linux (Ubuntu Zesty):
status: Fix Released → Fix Committed
AaronMa (mapengyu) on 2017-11-03
tags: added: verification-done-zesty
removed: verification-failed-zesty
AaronMa (mapengyu) on 2017-11-20
Changed in hwe-next:
status: In Progress → Fix Committed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package linux - 4.10.0-40.44

---------------
linux (4.10.0-40.44) zesty; urgency=low

  * linux: 4.10.0-40.44 -proposed tracker (LP: #1731269)

  * s390/mm: fix write access check in gup_huge_pmd() (LP: #1730596)
    - s390/mm: fix write access check in gup_huge_pmd()

 -- Kleber Sacilotto de Souza <email address hidden> Thu, 09 Nov 2017 15:24:07 +0100

Changed in linux (Ubuntu Zesty):
status: Fix Committed → Fix Released
amirreza (khaghani) on 2017-11-27
Changed in hwe-next:
status: Fix Committed → Opinion
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers