All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Aniroop Mathur <aniroop.mathur@gmail.com>
Cc: Henrik Rydberg <rydberg@bitmath.org>,
	Aniroop Mathur <a.mathur@samsung.com>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	lkml <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] Input: Do not add SYN_REPORT in between a single packet data
Date: Fri, 1 Apr 2016 14:51:28 -0700	[thread overview]
Message-ID: <20160401215128.GA5216@dtor-ws> (raw)
In-Reply-To: <CADYu30-b+5TFh2yy2SrGTJJ7FzvcezWut1XL3Ypno5R29hyYww@mail.gmail.com>

On Fri, Mar 11, 2016 at 12:26:57AM +0530, Aniroop Mathur wrote:
> Hi Henrik,
> 
> On Thu, Mar 10, 2016 at 7:15 PM, Henrik Rydberg <rydberg@bitmath.org> wrote:
> > Hi Dmitry,
> >
> >>> diff --git a/drivers/input/input.c b/drivers/input/input.c
> >>> index 8806059..262ef77 100644
> >>> --- a/drivers/input/input.c
> >>> +++ b/drivers/input/input.c
> >>> @@ -401,8 +401,7 @@ static void input_handle_event(struct input_dev *dev,
> >>>                 if (dev->num_vals >= 2)
> >>>                         input_pass_values(dev, dev->vals, dev->num_vals);
> >>>                 dev->num_vals = 0;
> >>> -       } else if (dev->num_vals >= dev->max_vals - 2) {
> >>> -               dev->vals[dev->num_vals++] = input_value_sync;
> >>> +       } else if (dev->num_vals >= dev->max_vals - 1) {
> >>>                 input_pass_values(dev, dev->vals, dev->num_vals);
> >>>                 dev->num_vals = 0;
> >>>         }
> >>
> >> This makes sense to me. Henrik?
> >
> > I went through the commits that made these changes, and I cannot see any strong
> > reason to keep it. However, this code path only triggers if no SYN events are
> > seen, as in a driver that fails to emit them and consequently fills up the
> > buffer. In other words, this change would only affect a device that is already,
> > to some degree, broken.
> >
> > So, the question to Aniroop is: do you see this problem in practise, and in that
> > case, for what driver?
> >
> 
> Nope. So far I have not dealt with any such driver.
> I made this change because it is breaking protocol of SYN_REPORT event code.
> 
> Further from the code, I could deduce that max_vals is just an estimation of
> packet_size and it does not guarantee that packet_size is same as max_vals.
> So real packet_size can be more than max_vals value and hence we could not
> insert SYN_REPORT until packet ends really.
> Further, if we consider that there exists a driver or will exist in future
> which sets capability of x event code according to which max_value comes out to
> y and the real packet size is z i.e. driver wants to send same event codes
> again in the same packet, so input event reader would be expecting SYN_REPORT
> after z events but due to current code SYN_REPORT will get inserted
> automatically after y events, which is a wrong behaviour.

Well, I think I agree with Aniroop that even if driver is to a degree
broken we should not be inserting random SYN_REPORT events into the
stream. I wonder if we should not add WARN_ONCE() there to highlight
potential problems with the way we estimate the number of events.

However I think there is an issue with the patch. If we happen to pass
values just before the final SYN_REPORT sent by the driver then we reset
dev->num_vals to 0 and will essentially suppress the final SYN_REPORT
event, which is not good either.

Thanks.

-- 
Dmitry

  parent reply	other threads:[~2016-04-01 21:51 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-07 17:44 [PATCH] Input: Do not add SYN_REPORT in between a single packet data Aniroop Mathur
2016-03-09 18:53 ` Aniroop Mathur
2016-03-09 19:07 ` Dmitry Torokhov
2016-03-10 13:45   ` Henrik Rydberg
2016-03-10 18:56     ` Aniroop Mathur
2016-03-16 18:24       ` Aniroop Mathur
2016-03-23 19:35         ` Aniroop Mathur
2016-03-30 17:16           ` Aniroop Mathur
2016-04-01 21:51       ` Dmitry Torokhov [this message]
2016-04-02 17:01         ` Aniroop Mathur
2016-04-04 17:29           ` Aniroop Mathur
2016-04-06 14:56           ` Aniroop Mathur
2016-04-06 17:38             ` Dmitry Torokhov
2016-04-06 19:09               ` Aniroop Mathur
2016-04-06 19:51                 ` Henrik Rydberg
2016-04-06 20:43                   ` Aniroop Mathur
2016-04-27 14:59                     ` Aniroop Mathur
  -- strict thread matches above, loose matches on Subject: below --
2016-05-04 15:42 Aniroop Mathur
2016-05-11 14:10 ` Aniroop Mathur
     [not found]   ` <CADYu308HQxPfq-C3ccS_n-=DO0xFdK9vr5XmyAx3kWeryKFfyA@mail.gmail.com>
     [not found]     ` <20160512223159.GA12463@dtor-ws>
     [not found]       ` <CADYu3093GqD6vNSq083uP85HmphKGxJ6wmrNN6AhoEnjZVPqqA@mail.gmail.com>
2016-06-02 20:22         ` Aniroop Mathur

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=20160401215128.GA5216@dtor-ws \
    --to=dmitry.torokhov@gmail.com \
    --cc=a.mathur@samsung.com \
    --cc=aniroop.mathur@gmail.com \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=rydberg@bitmath.org \
    /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.