Loading drivers/media/rc/lirc_dev.c +34 −23 Original line number Original line Diff line number Diff line Loading @@ -203,13 +203,41 @@ static int lirc_cdev_add(struct irctl *ir) return retval; return retval; } } int lirc_register_driver(struct lirc_driver *d) static int lirc_allocate_buffer(struct irctl *ir) { { struct irctl *ir; int err; int minor; int bytes_in_key; int bytes_in_key; unsigned int chunk_size; unsigned int chunk_size; unsigned int buffer_size; unsigned int buffer_size; struct lirc_driver *d = &ir->d; bytes_in_key = BITS_TO_LONGS(d->code_length) + (d->code_length % 8 ? 1 : 0); buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; if (d->rbuf) { ir->buf = d->rbuf; } else { ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); if (!ir->buf) return -ENOMEM; err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); if (err) { kfree(ir->buf); return err; } } ir->chunk_size = ir->buf->chunk_size; return 0; } int lirc_register_driver(struct lirc_driver *d) { struct irctl *ir; int minor; int err; int err; if (!d) { if (!d) { Loading Loading @@ -314,26 +342,9 @@ int lirc_register_driver(struct lirc_driver *d) /* some safety check 8-) */ /* some safety check 8-) */ d->name[sizeof(d->name)-1] = '\0'; d->name[sizeof(d->name)-1] = '\0'; bytes_in_key = BITS_TO_LONGS(d->code_length) + err = lirc_allocate_buffer(ir); (d->code_length % 8 ? 1 : 0); if (err) buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; if (d->rbuf) { ir->buf = d->rbuf; } else { ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); if (!ir->buf) { err = -ENOMEM; goto out_lock; } err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); if (err) { kfree(ir->buf); goto out_lock; goto out_lock; } } ir->chunk_size = ir->buf->chunk_size; if (d->features == 0) if (d->features == 0) d->features = LIRC_CAN_REC_LIRCCODE; d->features = LIRC_CAN_REC_LIRCCODE; Loading Loading
drivers/media/rc/lirc_dev.c +34 −23 Original line number Original line Diff line number Diff line Loading @@ -203,13 +203,41 @@ static int lirc_cdev_add(struct irctl *ir) return retval; return retval; } } int lirc_register_driver(struct lirc_driver *d) static int lirc_allocate_buffer(struct irctl *ir) { { struct irctl *ir; int err; int minor; int bytes_in_key; int bytes_in_key; unsigned int chunk_size; unsigned int chunk_size; unsigned int buffer_size; unsigned int buffer_size; struct lirc_driver *d = &ir->d; bytes_in_key = BITS_TO_LONGS(d->code_length) + (d->code_length % 8 ? 1 : 0); buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; if (d->rbuf) { ir->buf = d->rbuf; } else { ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); if (!ir->buf) return -ENOMEM; err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); if (err) { kfree(ir->buf); return err; } } ir->chunk_size = ir->buf->chunk_size; return 0; } int lirc_register_driver(struct lirc_driver *d) { struct irctl *ir; int minor; int err; int err; if (!d) { if (!d) { Loading Loading @@ -314,26 +342,9 @@ int lirc_register_driver(struct lirc_driver *d) /* some safety check 8-) */ /* some safety check 8-) */ d->name[sizeof(d->name)-1] = '\0'; d->name[sizeof(d->name)-1] = '\0'; bytes_in_key = BITS_TO_LONGS(d->code_length) + err = lirc_allocate_buffer(ir); (d->code_length % 8 ? 1 : 0); if (err) buffer_size = d->buffer_size ? d->buffer_size : BUFLEN / bytes_in_key; chunk_size = d->chunk_size ? d->chunk_size : bytes_in_key; if (d->rbuf) { ir->buf = d->rbuf; } else { ir->buf = kmalloc(sizeof(struct lirc_buffer), GFP_KERNEL); if (!ir->buf) { err = -ENOMEM; goto out_lock; } err = lirc_buffer_init(ir->buf, chunk_size, buffer_size); if (err) { kfree(ir->buf); goto out_lock; goto out_lock; } } ir->chunk_size = ir->buf->chunk_size; if (d->features == 0) if (d->features == 0) d->features = LIRC_CAN_REC_LIRCCODE; d->features = LIRC_CAN_REC_LIRCCODE; Loading