From 05395a3d86a928d374c970a0b35a6a711072f86c Mon Sep 17 00:00:00 2001
From: Mauro Carvalho Chehab <mchehab@redhat.com>
Date: Sun, 6 Dec 2009 08:32:49 -0300
Subject: [PATCH] V4L/DVB (13576): ir-common: fix an oops caused by the usage
 of an initialized drvdata

As reported by Sander Eikelenboom <linux@eikelemboon.it>:

> Tried to update my v4l-dvb modules today, but got a bug with my pinnacle
> card, seems to be related to the recent changes in the ir code.
>
> Dec  5 23:30:25 security kernel: [    5.735698] BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
> Dec  5 23:30:25 security kernel: [    5.735716] IP: [<ffffffffa00997be>] :ir_common:ir_input_free+0x26/0x3e

Thanks-to: Sander Eikelenboom <linux@eikelemboon.it> for reporting and testing the fix.
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
---
 drivers/media/common/ir-keytable.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/media/common/ir-keytable.c b/drivers/media/common/ir-keytable.c
index 26ce5bc2fdd5..ceef0e82fb4b 100644
--- a/drivers/media/common/ir-keytable.c
+++ b/drivers/media/common/ir-keytable.c
@@ -419,6 +419,9 @@ void ir_input_free(struct input_dev *dev)
 {
 	struct ir_scancode_table *rc_tab = input_get_drvdata(dev);
 
+	if (!rc_tab)
+		return;
+
 	IR_dprintk(1, "Freed keycode table\n");
 
 	rc_tab->size = 0;
-- 
GitLab