Skip to content

Commit

Permalink
Input: fix open count handling in input interfaces
Browse files Browse the repository at this point in the history
If input_open_device() fails we should not leave interfaces marked
as  opened.

Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
  • Loading branch information
Oliver Neukum authored and Dmitry Torokhov committed Oct 12, 2007
1 parent 1ea3abf commit 0644501
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 4 deletions.
5 changes: 4 additions & 1 deletion drivers/input/evdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,11 @@ static int evdev_open_device(struct evdev *evdev)

if (!evdev->exist)
retval = -ENODEV;
else if (!evdev->open++)
else if (!evdev->open++) {
retval = input_open_device(&evdev->handle);
if (retval)
evdev->open--;
}

mutex_unlock(&evdev->mutex);
return retval;
Expand Down
5 changes: 4 additions & 1 deletion drivers/input/joydev.c
Original file line number Diff line number Diff line change
Expand Up @@ -205,8 +205,11 @@ static int joydev_open_device(struct joydev *joydev)

if (!joydev->exist)
retval = -ENODEV;
else if (!joydev->open++)
else if (!joydev->open++) {
retval = input_open_device(&joydev->handle);
if (retval)
joydev->open--;
}

mutex_unlock(&joydev->mutex);
return retval;
Expand Down
5 changes: 4 additions & 1 deletion drivers/input/mousedev.c
Original file line number Diff line number Diff line change
Expand Up @@ -428,8 +428,11 @@ static int mousedev_open_device(struct mousedev *mousedev)
mixdev_open_devices();
else if (!mousedev->exist)
retval = -ENODEV;
else if (!mousedev->open++)
else if (!mousedev->open++) {
retval = input_open_device(&mousedev->handle);
if (retval)
mousedev->open--;
}

mutex_unlock(&mousedev->mutex);
return retval;
Expand Down
5 changes: 4 additions & 1 deletion drivers/input/tsdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,11 @@ static int tsdev_open_device(struct tsdev *tsdev)

if (!tsdev->exist)
retval = -ENODEV;
else if (!tsdev->open++)
else if (!tsdev->open++) {
retval = input_open_device(&tsdev->handle);
if (retval)
tsdev->open--;
}

mutex_unlock(&tsdev->mutex);
return retval;
Expand Down

0 comments on commit 0644501

Please sign in to comment.