diff options
author | Duna Oh <duna.oh@samsung.com> | 2015-12-15 10:02:49 -0500 |
---|---|---|
committer | Chris Michael <cpmichael@osg.samsung.com> | 2015-12-15 10:28:39 -0500 |
commit | cb23fd2af2d07c17ae2d6c08a7c87cf8abf45814 (patch) | |
tree | 7c875da34053d84745c259ebd17e84fa260144fd /src/lib/ecore_drm/ecore_drm_private.h | |
parent | 7fd907a1322ae251ca171f610dcaf06c700565e7 (diff) |
ecore-drm: Fix failure of setting/closing evdev->fd which causes fd leak
Summary:
When a input device is plugged in, _cb_open_restricted() is called before creating evdev.
So setting fd value on evdev was failed in _cb_open_restricted() and also closing evdev->fd was invalid.
Using a eina_hash which has 'path-fd' pairs, we can find fd value after evdev is created.
@fix
Test Plan:
(1) Multiple input devices are connected. Their evdev->fd remains zero or initial value.
(2) When one of those devices are plugged out, fd leak would happen.
Reviewers: raster, zmike, gwanglim, stefan_schmidt, devilhorns, ManMower
Subscribers: cedric, jpeg, Jeon, input.hacker
Differential Revision: https://phab.enlightenment.org/D3428
Diffstat (limited to '')
-rw-r--r-- | src/lib/ecore_drm/ecore_drm_private.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/lib/ecore_drm/ecore_drm_private.h b/src/lib/ecore_drm/ecore_drm_private.h index aa97a2025f..fbc6bda00e 100644 --- a/src/lib/ecore_drm/ecore_drm_private.h +++ b/src/lib/ecore_drm/ecore_drm_private.h | |||
@@ -289,4 +289,6 @@ void _ecore_drm_dbus_device_release(uint32_t major, uint32_t minor); | |||
289 | Eina_Bool _ecore_drm_dbus_session_take(void); | 289 | Eina_Bool _ecore_drm_dbus_session_take(void); |
290 | Eina_Bool _ecore_drm_dbus_session_release(void); | 290 | Eina_Bool _ecore_drm_dbus_session_release(void); |
291 | 291 | ||
292 | void _ecore_drm_inputs_init(void); | ||
293 | void _ecore_drm_inputs_shutdown(void); | ||
292 | #endif | 294 | #endif |