diff mbox

[1/3] Input: db9 - store object at correct index

Message ID 1443785315-31495-1-git-send-email-sudipm.mukherjee@gmail.com (mailing list archive)
State Superseded, archived
Headers show

Commit Message

Sudip Mukherjee Oct. 2, 2015, 11:28 a.m. UTC
The variable i is used to check the port to attach to and we are
supposed to save the reference of struct db9 in the location given by
db9_base[i]. But after finding out the index i is getting modified again
so we saved in a wrong index.

Fixes: 2260c419b52b ("Input: db9 - use parallel port device model")
Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
---
 drivers/input/joystick/db9.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

Comments

Dmitry Torokhov Oct. 2, 2015, 6:11 p.m. UTC | #1
Hi Sudip,

On Fri, Oct 02, 2015 at 04:58:33PM +0530, Sudip Mukherjee wrote:
> The variable i is used to check the port to attach to and we are
> supposed to save the reference of struct db9 in the location given by
> db9_base[i]. But after finding out the index i is getting modified again
> so we saved in a wrong index.
> 
> Fixes: 2260c419b52b ("Input: db9 - use parallel port device model")
> Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> ---
>  drivers/input/joystick/db9.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
> index cf1f602..f6ecd4a 100644
> --- a/drivers/input/joystick/db9.c
> +++ b/drivers/input/joystick/db9.c
> @@ -560,7 +560,7 @@ static void db9_attach(struct parport *pp)
>  	const struct db9_mode_data *db9_mode;
>  	struct pardevice *pd;
>  	struct input_dev *input_dev;
> -	int i, j;
> +	int i, j, k;
>  	int mode;
>  	struct pardev_cb db9_parport_cb;
>  
> @@ -577,6 +577,7 @@ static void db9_attach(struct parport *pp)
>  		pr_debug("Not using parport%d.\n", pp->number);
>  		return;
>  	}
> +	k = i;

Hmm, I'd prefer we did not reuse 'i' at all. Can we instead of 'k' add
'port_idx' and use it instead of 'i' in the first loop?

Thanks.
Sudip Mukherjee Oct. 3, 2015, 5:44 a.m. UTC | #2
On Fri, Oct 02, 2015 at 11:11:18AM -0700, Dmitry Torokhov wrote:
> Hi Sudip,
> 
> On Fri, Oct 02, 2015 at 04:58:33PM +0530, Sudip Mukherjee wrote:
> > The variable i is used to check the port to attach to and we are
> > supposed to save the reference of struct db9 in the location given by
> > db9_base[i]. But after finding out the index i is getting modified again
> > so we saved in a wrong index.
> > 
> > Fixes: 2260c419b52b ("Input: db9 - use parallel port device model")
> > Signed-off-by: Sudip Mukherjee <sudip@vectorindia.org>
> > ---
> >  drivers/input/joystick/db9.c | 6 ++++--
> >  1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
> > index cf1f602..f6ecd4a 100644
> > --- a/drivers/input/joystick/db9.c
> > +++ b/drivers/input/joystick/db9.c
> > @@ -560,7 +560,7 @@ static void db9_attach(struct parport *pp)
> >  	const struct db9_mode_data *db9_mode;
> >  	struct pardevice *pd;
> >  	struct input_dev *input_dev;
> > -	int i, j;
> > +	int i, j, k;
> >  	int mode;
> >  	struct pardev_cb db9_parport_cb;
> >  
> > @@ -577,6 +577,7 @@ static void db9_attach(struct parport *pp)
> >  		pr_debug("Not using parport%d.\n", pp->number);
> >  		return;
> >  	}
> > +	k = i;
> 
> Hmm, I'd prefer we did not reuse 'i' at all. Can we instead of 'k' add
> 'port_idx' and use it instead of 'i' in the first loop?
Yes, that will be great. This reuse of i caused this mistake. Sorry
about that I should have been more carefull.

regards
sudip
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/input/joystick/db9.c b/drivers/input/joystick/db9.c
index cf1f602..f6ecd4a 100644
--- a/drivers/input/joystick/db9.c
+++ b/drivers/input/joystick/db9.c
@@ -560,7 +560,7 @@  static void db9_attach(struct parport *pp)
 	const struct db9_mode_data *db9_mode;
 	struct pardevice *pd;
 	struct input_dev *input_dev;
-	int i, j;
+	int i, j, k;
 	int mode;
 	struct pardev_cb db9_parport_cb;
 
@@ -577,6 +577,7 @@  static void db9_attach(struct parport *pp)
 		pr_debug("Not using parport%d.\n", pp->number);
 		return;
 	}
+	k = i;
 
 	mode = db9_cfg[i].args[DB9_ARG_MODE];
 
@@ -649,7 +650,7 @@  static void db9_attach(struct parport *pp)
 			goto err_free_dev;
 	}
 
-	db9_base[i] = db9;
+	db9_base[k] = db9;
 	return;
 
  err_free_dev:
@@ -676,6 +677,7 @@  static void db9_detach(struct parport *port)
 		return;
 
 	db9 = db9_base[i];
+	db9_base[i] = NULL;
 
 	for (i = 0; i < min(db9_modes[db9->mode].n_pads, DB9_MAX_DEVICES); i++)
 		input_unregister_device(db9->dev[i]);