Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:
Input: make sure input interfaces pin parent input devices
Input: apm-power - fix crash when unloading modules
Input: pxa27x - fix keypad KPC macros

+14 -16
+2 -5
drivers/input/apm-power.c
··· 63 63 handle->handler = handler; 64 64 handle->name = "apm-power"; 65 65 66 - handler->private = handle; 67 - 68 66 error = input_register_handle(handle); 69 67 if (error) { 70 68 printk(KERN_ERR ··· 85 87 return 0; 86 88 } 87 89 88 - static void apmpower_disconnect(struct input_handle *handler) 90 + static void apmpower_disconnect(struct input_handle *handle) 89 91 { 90 - struct input_handle *handle = handler->private; 91 - 92 92 input_close_device(handle); 93 + input_unregister_handle(handle); 93 94 kfree(handle); 94 95 } 95 96
+2 -4
drivers/input/evdev.c
··· 124 124 { 125 125 struct evdev *evdev = container_of(dev, struct evdev, dev); 126 126 127 + input_put_device(evdev->handle.dev); 127 128 kfree(evdev); 128 129 } 129 130 ··· 854 853 evdev_hangup(evdev); 855 854 evdev_remove_chrdev(evdev); 856 855 857 - if (evdev->grab) 858 - evdev_ungrab(evdev, evdev->grab); 859 - 860 856 /* evdev is marked dead so no one else accesses evdev->open */ 861 857 if (evdev->open) { 862 858 input_flush_device(handle, NULL); ··· 894 896 evdev->exist = 1; 895 897 evdev->minor = minor; 896 898 897 - evdev->handle.dev = dev; 899 + evdev->handle.dev = input_get_device(dev); 898 900 evdev->handle.name = evdev->name; 899 901 evdev->handle.handler = handler; 900 902 evdev->handle.private = evdev;
+2 -1
drivers/input/joydev.c
··· 171 171 { 172 172 struct joydev *joydev = container_of(dev, struct joydev, dev); 173 173 174 + input_put_device(joydev->handle.dev); 174 175 kfree(joydev); 175 176 } 176 177 ··· 751 750 joydev->minor = minor; 752 751 753 752 joydev->exist = 1; 754 - joydev->handle.dev = dev; 753 + joydev->handle.dev = input_get_device(dev); 755 754 joydev->handle.name = joydev->name; 756 755 joydev->handle.handler = handler; 757 756 joydev->handle.private = joydev;
+3 -3
drivers/input/keyboard/pxa27x_keypad.c
··· 50 50 #define KPKDI 0x0048 51 51 52 52 /* bit definitions */ 53 - #define KPC_MKRN(n) ((((n) & 0x7) - 1) << 26) /* matrix key row number */ 54 - #define KPC_MKCN(n) ((((n) & 0x7) - 1) << 23) /* matrix key column number */ 55 - #define KPC_DKN(n) ((((n) & 0x7) - 1) << 6) /* direct key number */ 53 + #define KPC_MKRN(n) ((((n) - 1) & 0x7) << 26) /* matrix key row number */ 54 + #define KPC_MKCN(n) ((((n) - 1) & 0x7) << 23) /* matrix key column number */ 55 + #define KPC_DKN(n) ((((n) - 1) & 0x7) << 6) /* direct key number */ 56 56 57 57 #define KPC_AS (0x1 << 30) /* Automatic Scan bit */ 58 58 #define KPC_ASACT (0x1 << 29) /* Automatic Scan on Activity */
+2 -1
drivers/input/mousedev.c
··· 414 414 { 415 415 struct mousedev *mousedev = container_of(dev, struct mousedev, dev); 416 416 417 + input_put_device(mousedev->handle.dev); 417 418 kfree(mousedev); 418 419 } 419 420 ··· 866 865 867 866 mousedev->minor = minor; 868 867 mousedev->exist = 1; 869 - mousedev->handle.dev = dev; 868 + mousedev->handle.dev = input_get_device(dev); 870 869 mousedev->handle.name = mousedev->name; 871 870 mousedev->handle.handler = handler; 872 871 mousedev->handle.private = mousedev;
+3 -2
include/linux/input.h
··· 1227 1227 1228 1228 static inline struct input_dev *input_get_device(struct input_dev *dev) 1229 1229 { 1230 - return to_input_dev(get_device(&dev->dev)); 1230 + return dev ? to_input_dev(get_device(&dev->dev)) : NULL; 1231 1231 } 1232 1232 1233 1233 static inline void input_put_device(struct input_dev *dev) 1234 1234 { 1235 - put_device(&dev->dev); 1235 + if (dev) 1236 + put_device(&dev->dev); 1236 1237 } 1237 1238 1238 1239 static inline void *input_get_drvdata(struct input_dev *dev)