diff --git a/drivers/input/lirc/lirc_bt829.c b/drivers/input/lirc/lirc_bt829.c index 0485884..b3c9967 100644 --- a/drivers/input/lirc/lirc_bt829.c +++ b/drivers/input/lirc/lirc_bt829.c @@ -116,7 +116,7 @@ static void atir_set_use_dec(void *data) dprintk("driver is closed\n"); } -int init_module(void) +static int __init atir_init_module(void) { struct pci_dev *pdev; @@ -147,13 +147,14 @@ int init_module(void) return 0; } +module_init(atir_init_module); -void cleanup_module(void) +static void __exit atir_cleanup_module(void) { lirc_unregister_driver(atir_minor); } - +module_exit(atir_cleanup_module); static int atir_init_start(void) { diff --git a/drivers/input/lirc/lirc_igorplugusb.c b/drivers/input/lirc/lirc_igorplugusb.c index 599037d..c6ed3f5 100644 --- a/drivers/input/lirc/lirc_igorplugusb.c +++ b/drivers/input/lirc/lirc_igorplugusb.c @@ -407,7 +407,7 @@ static int usb_remote_probe(struct usb_interface *intf, goto mem_failure_switch; } - ir->buf_in = usb_buffer_alloc(dev, + ir->buf_in = usb_alloc_coherent(dev, DEVICE_BUFLEN+DEVICE_HEADERLEN, GFP_ATOMIC, &ir->dma_in); if (!ir->buf_in) { @@ -439,7 +439,7 @@ mem_failure_switch: switch (mem_failure) { case 9: - usb_buffer_free(dev, DEVICE_BUFLEN+DEVICE_HEADERLEN, + usb_free_coherent(dev, DEVICE_BUFLEN+DEVICE_HEADERLEN, ir->buf_in, ir->dma_in); case 3: kfree(driver); @@ -497,7 +497,7 @@ static void usb_remote_disconnect(struct usb_interface *intf) ir->usbdev = NULL; wake_up_all(&ir->wait_out); - usb_buffer_free(dev, ir->len_in, ir->buf_in, ir->dma_in); + usb_free_coherent(dev, ir->len_in, ir->buf_in, ir->dma_in); unregister_from_lirc(ir); } diff --git a/drivers/input/lirc/lirc_imon.c b/drivers/input/lirc/lirc_imon.c index 5bea43b..d9d83bd 100644 --- a/drivers/input/lirc/lirc_imon.c +++ b/drivers/input/lirc/lirc_imon.c @@ -75,6 +75,7 @@ static int __init imon_init(void); static void __exit imon_exit(void); /*** G L O B A L S ***/ +#define IMON_DATA_BUF_SZ 35 struct imon_context { struct usb_device *usbdev; @@ -103,7 +104,7 @@ struct imon_context { } rx; struct tx_t { - unsigned char data_buf[35]; /* user data buffer */ + unsigned char data_buf[IMON_DATA_BUF_SZ]; /* user data buffer */ struct completion finished; /* wait for write to finish */ atomic_t busy; /* write in progress */ int status; /* status of tx completion */ @@ -379,6 +380,8 @@ static ssize_t vfd_write(struct file *file, const char *buf, struct imon_context *context; const unsigned char vfd_packet6[] = { 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF }; + unsigned char data_buf[IMON_DATA_BUF_SZ]; + context = (struct imon_context *)file->private_data; if (!context) { @@ -400,11 +403,13 @@ static ssize_t vfd_write(struct file *file, const char *buf, goto exit; } - if (copy_from_user(context->tx.data_buf, buf, n_bytes)) { + if (copy_from_user(data_buf, buf, n_bytes)) { retval = -EFAULT; goto exit; } + memcpy(context->tx.data_buf, data_buf, n_bytes); + /* Pad with spaces */ for (i = n_bytes; i < 32; ++i) context->tx.data_buf[i] = ' '; diff --git a/drivers/input/lirc/lirc_it87.c b/drivers/input/lirc/lirc_it87.c index c69662d..b253aa3 100644 --- a/drivers/input/lirc/lirc_it87.c +++ b/drivers/input/lirc/lirc_it87.c @@ -207,7 +207,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, { int i = 0; - if (n % sizeof(int) || (n / sizeof(int)) > WBUF_LEN) + if (n % sizeof(int) || (n > sizeof(int)*WBUF_LEN)) return -EINVAL; if (copy_from_user(tx_buf, buf, n)) return -EFAULT; diff --git a/drivers/input/lirc/lirc_ite8709.c b/drivers/input/lirc/lirc_ite8709.c index 6210847..00e31cb 100644 --- a/drivers/input/lirc/lirc_ite8709.c +++ b/drivers/input/lirc/lirc_ite8709.c @@ -522,15 +522,17 @@ static struct pnp_driver ite8709_pnp_driver = { .id_table = pnp_dev_table, }; -int init_module(void) +static int __init ite8709_init_module(void) { return pnp_register_driver(&ite8709_pnp_driver); } +module_init(ite8709_init_module); -void cleanup_module(void) +static void __exit ite8709_cleanup_module(void) { pnp_unregister_driver(&ite8709_pnp_driver); } +module_exit(ite8709_cleanup_module); MODULE_DESCRIPTION("LIRC driver for ITE8709 CIR port"); MODULE_AUTHOR("Grégory Lardière"); diff --git a/drivers/input/lirc/lirc_mceusb.c b/drivers/input/lirc/lirc_mceusb.c index 8b404e2..ea72db9 100644 --- a/drivers/input/lirc/lirc_mceusb.c +++ b/drivers/input/lirc/lirc_mceusb.c @@ -619,7 +619,7 @@ static ssize_t mceusb_transmit_ir(struct file *file, const char *buf, count = n / sizeof(int); /* Check if command is within limits */ - if (count > LIRCBUF_SIZE || count%2 == 0) + if (n > (LIRCBUF_SIZE*sizeof(int)) || count%2 == 0) return -EINVAL; if (copy_from_user(wbuf, buf, n)) return -EFAULT; @@ -991,7 +991,7 @@ static int mceusb_dev_probe(struct usb_interface *intf, if (lirc_buffer_init(rbuf, sizeof(int), LIRCBUF_SIZE)) goto mem_alloc_fail; - ir->buf_in = usb_buffer_alloc(dev, maxp, GFP_ATOMIC, &ir->dma_in); + ir->buf_in = usb_alloc_coherent(dev, maxp, GFP_ATOMIC, &ir->dma_in); if (!ir->buf_in) goto buf_in_alloc_fail; @@ -1122,7 +1122,7 @@ static int mceusb_dev_probe(struct usb_interface *intf, lirc_register_fail: usb_free_urb(ir->urb_in); urb_in_alloc_fail: - usb_buffer_free(dev, maxp, ir->buf_in, ir->dma_in); + usb_free_coherent(dev, maxp, ir->buf_in, ir->dma_in); buf_in_alloc_fail: lirc_buffer_free(rbuf); mem_alloc_fail: @@ -1151,7 +1151,7 @@ static void mceusb_dev_disconnect(struct usb_interface *intf) mutex_lock(&ir->dev_lock); usb_kill_urb(ir->urb_in); usb_free_urb(ir->urb_in); - usb_buffer_free(dev, ir->len_in, ir->buf_in, ir->dma_in); + usb_free_coherent(dev, ir->len_in, ir->buf_in, ir->dma_in); mutex_unlock(&ir->dev_lock); unregister_from_lirc(ir); diff --git a/drivers/input/lirc/lirc_sasem.c b/drivers/input/lirc/lirc_sasem.c index 4015684..cf095fa 100644 --- a/drivers/input/lirc/lirc_sasem.c +++ b/drivers/input/lirc/lirc_sasem.c @@ -86,6 +86,7 @@ static int __init sasem_init(void); static void __exit sasem_exit(void); /*** G L O B A L S ***/ +#define SASAM_DATA_BUF_SZ 32 struct sasem_context { @@ -106,7 +107,7 @@ struct sasem_context { unsigned char usb_tx_buf[8]; struct tx_t { - unsigned char data_buf[32]; /* user data buffer */ + unsigned char data_buf[SASAM_DATA_BUF_SZ]; /* user data buffer */ struct completion finished; /* wait for write to finish */ atomic_t busy; /* write in progress */ int status; /* status of tx completion */ @@ -364,6 +365,7 @@ static ssize_t vfd_write(struct file *file, const char *buf, int i; int retval = 0; struct sasem_context *context; + unsigned char data_buf[SASAM_DATA_BUF_SZ]; context = (struct sasem_context *) file->private_data; if (!context) { @@ -385,10 +387,12 @@ static ssize_t vfd_write(struct file *file, const char *buf, goto exit; } - retval = copy_from_user(context->tx.data_buf, buf, n_bytes); + retval = copy_from_user(data_buf, buf, n_bytes); if (retval < 0) goto exit; + memcpy(context->tx.data_buf, data_buf, n_bytes); + /* Pad with spaces */ for (i = n_bytes; i < 32; ++i) context->tx.data_buf[i] = ' '; diff --git a/drivers/input/lirc/lirc_serial.c b/drivers/input/lirc/lirc_serial.c index f4fcc37..101b397 100644 --- a/drivers/input/lirc/lirc_serial.c +++ b/drivers/input/lirc/lirc_serial.c @@ -967,7 +967,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, if (n % sizeof(int)) return -EINVAL; count = n / sizeof(int); - if (count > WBUF_LEN || count % 2 == 0) + if (n > (WBUF_LEN*sizeof(int)) || count % 2 == 0) return -EINVAL; if (copy_from_user(wbuf, buf, n)) return -EFAULT; diff --git a/drivers/input/lirc/lirc_sir.c b/drivers/input/lirc/lirc_sir.c index 4a471d6..91075ad 100644 --- a/drivers/input/lirc/lirc_sir.c +++ b/drivers/input/lirc/lirc_sir.c @@ -297,7 +297,7 @@ static ssize_t lirc_write(struct file *file, const char *buf, size_t n, unsigned long flags; int i; - if (n % sizeof(int) || (n / sizeof(int)) > WBUF_LEN) + if (n % sizeof(int) || (n > WBUF_LEN*sizeof(int))) return -EINVAL; if (copy_from_user(tx_buf, buf, n)) return -EFAULT; diff --git a/drivers/input/lirc/lirc_streamzap.c b/drivers/input/lirc/lirc_streamzap.c index f4374e8..b7c594f 100644 --- a/drivers/input/lirc/lirc_streamzap.c +++ b/drivers/input/lirc/lirc_streamzap.c @@ -494,7 +494,7 @@ static int streamzap_probe(struct usb_interface *interface, /* Allocate the USB buffer and IRQ URB */ sz->buf_in_len = sz->endpoint->wMaxPacketSize; - sz->buf_in = usb_buffer_alloc(sz->udev, sz->buf_in_len, + sz->buf_in = usb_alloc_coherent(sz->udev, sz->buf_in_len, GFP_ATOMIC, &sz->dma_in); if (sz->buf_in == NULL) goto free_sz; @@ -597,7 +597,7 @@ free_sz: if (sz) { usb_free_urb(sz->urb_in); - usb_buffer_free(udev, sz->buf_in_len, sz->buf_in, sz->dma_in); + usb_free_coherent(udev, sz->buf_in_len, sz->buf_in, sz->dma_in); kfree(sz); } @@ -703,7 +703,7 @@ static void streamzap_disconnect(struct usb_interface *interface) usb_free_urb(sz->urb_in); - usb_buffer_free(sz->udev, sz->buf_in_len, sz->buf_in, sz->dma_in); + usb_free_coherent(sz->udev, sz->buf_in_len, sz->buf_in, sz->dma_in); minor = sz->driver->minor; kfree(sz->driver->rbuf);