Loading arch/arm64/boot/dts/qcom/trinket.dtsi +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1181,6 +1181,7 @@ qcom,pas-id = <4>; qcom,pas-id = <4>; qcom,smem-id = <421>; qcom,smem-id = <421>; qcom,minidump-id = <3>; qcom,minidump-id = <3>; qcom,aux-minidump-ids = <4>; qcom,complete-ramdump; qcom,complete-ramdump; /* Inputs from mss */ /* Inputs from mss */ Loading drivers/input/misc/uinput.c +26 −2 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,8 @@ #include <linux/input/mt.h> #include <linux/input/mt.h> #include "../input-compat.h" #include "../input-compat.h" static DEFINE_MUTEX(uinput_glb_mutex); static int uinput_dev_event(struct input_dev *dev, static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) unsigned int type, unsigned int code, int value) { { Loading Loading @@ -676,10 +678,18 @@ static unsigned int uinput_poll(struct file *file, poll_table *wait) static int uinput_release(struct inode *inode, struct file *file) static int uinput_release(struct inode *inode, struct file *file) { { struct uinput_device *udev = file->private_data; struct uinput_device *udev = file->private_data; int retval; retval = mutex_lock_interruptible(&uinput_glb_mutex); if (retval) return retval; uinput_destroy_device(udev); uinput_destroy_device(udev); file->private_data = NULL; kfree(udev); kfree(udev); mutex_unlock(&uinput_glb_mutex); return 0; return 0; } } Loading Loading @@ -810,7 +820,7 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, unsigned long arg, void __user *p) unsigned long arg, void __user *p) { { int retval; int retval; struct uinput_device *udev = file->private_data; struct uinput_device *udev; struct uinput_ff_upload ff_up; struct uinput_ff_upload ff_up; struct uinput_ff_erase ff_erase; struct uinput_ff_erase ff_erase; struct uinput_request *req; struct uinput_request *req; Loading @@ -818,10 +828,20 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, const char *name; const char *name; unsigned int size; unsigned int size; retval = mutex_lock_interruptible(&udev->mutex); retval = mutex_lock_interruptible(&uinput_glb_mutex); if (retval) if (retval) return retval; return retval; udev = file->private_data; if (!udev) { retval = -EINVAL; goto unlock_glb_mutex; } retval = mutex_lock_interruptible(&udev->mutex); if (retval) goto unlock_glb_mutex; if (!udev->dev) { if (!udev->dev) { retval = uinput_allocate_device(udev); retval = uinput_allocate_device(udev); if (retval) if (retval) Loading Loading @@ -1000,8 +1020,12 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, } } retval = -EINVAL; retval = -EINVAL; out: out: mutex_unlock(&udev->mutex); mutex_unlock(&udev->mutex); unlock_glb_mutex: mutex_unlock(&uinput_glb_mutex); return retval; return retval; } } Loading Loading
arch/arm64/boot/dts/qcom/trinket.dtsi +1 −0 Original line number Original line Diff line number Diff line Loading @@ -1181,6 +1181,7 @@ qcom,pas-id = <4>; qcom,pas-id = <4>; qcom,smem-id = <421>; qcom,smem-id = <421>; qcom,minidump-id = <3>; qcom,minidump-id = <3>; qcom,aux-minidump-ids = <4>; qcom,complete-ramdump; qcom,complete-ramdump; /* Inputs from mss */ /* Inputs from mss */ Loading
drivers/input/misc/uinput.c +26 −2 Original line number Original line Diff line number Diff line Loading @@ -43,6 +43,8 @@ #include <linux/input/mt.h> #include <linux/input/mt.h> #include "../input-compat.h" #include "../input-compat.h" static DEFINE_MUTEX(uinput_glb_mutex); static int uinput_dev_event(struct input_dev *dev, static int uinput_dev_event(struct input_dev *dev, unsigned int type, unsigned int code, int value) unsigned int type, unsigned int code, int value) { { Loading Loading @@ -676,10 +678,18 @@ static unsigned int uinput_poll(struct file *file, poll_table *wait) static int uinput_release(struct inode *inode, struct file *file) static int uinput_release(struct inode *inode, struct file *file) { { struct uinput_device *udev = file->private_data; struct uinput_device *udev = file->private_data; int retval; retval = mutex_lock_interruptible(&uinput_glb_mutex); if (retval) return retval; uinput_destroy_device(udev); uinput_destroy_device(udev); file->private_data = NULL; kfree(udev); kfree(udev); mutex_unlock(&uinput_glb_mutex); return 0; return 0; } } Loading Loading @@ -810,7 +820,7 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, unsigned long arg, void __user *p) unsigned long arg, void __user *p) { { int retval; int retval; struct uinput_device *udev = file->private_data; struct uinput_device *udev; struct uinput_ff_upload ff_up; struct uinput_ff_upload ff_up; struct uinput_ff_erase ff_erase; struct uinput_ff_erase ff_erase; struct uinput_request *req; struct uinput_request *req; Loading @@ -818,10 +828,20 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, const char *name; const char *name; unsigned int size; unsigned int size; retval = mutex_lock_interruptible(&udev->mutex); retval = mutex_lock_interruptible(&uinput_glb_mutex); if (retval) if (retval) return retval; return retval; udev = file->private_data; if (!udev) { retval = -EINVAL; goto unlock_glb_mutex; } retval = mutex_lock_interruptible(&udev->mutex); if (retval) goto unlock_glb_mutex; if (!udev->dev) { if (!udev->dev) { retval = uinput_allocate_device(udev); retval = uinput_allocate_device(udev); if (retval) if (retval) Loading Loading @@ -1000,8 +1020,12 @@ static long uinput_ioctl_handler(struct file *file, unsigned int cmd, } } retval = -EINVAL; retval = -EINVAL; out: out: mutex_unlock(&udev->mutex); mutex_unlock(&udev->mutex); unlock_glb_mutex: mutex_unlock(&uinput_glb_mutex); return retval; return retval; } } Loading