All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@redhat.com>
To: Jason Gerecke <killertofu@gmail.com>
Cc: linux-input@vger.kernel.org, Ping Cheng <pinglinux@gmail.com>,
	Aaron Skomra <skomra@gmail.com>,
	Jason Gerecke <jason.gerecke@wacom.com>
Subject: Re: [PATCH] HID: wacom: Stop mapping touch usages after processing HID_DG_CONTACTCOUNT
Date: Tue, 12 Jul 2016 09:32:50 +0200	[thread overview]
Message-ID: <20160712073250.GE4663@mail.corp.redhat.com> (raw)
In-Reply-To: <20160711175950.17121-1-killertofu@gmail.com>

Hi Jason,

On Jul 11 2016 or thereabouts, Jason Gerecke wrote:
> If a touchscreen contains both multitouch and single-touch reports in its
> descriptor in that order, the driver may overwrite information it saved
> about the format of the multitouch report. This can cause the report
> processing code to get tripped up and send an incorrect event stream to
> userspace.
> 
> In particular, this can cause last_slot_field to be overwritten with the
> result that the driver prematurely assumes it has finished processing a
> slot and sending the ABS_MT_SLOT event at the wrong point in time,
> associating events for the current contact with the following contact
> instead.
> 
> To prevent this from occuring, we stop mapping usages after having seen
> HID_DG_CONTACTCOUNT. This usage is only present in multitouch reports,
> so the format of any following single-touch reports will have no effect.

I had a quick look at the driver, and it looks like the Cintiq Companion
2 has more than one multitouch collection (see 499522c "HID: wacom: Tie
cached HID_DG_CONTACTCOUNT indices to report ID").

So if this doesn't break the cintiq companion 2, you have my
reviewed-by, but I'd rather be sure (and please see if we really need to
keep 499522c then).

Cheers,
Benjamin

> 
> Signed-off-by: Jason Gerecke <jason.gerecke@wacom.com>
> ---
>  drivers/hid/wacom_wac.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/hid/wacom_wac.c b/drivers/hid/wacom_wac.c
> index fcf2264..e499cdb 100644
> --- a/drivers/hid/wacom_wac.c
> +++ b/drivers/hid/wacom_wac.c
> @@ -1560,6 +1560,11 @@ static void wacom_wac_finger_usage_mapping(struct hid_device *hdev,
>  	struct input_dev *input = wacom_wac->touch_input;
>  	unsigned touch_max = wacom_wac->features.touch_max;
>  
> +	/* stop processing after the first multitouch report */
> +	if (wacom_wac->hid_data.cc_report &&
> +	    wacom_wac->hid_data.cc_report != field->report->id)
> +		return;
> +
>  	switch (usage->hid) {
>  	case HID_GD_X:
>  		features->last_slot_field = usage->hid;
> -- 
> 2.9.0
> 

  reply	other threads:[~2016-07-12  7:32 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-11 17:59 [PATCH] HID: wacom: Stop mapping touch usages after processing HID_DG_CONTACTCOUNT Jason Gerecke
2016-07-12  7:32 ` Benjamin Tissoires [this message]
2016-07-20 16:36   ` Jason Gerecke
2016-07-20 21:35     ` Jason Gerecke
2016-07-21 16:10       ` [PATCH v2] HID: wacom: Update last_slot_field during pre_report phase Jason Gerecke
2016-07-21 18:01         ` Ping Cheng
2016-07-25  9:38         ` Benjamin Tissoires
2016-08-10 15:51           ` Jason Gerecke
2016-08-11  8:27             ` Jiri Kosina
2016-08-11 15:22               ` Jason Gerecke
2016-08-11 20:39         ` Jiri Kosina

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160712073250.GE4663@mail.corp.redhat.com \
    --to=benjamin.tissoires@redhat.com \
    --cc=jason.gerecke@wacom.com \
    --cc=killertofu@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=pinglinux@gmail.com \
    --cc=skomra@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.