@@ -2,12 +2,12 @@ diff --git a/drivers/media/dvb-core/dvb_net.c b/drivers/media/dvb-core/dvb_net.c
index f91c80c..d487c15 100644
--- a/drivers/media/dvb-core/dvb_net.c
+++ b/drivers/media/dvb-core/dvb_net.c
-@@ -653,7 +653,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
- dev_kfree_skb(priv->ule_skb);
- } else {
- /* CRC32 verified OK. */
-- u8 dest_addr[ETH_ALEN];
-+ u8 dest_addr[ETH_ALEN] = { 0 };
- static const u8 bc_addr[ETH_ALEN] =
- { [ 0 ... ETH_ALEN-1] = 0xff };
+@@ -662,7 +662,7 @@
+ static void dvb_net_ule_check_crc(struct dvb_net_ule_handle *h,
+ u32 ule_crc, u32 expected_crc)
+ {
+- u8 dest_addr[ETH_ALEN];
++ u8 dest_addr[ETH_ALEN] = { 0 };
+ if (ule_crc != expected_crc) {
+ pr_warn("%lu: CRC32 check FAILED: %08x / %08x, SNDU len %d type %#x, ts_remain %d, next 2: %x.\n",
@@ -2,7 +2,7 @@ diff --git a/drivers/media/i2c/cx25840/cx25840-ir.c b/drivers/media/i2c/cx25840/
index 4cf8f18..facb846 100644
--- a/drivers/media/i2c/cx25840/cx25840-ir.c
+++ b/drivers/media/i2c/cx25840/cx25840-ir.c
-@@ -117,7 +117,7 @@ struct cx25840_ir_state {
+@@ -112,7 +112,7 @@ struct cx25840_ir_state {
atomic_t rxclk_divider;
atomic_t rx_invert;
@@ -11,7 +11,7 @@ index 4cf8f18..facb846 100644
spinlock_t rx_kfifo_lock; /* protect Rx data kfifo */
struct v4l2_subdev_ir_parameters tx_params;
-@@ -524,7 +524,6 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
+@@ -519,7 +519,6 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
struct cx25840_state *state = to_state(sd);
struct cx25840_ir_state *ir_state = to_ir_state(sd);
struct i2c_client *c = NULL;
@@ -19,7 +19,7 @@ index 4cf8f18..facb846 100644
union cx25840_ir_fifo_rec rx_data[FIFO_RX_DEPTH];
unsigned int i, j, k;
-@@ -610,9 +609,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
+@@ -605,9 +604,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
if (i == 0)
break;
j = i * sizeof(union cx25840_ir_fifo_rec);
@@ -31,7 +31,7 @@ index 4cf8f18..facb846 100644
if (k != j)
kror++; /* rx_kfifo over run */
}
-@@ -648,10 +646,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
+@@ -643,10 +641,8 @@ int cx25840_ir_irq_handler(struct v4l2_subdev *sd, u32 status, bool *handled)
cx25840_write4(c, CX25840_IR_CNTRL_REG, cntrl);
*handled = true;
}
@@ -43,7 +43,7 @@ index 4cf8f18..facb846 100644
if (events)
v4l2_subdev_notify(sd, V4L2_SUBDEV_IR_RX_NOTIFY, &events);
-@@ -682,8 +678,7 @@ static int cx25840_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
+@@ -677,8 +673,7 @@ static int cx25840_ir_rx_read(struct v4l2_subdev *sd, u8 *buf, size_t count,
return 0;
}
@@ -53,7 +53,7 @@ index 4cf8f18..facb846 100644
n /= sizeof(union cx25840_ir_fifo_rec);
*num = n * sizeof(union cx25840_ir_fifo_rec);
-@@ -839,11 +834,7 @@ static int cx25840_ir_rx_s_parameters(struct v4l2_subdev *sd,
+@@ -834,11 +829,7 @@ static int cx25840_ir_rx_s_parameters(struct v4l2_subdev *sd,
o->interrupt_enable = p->interrupt_enable;
o->enable = p->enable;
if (p->enable) {
@@ -66,7 +66,7 @@ index 4cf8f18..facb846 100644
if (p->interrupt_enable)
irqenable_rx(sd, IRQEN_RSE | IRQEN_RTE | IRQEN_ROE);
control_rx_enable(c, p->enable);
-@@ -1235,8 +1226,9 @@ int cx25840_ir_probe(struct v4l2_subdev *sd)
+@@ -1229,8 +1220,9 @@ int cx25840_ir_probe(struct v4l2_subdev *sd)
return -ENOMEM;
spin_lock_init(&ir_state->rx_kfifo_lock);
@@ -78,7 +78,7 @@ index 4cf8f18..facb846 100644
return -ENOMEM;
ir_state->c = state->c;
-@@ -1270,7 +1262,7 @@ int cx25840_ir_remove(struct v4l2_subdev *sd)
+@@ -1264,7 +1256,7 @@ int cx25840_ir_remove(struct v4l2_subdev *sd)
cx25840_ir_rx_shutdown(sd);
cx25840_ir_tx_shutdown(sd);
@@ -157,7 +157,7 @@ index c1aa888..b04d70c 100644
if (p->interrupt_enable)
irqenable_rx(dev, IRQEN_RSE | IRQEN_RTE | IRQEN_ROE);
control_rx_enable(dev, p->enable);
-@@ -1179,8 +1170,10 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
+@@ -1178,8 +1169,10 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
return -ENOMEM;
spin_lock_init(&state->rx_kfifo_lock);
@@ -170,7 +170,7 @@ index c1aa888..b04d70c 100644
state->dev = dev;
sd = &state->sd;
-@@ -1208,7 +1201,7 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
+@@ -1207,7 +1200,7 @@ int cx23888_ir_probe(struct cx23885_dev *dev)
default_params = default_tx_params;
v4l2_subdev_call(sd, ir, tx_s_parameters, &default_params);
} else {
@@ -179,7 +179,7 @@ index c1aa888..b04d70c 100644
}
return ret;
}
-@@ -1227,7 +1220,7 @@ int cx23888_ir_remove(struct cx23885_dev *dev)
+@@ -1226,7 +1219,7 @@ int cx23888_ir_remove(struct cx23885_dev *dev)
state = to_state(sd);
v4l2_device_unregister_subdev(sd);
@@ -192,7 +192,7 @@ diff --git a/drivers/media/pci/meye/meye.c b/drivers/media/pci/meye/meye.c
index aeae547..3d85fff 100644
--- a/drivers/media/pci/meye/meye.c
+++ b/drivers/media/pci/meye/meye.c
-@@ -804,8 +804,8 @@ again:
+@@ -796,8 +796,8 @@ again:
return IRQ_HANDLED;
if (meye.mchip_mode == MCHIP_HIC_MODE_CONT_OUT) {
@@ -203,7 +203,7 @@ index aeae547..3d85fff 100644
mchip_free_frame();
return IRQ_HANDLED;
}
-@@ -815,8 +815,7 @@ again:
+@@ -807,8 +807,7 @@ again:
meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
meye.grab_buffer[reqnr].sequence = sequence++;
@@ -213,7 +213,7 @@ index aeae547..3d85fff 100644
wake_up_interruptible(&meye.proc_list);
} else {
int size;
-@@ -825,8 +824,8 @@ again:
+@@ -817,8 +816,8 @@ again:
mchip_free_frame();
goto again;
}
@@ -224,7 +224,7 @@ index aeae547..3d85fff 100644
mchip_free_frame();
goto again;
}
-@@ -836,8 +835,7 @@ again:
+@@ -828,8 +827,7 @@ again:
meye.grab_buffer[reqnr].state = MEYE_BUF_DONE;
v4l2_get_timestamp(&meye.grab_buffer[reqnr].timestamp);
meye.grab_buffer[reqnr].sequence = sequence++;
@@ -234,7 +234,7 @@ index aeae547..3d85fff 100644
wake_up_interruptible(&meye.proc_list);
}
mchip_free_frame();
-@@ -865,8 +863,8 @@ static int meye_open(struct file *file)
+@@ -857,8 +855,8 @@ static int meye_open(struct file *file)
for (i = 0; i < MEYE_MAX_BUFNBRS; i++)
meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
@@ -245,7 +245,7 @@ index aeae547..3d85fff 100644
return v4l2_fh_open(file);
}
-@@ -939,8 +937,7 @@ static int meyeioc_qbuf_capt(int *nb)
+@@ -931,8 +929,7 @@ static int meyeioc_qbuf_capt(int *nb)
mchip_cont_compression_start();
meye.grab_buffer[*nb].state = MEYE_BUF_USING;
@@ -255,7 +255,7 @@ index aeae547..3d85fff 100644
mutex_unlock(&meye.lock);
return 0;
-@@ -972,9 +969,7 @@ static int meyeioc_sync(struct file *file, void *fh, int *i)
+@@ -964,9 +961,7 @@ static int meyeioc_sync(struct file *file, void *fh, int *i)
/* fall through */
case MEYE_BUF_DONE:
meye.grab_buffer[*i].state = MEYE_BUF_UNUSED;
@@ -266,7 +266,7 @@ index aeae547..3d85fff 100644
}
*i = meye.grab_buffer[*i].size;
mutex_unlock(&meye.lock);
-@@ -1319,8 +1314,7 @@ static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
+@@ -1307,8 +1302,7 @@ static int vidioc_qbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
buf->flags |= V4L2_BUF_FLAG_QUEUED;
buf->flags &= ~V4L2_BUF_FLAG_DONE;
meye.grab_buffer[buf->index].state = MEYE_BUF_USING;
@@ -276,7 +276,7 @@ index aeae547..3d85fff 100644
mutex_unlock(&meye.lock);
return 0;
-@@ -1335,19 +1329,19 @@ static int vidioc_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
+@@ -1323,19 +1317,19 @@ static int vidioc_dqbuf(struct file *file, void *fh, struct v4l2_buffer *buf)
mutex_lock(&meye.lock);
@@ -300,7 +300,7 @@ index aeae547..3d85fff 100644
mutex_unlock(&meye.lock);
return -EBUSY;
}
-@@ -1397,8 +1391,8 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i)
+@@ -1385,8 +1379,8 @@ static int vidioc_streamoff(struct file *file, void *fh, enum v4l2_buf_type i)
{
mutex_lock(&meye.lock);
mchip_hic_stop();
@@ -311,7 +311,7 @@ index aeae547..3d85fff 100644
for (i = 0; i < MEYE_MAX_BUFNBRS; i++)
meye.grab_buffer[i].state = MEYE_BUF_UNUSED;
-@@ -1441,7 +1435,7 @@ static unsigned int meye_poll(struct file *file, poll_table *wait)
+@@ -1429,7 +1423,7 @@ static unsigned int meye_poll(struct file *file, poll_table *wait)
mutex_lock(&meye.lock);
poll_wait(file, &meye.proc_list, wait);
@@ -320,28 +320,27 @@ index aeae547..3d85fff 100644
res |= POLLIN | POLLRDNORM;
mutex_unlock(&meye.lock);
return res;
-@@ -1649,14 +1643,16 @@ static int meye_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
- }
+@@ -1630,13 +1624,15 @@ static int meye_probe(struct pci_dev *pcidev, const struct pci_device_id *ent)
+ goto outvmalloc;
spin_lock_init(&meye.grabq_lock);
- if (kfifo_alloc(&meye.grabq, sizeof(int) * MEYE_MAX_BUFNBRS,
-- GFP_KERNEL)) {
+- GFP_KERNEL))
+ meye.grabq = kfifo_alloc(sizeof(int) * MEYE_MAX_BUFNBRS, GFP_KERNEL,
-+ &meye.grabq_lock);
-+ if (IS_ERR(meye.grabq)) {
- v4l2_err(v4l2_dev, "fifo allocation failed\n");
++ &meye.grabq_lock);
++ if (IS_ERR(meye.grabq))
goto outkfifoalloc1;
- }
+
spin_lock_init(&meye.doneq_lock);
- if (kfifo_alloc(&meye.doneq, sizeof(int) * MEYE_MAX_BUFNBRS,
-- GFP_KERNEL)) {
+- GFP_KERNEL))
+ meye.doneq = kfifo_alloc(sizeof(int) * MEYE_MAX_BUFNBRS, GFP_KERNEL,
-+ &meye.doneq_lock);
-+ if (IS_ERR(meye.doneq)) {
- v4l2_err(v4l2_dev, "fifo allocation failed\n");
++ &meye.doneq_lock);
++ if (IS_ERR(meye.doneq))
goto outkfifoalloc2;
- }
-@@ -1774,9 +1770,9 @@ outregions:
+
+ meye.vdev = meye_template;
+@@ -1753,9 +1749,9 @@ outregions:
outenabledev:
sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 0);
outsonypienable:
@@ -353,7 +352,7 @@ index aeae547..3d85fff 100644
outkfifoalloc1:
vfree(meye.grab_temp);
outvmalloc:
-@@ -1807,8 +1803,8 @@ static void meye_remove(struct pci_dev *pcidev)
+@@ -1784,8 +1780,8 @@ static void meye_remove(struct pci_dev *pcidev)
sony_pic_camera_command(SONY_PIC_COMMAND_SETCAMERA, 0);
@@ -368,7 +367,7 @@ diff --git a/drivers/media/pci/meye/meye.h b/drivers/media/pci/meye/meye.h
index 6fed927..77aad1f 100644
--- a/drivers/media/pci/meye/meye.h
+++ b/drivers/media/pci/meye/meye.h
-@@ -306,9 +306,9 @@ struct meye {
+@@ -302,9 +302,9 @@ struct meye {
struct meye_grab_buffer grab_buffer[MEYE_MAX_BUFNBRS];
int vma_use_count[MEYE_MAX_BUFNBRS]; /* mmap count */
struct mutex lock; /* mutex for open/mmap... */
@@ -379,84 +378,84 @@ index 6fed927..77aad1f 100644
+ struct kfifo *doneq; /* queue for grabbed buffers */
spinlock_t doneq_lock; /* lock protecting the queue */
wait_queue_head_t proc_list; /* wait queue */
- struct video_device *vdev; /* video device parameters */
+ struct video_device vdev; /* video device parameters */
diff --git a/drivers/media/rc/rc-core-priv.h b/drivers/media/rc/rc-core-priv.h
index 84967ca..2aca801 100644
--- a/drivers/media/rc/rc-core-priv.h
+++ b/drivers/media/rc/rc-core-priv.h
-@@ -35,7 +35,7 @@ struct ir_raw_event_ctrl {
+@@ -39,7 +39,7 @@ struct ir_raw_event_ctrl {
struct list_head list; /* to keep track of raw clients */
struct task_struct *thread;
- spinlock_t lock;
-- struct kfifo kfifo; /* fifo for the pulse/space durations */
-+ struct kfifo *kfifo; /* fifo for the pulse/space durations */
+ /* fifo for the pulse/space durations */
+- struct kfifo kfifo;
++ struct kfifo *kfifo;
ktime_t last_event; /* when last event occurred */
- enum raw_event_type last_type; /* last event type */
struct rc_dev *dev; /* pointer to the parent rc_dev */
-diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
-index e8fff2a..7709c32 100644
---- a/drivers/media/rc/rc-ir-raw.c
-+++ b/drivers/media/rc/rc-ir-raw.c
-@@ -41,7 +41,7 @@ static int ir_raw_event_thread(void *data)
- while (!kthread_should_stop()) {
-
- spin_lock_irq(&raw->lock);
-- retval = kfifo_len(&raw->kfifo);
-+ retval = kfifo_len(raw->kfifo);
-
- if (retval < sizeof(ev)) {
- set_current_state(TASK_INTERRUPTIBLE);
-@@ -54,7 +54,7 @@ static int ir_raw_event_thread(void *data)
- continue;
- }
-
-- retval = kfifo_out(&raw->kfifo, &ev, sizeof(ev));
-+ retval = __kfifo_get(raw->kfifo, (void *)&ev, sizeof(ev));
- spin_unlock_irq(&raw->lock);
-
- mutex_lock(&ir_raw_handler_lock);
-@@ -85,7 +85,7 @@ int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev)
- IR_dprintk(2, "sample: (%05dus %s)\n",
- TO_US(ev->duration), TO_STR(ev->pulse));
-
-- if (kfifo_in(&dev->raw->kfifo, ev, sizeof(*ev)) != sizeof(*ev))
-+ if (__kfifo_put(dev->raw->kfifo, (void *)ev, sizeof(*ev)) != sizeof(*ev))
- return -ENOMEM;
-
- return 0;
-@@ -264,11 +264,11 @@ int ir_raw_event_register(struct rc_dev *dev)
- dev->raw->dev = dev;
- dev->enabled_protocols = ~0;
- dev->change_protocol = change_protocol;
-- rc = kfifo_alloc(&dev->raw->kfifo,
-- sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE,
-- GFP_KERNEL);
-- if (rc < 0)
-+ dev->raw->kfifo = kfifo_alloc(sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE, GFP_KERNEL, NULL);
-+ if (IS_ERR(dev->raw->kfifo)) {
-+ rc = PTR_ERR(dev->raw->kfifo);
- goto out;
-+ }
-
- spin_lock_init(&dev->raw->lock);
- dev->raw->thread = kthread_run(ir_raw_event_thread, dev->raw,
-@@ -310,7 +310,7 @@ void ir_raw_event_unregister(struct rc_dev *dev)
- handler->raw_unregister(dev);
- mutex_unlock(&ir_raw_handler_lock);
-
-- kfifo_free(&dev->raw->kfifo);
-+ kfifo_free(dev->raw->kfifo);
- kfree(dev->raw);
- dev->raw = NULL;
- }
+ /* edge driver */
+### diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c
+### index e8fff2a..7709c32 100644
+### --- a/drivers/media/rc/rc-ir-raw.c
+### +++ b/drivers/media/rc/rc-ir-raw.c
+### @@ -41,7 +41,7 @@ static int ir_raw_event_thread(void *data)
+### while (!kthread_should_stop()) {
+###
+### spin_lock_irq(&raw->lock);
+### - retval = kfifo_len(&raw->kfifo);
+### + retval = kfifo_len(raw->kfifo);
+###
+### if (retval < sizeof(ev)) {
+### set_current_state(TASK_INTERRUPTIBLE);
+### @@ -54,7 +54,7 @@ static int ir_raw_event_thread(void *data)
+### continue;
+### }
+###
+### - retval = kfifo_out(&raw->kfifo, &ev, sizeof(ev));
+### + retval = __kfifo_get(raw->kfifo, (void *)&ev, sizeof(ev));
+### spin_unlock_irq(&raw->lock);
+###
+### mutex_lock(&ir_raw_handler_lock);
+### @@ -85,7 +85,7 @@ int ir_raw_event_store(struct rc_dev *dev, struct ir_raw_event *ev)
+### IR_dprintk(2, "sample: (%05dus %s)\n",
+### TO_US(ev->duration), TO_STR(ev->pulse));
+###
+### - if (kfifo_in(&dev->raw->kfifo, ev, sizeof(*ev)) != sizeof(*ev))
+### + if (__kfifo_put(dev->raw->kfifo, (void *)ev, sizeof(*ev)) != sizeof(*ev))
+### return -ENOMEM;
+###
+### return 0;
+### @@ -264,11 +264,11 @@ int ir_raw_event_register(struct rc_dev *dev)
+### dev->raw->dev = dev;
+### dev->enabled_protocols = ~0;
+### dev->change_protocol = change_protocol;
+### - rc = kfifo_alloc(&dev->raw->kfifo,
+### - sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE,
+### - GFP_KERNEL);
+### - if (rc < 0)
+### + dev->raw->kfifo = kfifo_alloc(sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE, GFP_KERNEL, NULL);
+### + if (IS_ERR(dev->raw->kfifo)) {
+### + rc = PTR_ERR(dev->raw->kfifo);
+### goto out;
+### + }
+###
+### spin_lock_init(&dev->raw->lock);
+### dev->raw->thread = kthread_run(ir_raw_event_thread, dev->raw,
+### @@ -310,7 +310,7 @@ void ir_raw_event_unregister(struct rc_dev *dev)
+### handler->raw_unregister(dev);
+### mutex_unlock(&ir_raw_handler_lock);
+###
+### - kfifo_free(&dev->raw->kfifo);
+### + kfifo_free(dev->raw->kfifo);
+### kfree(dev->raw);
+### dev->raw = NULL;
+### }
diff --git a/drivers/staging/media/lirc/lirc_zilog.c b/drivers/staging/media/lirc/lirc_zilog.c
index 1ccf626..b0e514b 100644
--- a/drivers/staging/media/lirc/lirc_zilog.c
+++ b/drivers/staging/media/lirc/lirc_zilog.c
-@@ -199,7 +199,7 @@ static void release_ir_device(struct kref *ref)
- lirc_unregister_driver(ir->l.minor);
- ir->l.minor = MAX_IRCTL_DEVICES;
- }
+@@ -187,7 +187,7 @@ static void release_ir_device(struct kref *ref)
+ if (ir->l)
+ lirc_unregister_device(ir->l);
+
- if (kfifo_initialized(&ir->rbuf.fifo))
+ if (ir->rbuf.fifo)
lirc_buffer_free(&ir->rbuf);
@@ -533,7 +532,7 @@ index 05e7ad5..f40097c 100644
return len;
}
-@@ -98,24 +92,19 @@ static inline int lirc_buffer_available(struct lirc_buffer *buf)
+@@ -93,24 +87,19 @@ static inline int lirc_buffer_available(struct lirc_buffer *buf)
static inline unsigned int lirc_buffer_read(struct lirc_buffer *buf,
unsigned char *dest)
{
@@ -562,4 +561,4 @@ index 05e7ad5..f40097c 100644
+ return 0;
}
- struct lirc_driver {
+ /**