lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190528012101.GA193221@dtor-ws>
Date:   Mon, 27 May 2019 18:21:01 -0700
From:   'Dmitry Torokhov' <dmitry.torokhov@...il.com>
To:     廖崇榮 <kt.liao@....com.tw>
Cc:     'Benjamin Tissoires' <benjamin.tissoires@...hat.com>,
        'Rob Herring' <robh+dt@...nel.org>,
        'Aaron Ma' <aaron.ma@...onical.com>,
        'Hans de Goede' <hdegoede@...hat.com>,
        "'open list:HID CORE LAYER'" <linux-input@...r.kernel.org>,
        'lkml' <linux-kernel@...r.kernel.org>,
        devicetree@...r.kernel.org, Harry Cutts <hcutts@...omium.org>
Subject: Re: [PATCH v2 08/10] Input: elan_i2c - export true width/height

Hi Benjamin, KT,

On Mon, May 27, 2019 at 11:55:01AM +0800, 廖崇榮 wrote:
> Hi
> 
> -----Original Message-----
> From: Benjamin Tissoires [mailto:benjamin.tissoires@...hat.com] 
> Sent: Friday, May 24, 2019 5:37 PM
> To: Dmitry Torokhov; KT Liao; Rob Herring; Aaron Ma; Hans de Goede
> Cc: open list:HID CORE LAYER; lkml; devicetree@...r.kernel.org
> Subject: Re: [PATCH v2 08/10] Input: elan_i2c - export true width/height
> 
> On Tue, May 21, 2019 at 3:28 PM Benjamin Tissoires <benjamin.tissoires@...hat.com> wrote:
> >
> > The width/height is actually in the same unit than X and Y. So we 
> > should not tamper the data, but just set the proper resolution, so 
> > that userspace can correctly detect which touch is a palm or a finger.
> >
> > Signed-off-by: Benjamin Tissoires <benjamin.tissoires@...hat.com>
> >
> > --
> >
> > new in v2
> > ---
> >  drivers/input/mouse/elan_i2c_core.c | 11 ++++-------
> >  1 file changed, 4 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/input/mouse/elan_i2c_core.c 
> > b/drivers/input/mouse/elan_i2c_core.c
> > index 7ff044c6cd11..6f4feedb7765 100644
> > --- a/drivers/input/mouse/elan_i2c_core.c
> > +++ b/drivers/input/mouse/elan_i2c_core.c
> > @@ -45,7 +45,6 @@
> >  #define DRIVER_NAME            "elan_i2c"
> >  #define ELAN_VENDOR_ID         0x04f3
> >  #define ETP_MAX_PRESSURE       255
> > -#define ETP_FWIDTH_REDUCE      90
> >  #define ETP_FINGER_WIDTH       15
> >  #define ETP_RETRY_COUNT                3
> >
> > @@ -915,12 +914,8 @@ static void elan_report_contact(struct elan_tp_data *data,
> >                         return;
> >                 }
> >
> > -               /*
> > -                * To avoid treating large finger as palm, let's reduce the
> > -                * width x and y per trace.
> > -                */
> > -               area_x = mk_x * (data->width_x - ETP_FWIDTH_REDUCE);
> > -               area_y = mk_y * (data->width_y - ETP_FWIDTH_REDUCE);
> > +               area_x = mk_x * data->width_x;
> > +               area_y = mk_y * data->width_y;
> >
> >                 major = max(area_x, area_y);
> >                 minor = min(area_x, area_y); @@ -1123,8 +1118,10 @@ 
> > static int elan_setup_input_device(struct elan_tp_data *data)
> >                              ETP_MAX_PRESSURE, 0, 0);
> >         input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0,
> >                              ETP_FINGER_WIDTH * max_width, 0, 0);
> > +       input_abs_set_res(input, ABS_MT_TOUCH_MAJOR, data->x_res);
> >         input_set_abs_params(input, ABS_MT_TOUCH_MINOR, 0,
> >                              ETP_FINGER_WIDTH * min_width, 0, 0);
> > +       input_abs_set_res(input, ABS_MT_TOUCH_MINOR, data->y_res);
> 
> I had a chat with Peter on Wednesday, and he mentioned that this is dangerous as Major/Minor are max/min of the width and height. And given that we might have 2 different resolutions, we would need to do some computation in the kernel to ensure the data is correct with respect to the resolution.
> 
> TL;DR: I don't think we should export the resolution there :(
> 
> KT, should I drop the patch entirely, or is there a strong argument for keeping the ETP_FWIDTH_REDUCE around?
> I suggest you apply the patch, I have no idea why ETP_FWIDTH_REDUCE existed. 
> Our FW team know nothing about ETP_FWIDTH_REDUCE ether.
> 
> The only side effect will happen on Chromebook because such computation have stayed in ChromeOS' kernel for four years.
> Chrome's finger/palm threshold may be different from other Linux distribution.
> We will discuss it with Google once the patch picked by chrome and cause something wrong.

Chrome has logic that contact with maximum major/minor is treated as a
palm, so here the driver (which originally came from Chrome OS)
artificially reduces the contact size to ensure that palm rejection
logic does not trigger.

I'm adding Harry to confirm whether we are still using this logic and to
see if we can adjust it to be something else.

Thanks.

-- 
Dmitry

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ