Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 87961
b: refs/heads/master
c: a7097ff
h: refs/heads/master
i:
  87959: cfb2470
v: v3
  • Loading branch information
Dmitry Torokhov committed Apr 1, 2008
1 parent f41e0fc commit 26d6f9a
Show file tree
Hide file tree
Showing 5 changed files with 10 additions and 9 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 399f486286f44d55c4fff0e9cc5d712f2b443489
refs/heads/master: a7097ff89c3204737a07eecbc83f9ae6002cc534
6 changes: 2 additions & 4 deletions trunk/drivers/input/evdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ static void evdev_free(struct device *dev)
{
struct evdev *evdev = container_of(dev, struct evdev, dev);

input_put_device(evdev->handle.dev);
kfree(evdev);
}

Expand Down Expand Up @@ -853,9 +854,6 @@ static void evdev_cleanup(struct evdev *evdev)
evdev_hangup(evdev);
evdev_remove_chrdev(evdev);

if (evdev->grab)
evdev_ungrab(evdev, evdev->grab);

/* evdev is marked dead so no one else accesses evdev->open */
if (evdev->open) {
input_flush_device(handle, NULL);
Expand Down Expand Up @@ -896,7 +894,7 @@ static int evdev_connect(struct input_handler *handler, struct input_dev *dev,
evdev->exist = 1;
evdev->minor = minor;

evdev->handle.dev = dev;
evdev->handle.dev = input_get_device(dev);
evdev->handle.name = evdev->name;
evdev->handle.handler = handler;
evdev->handle.private = evdev;
Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/input/joydev.c
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ static void joydev_free(struct device *dev)
{
struct joydev *joydev = container_of(dev, struct joydev, dev);

input_put_device(joydev->handle.dev);
kfree(joydev);
}

Expand Down Expand Up @@ -750,7 +751,7 @@ static int joydev_connect(struct input_handler *handler, struct input_dev *dev,
joydev->minor = minor;

joydev->exist = 1;
joydev->handle.dev = dev;
joydev->handle.dev = input_get_device(dev);
joydev->handle.name = joydev->name;
joydev->handle.handler = handler;
joydev->handle.private = joydev;
Expand Down
3 changes: 2 additions & 1 deletion trunk/drivers/input/mousedev.c
Original file line number Diff line number Diff line change
Expand Up @@ -414,6 +414,7 @@ static void mousedev_free(struct device *dev)
{
struct mousedev *mousedev = container_of(dev, struct mousedev, dev);

input_put_device(mousedev->handle.dev);
kfree(mousedev);
}

Expand Down Expand Up @@ -865,7 +866,7 @@ static struct mousedev *mousedev_create(struct input_dev *dev,

mousedev->minor = minor;
mousedev->exist = 1;
mousedev->handle.dev = dev;
mousedev->handle.dev = input_get_device(dev);
mousedev->handle.name = mousedev->name;
mousedev->handle.handler = handler;
mousedev->handle.private = mousedev;
Expand Down
5 changes: 3 additions & 2 deletions trunk/include/linux/input.h
Original file line number Diff line number Diff line change
Expand Up @@ -1227,12 +1227,13 @@ void input_free_device(struct input_dev *dev);

static inline struct input_dev *input_get_device(struct input_dev *dev)
{
return to_input_dev(get_device(&dev->dev));
return dev ? to_input_dev(get_device(&dev->dev)) : NULL;
}

static inline void input_put_device(struct input_dev *dev)
{
put_device(&dev->dev);
if (dev)
put_device(&dev->dev);
}

static inline void *input_get_drvdata(struct input_dev *dev)
Expand Down

0 comments on commit 26d6f9a

Please sign in to comment.