Updated from Linux LTS 3.10.21 to 3.10.22
This commit is contained in:
@@ -18,6 +18,8 @@
|
||||
#include <linux/poll.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/vmalloc.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/input/mt.h>
|
||||
@@ -289,7 +291,11 @@ static int evdev_release(struct inode *inode, struct file *file)
|
||||
mutex_unlock(&evdev->mutex);
|
||||
|
||||
evdev_detach_client(evdev, client);
|
||||
kfree(client);
|
||||
|
||||
if (is_vmalloc_addr(client))
|
||||
vfree(client);
|
||||
else
|
||||
kfree(client);
|
||||
|
||||
evdev_close_device(evdev);
|
||||
|
||||
@@ -309,12 +315,14 @@ static int evdev_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
struct evdev *evdev = container_of(inode->i_cdev, struct evdev, cdev);
|
||||
unsigned int bufsize = evdev_compute_buffer_size(evdev->handle.dev);
|
||||
unsigned int size = sizeof(struct evdev_client) +
|
||||
bufsize * sizeof(struct input_event);
|
||||
struct evdev_client *client;
|
||||
int error;
|
||||
|
||||
client = kzalloc(sizeof(struct evdev_client) +
|
||||
bufsize * sizeof(struct input_event),
|
||||
GFP_KERNEL);
|
||||
client = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
|
||||
if (!client)
|
||||
client = vzalloc(size);
|
||||
if (!client)
|
||||
return -ENOMEM;
|
||||
|
||||
|
||||
@@ -439,7 +439,7 @@ static int cypress_get_finger_count(unsigned char header_byte)
|
||||
case 2: return 5;
|
||||
default:
|
||||
/* Invalid contact (e.g. palm). Ignore it. */
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -452,17 +452,10 @@ static int cypress_parse_packet(struct psmouse *psmouse,
|
||||
{
|
||||
unsigned char *packet = psmouse->packet;
|
||||
unsigned char header_byte = packet[0];
|
||||
int contact_cnt;
|
||||
|
||||
memset(report_data, 0, sizeof(struct cytp_report_data));
|
||||
|
||||
contact_cnt = cypress_get_finger_count(header_byte);
|
||||
|
||||
if (contact_cnt < 0) /* e.g. palm detect */
|
||||
return -EINVAL;
|
||||
|
||||
report_data->contact_cnt = contact_cnt;
|
||||
|
||||
report_data->contact_cnt = cypress_get_finger_count(header_byte);
|
||||
report_data->tap = (header_byte & ABS_MULTIFINGER_TAP) ? 1 : 0;
|
||||
|
||||
if (report_data->contact_cnt == 1) {
|
||||
@@ -535,11 +528,9 @@ static void cypress_process_packet(struct psmouse *psmouse, bool zero_pkt)
|
||||
int slots[CYTP_MAX_MT_SLOTS];
|
||||
int n;
|
||||
|
||||
if (cypress_parse_packet(psmouse, cytp, &report_data))
|
||||
return;
|
||||
cypress_parse_packet(psmouse, cytp, &report_data);
|
||||
|
||||
n = report_data.contact_cnt;
|
||||
|
||||
if (n > CYTP_MAX_MT_SLOTS)
|
||||
n = CYTP_MAX_MT_SLOTS;
|
||||
|
||||
@@ -605,10 +596,6 @@ static psmouse_ret_t cypress_validate_byte(struct psmouse *psmouse)
|
||||
return PSMOUSE_BAD_DATA;
|
||||
|
||||
contact_cnt = cypress_get_finger_count(packet[0]);
|
||||
|
||||
if (contact_cnt < 0)
|
||||
return PSMOUSE_BAD_DATA;
|
||||
|
||||
if (cytp->mode & CYTP_BIT_ABS_NO_PRESSURE)
|
||||
cypress_set_packet_size(psmouse, contact_cnt == 2 ? 7 : 4);
|
||||
else
|
||||
|
||||
@@ -765,6 +765,7 @@ static struct pnp_device_id pnp_kbd_devids[] = {
|
||||
{ .id = "CPQA0D7", .driver_data = 0 },
|
||||
{ .id = "", },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pnp, pnp_kbd_devids);
|
||||
|
||||
static struct pnp_driver i8042_pnp_kbd_driver = {
|
||||
.name = "i8042 kbd",
|
||||
@@ -786,6 +787,7 @@ static struct pnp_device_id pnp_aux_devids[] = {
|
||||
{ .id = "SYN0801", .driver_data = 0 },
|
||||
{ .id = "", },
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pnp, pnp_aux_devids);
|
||||
|
||||
static struct pnp_driver i8042_pnp_aux_driver = {
|
||||
.name = "i8042 aux",
|
||||
|
||||
@@ -146,12 +146,10 @@ enum {
|
||||
|
||||
#define USB_DEVICE_HID_CLASS(vend, prod) \
|
||||
.match_flags = USB_DEVICE_ID_MATCH_INT_CLASS \
|
||||
| USB_DEVICE_ID_MATCH_INT_PROTOCOL \
|
||||
| USB_DEVICE_ID_MATCH_DEVICE, \
|
||||
.idVendor = (vend), \
|
||||
.idProduct = (prod), \
|
||||
.bInterfaceClass = USB_INTERFACE_CLASS_HID, \
|
||||
.bInterfaceProtocol = USB_INTERFACE_PROTOCOL_MOUSE
|
||||
.bInterfaceClass = USB_INTERFACE_CLASS_HID
|
||||
|
||||
static const struct usb_device_id usbtouch_devices[] = {
|
||||
#ifdef CONFIG_TOUCHSCREEN_USB_EGALAX
|
||||
|
||||
Reference in New Issue
Block a user