Re: [PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2015-01-12 Thread Pali Rohár
On Monday 12 January 2015 01:31:00 Dmitry Torokhov wrote:
> On Fri, Nov 14, 2014 at 08:38:25PM +0100, Pali Rohár wrote:
> > This patch adds sanity checks and reject trackstick packets
> > from ALPS devices which do not have trackstick present
> > (those without ALPS_DUALPOINT flag).
> > 
> > Make sure that driver does not process some bogus packets as
> > trackstick data when there is no trackstick packet. Patch
> > also write warning do dmesg so possible problems with
> > driver (e.g received invalid data) will be visible for
> > debugging.
> > 
> > Signed-off-by: Pali Rohár 
> 
> Applied, thank you.
> 

Hello Dmitry, can you comment and review also other patches?

-- 
Pali Rohár
pali.ro...@gmail.com


signature.asc
Description: This is a digitally signed message part.


Re: [PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2015-01-12 Thread Pali Rohár
On Monday 12 January 2015 01:31:00 Dmitry Torokhov wrote:
 On Fri, Nov 14, 2014 at 08:38:25PM +0100, Pali Rohár wrote:
  This patch adds sanity checks and reject trackstick packets
  from ALPS devices which do not have trackstick present
  (those without ALPS_DUALPOINT flag).
  
  Make sure that driver does not process some bogus packets as
  trackstick data when there is no trackstick packet. Patch
  also write warning do dmesg so possible problems with
  driver (e.g received invalid data) will be visible for
  debugging.
  
  Signed-off-by: Pali Rohár pali.ro...@gmail.com
 
 Applied, thank you.
 

Hello Dmitry, can you comment and review also other patches?

-- 
Pali Rohár
pali.ro...@gmail.com


signature.asc
Description: This is a digitally signed message part.


Re: [PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2015-01-11 Thread Dmitry Torokhov
On Fri, Nov 14, 2014 at 08:38:25PM +0100, Pali Rohár wrote:
> This patch adds sanity checks and reject trackstick packets from ALPS devices
> which do not have trackstick present (those without ALPS_DUALPOINT flag).
> 
> Make sure that driver does not process some bogus packets as trackstick data
> when there is no trackstick packet. Patch also write warning do dmesg so
> possible problems with driver (e.g received invalid data) will be visible
> for debugging.
> 
> Signed-off-by: Pali Rohár 

Applied, thank you.

> ---
>  drivers/input/mouse/alps.c |   22 --
>  1 file changed, 20 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
> index 2b7b74d..770bec5 100644
> --- a/drivers/input/mouse/alps.c
> +++ b/drivers/input/mouse/alps.c
> @@ -475,6 +475,13 @@ static void alps_process_trackstick_packet_v3(struct 
> psmouse *psmouse)
>   struct input_dev *dev = priv->dev2;
>   int x, y, z, left, right, middle;
>  
> + /* It should be a DualPoint when received trackstick packet */
> + if (!(priv->flags & ALPS_DUALPOINT)) {
> + psmouse_warn(psmouse,
> + "Rejected trackstick packet from non DualPoint device");
> + return;
> + }
> +
>   /* Sanity check packet */
>   if (!(packet[0] & 0x40)) {
>   psmouse_dbg(psmouse, "Bad trackstick packet, discarding\n");
> @@ -699,7 +706,8 @@ static void alps_process_touchpad_packet_v3_v5(struct 
> psmouse *psmouse)
>  
>   alps_report_semi_mt_data(psmouse, fingers);
>  
> - if (!(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
> + if ((priv->flags & ALPS_DUALPOINT) &&
> + !(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
>   input_report_key(dev2, BTN_LEFT, f->ts_left);
>   input_report_key(dev2, BTN_RIGHT, f->ts_right);
>   input_report_key(dev2, BTN_MIDDLE, f->ts_middle);
> @@ -743,8 +751,11 @@ static void alps_process_packet_v6(struct psmouse 
> *psmouse)
>*/
>   if (packet[5] == 0x7F) {
>   /* It should be a DualPoint when received Trackpoint packet */
> - if (!(priv->flags & ALPS_DUALPOINT))
> + if (!(priv->flags & ALPS_DUALPOINT)) {
> + psmouse_warn(psmouse,
> + "Rejected trackstick packet from non DualPoint device");
>   return;
> + }
>  
>   /* Trackpoint packet */
>   x = packet[1] | ((packet[3] & 0x20) << 2);
> @@ -962,6 +973,13 @@ static void alps_process_trackstick_packet_v7(struct 
> psmouse *psmouse)
>   struct input_dev *dev2 = priv->dev2;
>   int x, y, z, left, right, middle;
>  
> + /* It should be a DualPoint when received trackstick packet */
> + if (!(priv->flags & ALPS_DUALPOINT)) {
> + psmouse_warn(psmouse,
> + "Rejected trackstick packet from non DualPoint device");
> + return;
> + }
> +
>   /*
>*b7 b6 b5 b4 b3 b2 b1 b0
>* Byte0   0  1  0  0  1  0  0  0
> -- 
> 1.7.9.5
> 

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2015-01-11 Thread Dmitry Torokhov
On Fri, Nov 14, 2014 at 08:38:25PM +0100, Pali Rohár wrote:
 This patch adds sanity checks and reject trackstick packets from ALPS devices
 which do not have trackstick present (those without ALPS_DUALPOINT flag).
 
 Make sure that driver does not process some bogus packets as trackstick data
 when there is no trackstick packet. Patch also write warning do dmesg so
 possible problems with driver (e.g received invalid data) will be visible
 for debugging.
 
 Signed-off-by: Pali Rohár pali.ro...@gmail.com

Applied, thank you.

 ---
  drivers/input/mouse/alps.c |   22 --
  1 file changed, 20 insertions(+), 2 deletions(-)
 
 diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
 index 2b7b74d..770bec5 100644
 --- a/drivers/input/mouse/alps.c
 +++ b/drivers/input/mouse/alps.c
 @@ -475,6 +475,13 @@ static void alps_process_trackstick_packet_v3(struct 
 psmouse *psmouse)
   struct input_dev *dev = priv-dev2;
   int x, y, z, left, right, middle;
  
 + /* It should be a DualPoint when received trackstick packet */
 + if (!(priv-flags  ALPS_DUALPOINT)) {
 + psmouse_warn(psmouse,
 + Rejected trackstick packet from non DualPoint device);
 + return;
 + }
 +
   /* Sanity check packet */
   if (!(packet[0]  0x40)) {
   psmouse_dbg(psmouse, Bad trackstick packet, discarding\n);
 @@ -699,7 +706,8 @@ static void alps_process_touchpad_packet_v3_v5(struct 
 psmouse *psmouse)
  
   alps_report_semi_mt_data(psmouse, fingers);
  
 - if (!(priv-quirks  ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
 + if ((priv-flags  ALPS_DUALPOINT) 
 + !(priv-quirks  ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
   input_report_key(dev2, BTN_LEFT, f-ts_left);
   input_report_key(dev2, BTN_RIGHT, f-ts_right);
   input_report_key(dev2, BTN_MIDDLE, f-ts_middle);
 @@ -743,8 +751,11 @@ static void alps_process_packet_v6(struct psmouse 
 *psmouse)
*/
   if (packet[5] == 0x7F) {
   /* It should be a DualPoint when received Trackpoint packet */
 - if (!(priv-flags  ALPS_DUALPOINT))
 + if (!(priv-flags  ALPS_DUALPOINT)) {
 + psmouse_warn(psmouse,
 + Rejected trackstick packet from non DualPoint device);
   return;
 + }
  
   /* Trackpoint packet */
   x = packet[1] | ((packet[3]  0x20)  2);
 @@ -962,6 +973,13 @@ static void alps_process_trackstick_packet_v7(struct 
 psmouse *psmouse)
   struct input_dev *dev2 = priv-dev2;
   int x, y, z, left, right, middle;
  
 + /* It should be a DualPoint when received trackstick packet */
 + if (!(priv-flags  ALPS_DUALPOINT)) {
 + psmouse_warn(psmouse,
 + Rejected trackstick packet from non DualPoint device);
 + return;
 + }
 +
   /*
*b7 b6 b5 b4 b3 b2 b1 b0
* Byte0   0  1  0  0  1  0  0  0
 -- 
 1.7.9.5
 

-- 
Dmitry
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2014-11-14 Thread Pali Rohár
This patch adds sanity checks and reject trackstick packets from ALPS devices
which do not have trackstick present (those without ALPS_DUALPOINT flag).

Make sure that driver does not process some bogus packets as trackstick data
when there is no trackstick packet. Patch also write warning do dmesg so
possible problems with driver (e.g received invalid data) will be visible
for debugging.

Signed-off-by: Pali Rohár 
---
 drivers/input/mouse/alps.c |   22 --
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 2b7b74d..770bec5 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -475,6 +475,13 @@ static void alps_process_trackstick_packet_v3(struct 
psmouse *psmouse)
struct input_dev *dev = priv->dev2;
int x, y, z, left, right, middle;
 
+   /* It should be a DualPoint when received trackstick packet */
+   if (!(priv->flags & ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   "Rejected trackstick packet from non DualPoint device");
+   return;
+   }
+
/* Sanity check packet */
if (!(packet[0] & 0x40)) {
psmouse_dbg(psmouse, "Bad trackstick packet, discarding\n");
@@ -699,7 +706,8 @@ static void alps_process_touchpad_packet_v3_v5(struct 
psmouse *psmouse)
 
alps_report_semi_mt_data(psmouse, fingers);
 
-   if (!(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
+   if ((priv->flags & ALPS_DUALPOINT) &&
+   !(priv->quirks & ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
input_report_key(dev2, BTN_LEFT, f->ts_left);
input_report_key(dev2, BTN_RIGHT, f->ts_right);
input_report_key(dev2, BTN_MIDDLE, f->ts_middle);
@@ -743,8 +751,11 @@ static void alps_process_packet_v6(struct psmouse *psmouse)
 */
if (packet[5] == 0x7F) {
/* It should be a DualPoint when received Trackpoint packet */
-   if (!(priv->flags & ALPS_DUALPOINT))
+   if (!(priv->flags & ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   "Rejected trackstick packet from non DualPoint device");
return;
+   }
 
/* Trackpoint packet */
x = packet[1] | ((packet[3] & 0x20) << 2);
@@ -962,6 +973,13 @@ static void alps_process_trackstick_packet_v7(struct 
psmouse *psmouse)
struct input_dev *dev2 = priv->dev2;
int x, y, z, left, right, middle;
 
+   /* It should be a DualPoint when received trackstick packet */
+   if (!(priv->flags & ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   "Rejected trackstick packet from non DualPoint device");
+   return;
+   }
+
/*
 *b7 b6 b5 b4 b3 b2 b1 b0
 * Byte0   0  1  0  0  1  0  0  0
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 6/7] input: alps: Add sanity checks for non DualPoint devices

2014-11-14 Thread Pali Rohár
This patch adds sanity checks and reject trackstick packets from ALPS devices
which do not have trackstick present (those without ALPS_DUALPOINT flag).

Make sure that driver does not process some bogus packets as trackstick data
when there is no trackstick packet. Patch also write warning do dmesg so
possible problems with driver (e.g received invalid data) will be visible
for debugging.

Signed-off-by: Pali Rohár pali.ro...@gmail.com
---
 drivers/input/mouse/alps.c |   22 --
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
index 2b7b74d..770bec5 100644
--- a/drivers/input/mouse/alps.c
+++ b/drivers/input/mouse/alps.c
@@ -475,6 +475,13 @@ static void alps_process_trackstick_packet_v3(struct 
psmouse *psmouse)
struct input_dev *dev = priv-dev2;
int x, y, z, left, right, middle;
 
+   /* It should be a DualPoint when received trackstick packet */
+   if (!(priv-flags  ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   Rejected trackstick packet from non DualPoint device);
+   return;
+   }
+
/* Sanity check packet */
if (!(packet[0]  0x40)) {
psmouse_dbg(psmouse, Bad trackstick packet, discarding\n);
@@ -699,7 +706,8 @@ static void alps_process_touchpad_packet_v3_v5(struct 
psmouse *psmouse)
 
alps_report_semi_mt_data(psmouse, fingers);
 
-   if (!(priv-quirks  ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
+   if ((priv-flags  ALPS_DUALPOINT) 
+   !(priv-quirks  ALPS_QUIRK_TRACKSTICK_BUTTONS)) {
input_report_key(dev2, BTN_LEFT, f-ts_left);
input_report_key(dev2, BTN_RIGHT, f-ts_right);
input_report_key(dev2, BTN_MIDDLE, f-ts_middle);
@@ -743,8 +751,11 @@ static void alps_process_packet_v6(struct psmouse *psmouse)
 */
if (packet[5] == 0x7F) {
/* It should be a DualPoint when received Trackpoint packet */
-   if (!(priv-flags  ALPS_DUALPOINT))
+   if (!(priv-flags  ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   Rejected trackstick packet from non DualPoint device);
return;
+   }
 
/* Trackpoint packet */
x = packet[1] | ((packet[3]  0x20)  2);
@@ -962,6 +973,13 @@ static void alps_process_trackstick_packet_v7(struct 
psmouse *psmouse)
struct input_dev *dev2 = priv-dev2;
int x, y, z, left, right, middle;
 
+   /* It should be a DualPoint when received trackstick packet */
+   if (!(priv-flags  ALPS_DUALPOINT)) {
+   psmouse_warn(psmouse,
+   Rejected trackstick packet from non DualPoint device);
+   return;
+   }
+
/*
 *b7 b6 b5 b4 b3 b2 b1 b0
 * Byte0   0  1  0  0  1  0  0  0
-- 
1.7.9.5

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/