diff options
author | Kyle McMartin <kmcmartin@redhat.com> | 2011-01-06 14:59:33 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2011-01-19 08:45:50 -0500 |
commit | 2e4c55626a0c30b5b2bc9469c025a563a81c3785 (patch) | |
tree | f630fe0c492d562a4de661d126865c5ea8dcee6c | |
parent | 7d2edfc23e9852591cb031a26093cdcd07a34a90 (diff) |
[media] rc/ene_ir: fix oops on module load
dev->rdev is accessed in ene_setup_hw_settings, so it needs to be wired
up before then.
[Jarod Wilson]: Also fix a possible improper resource freeing bug while
we're looking at possible probe issues here.
Signed-off-by: Kyle McMartin <kmcmartin@redhat.com>
CC: Maxim Levitsky <maximlevitsky@gmail.com>
Signed-off-by: Jarod Wilson <jarod@redhat.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/rc/ene_ir.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/media/rc/ene_ir.c b/drivers/media/rc/ene_ir.c index 80b3c319f698..885abdddfaa8 100644 --- a/drivers/media/rc/ene_ir.c +++ b/drivers/media/rc/ene_ir.c | |||
@@ -1004,6 +1004,10 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id) | |||
1004 | /* validate resources */ | 1004 | /* validate resources */ |
1005 | error = -ENODEV; | 1005 | error = -ENODEV; |
1006 | 1006 | ||
1007 | /* init these to -1, as 0 is valid for both */ | ||
1008 | dev->hw_io = -1; | ||
1009 | dev->irq = -1; | ||
1010 | |||
1007 | if (!pnp_port_valid(pnp_dev, 0) || | 1011 | if (!pnp_port_valid(pnp_dev, 0) || |
1008 | pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE) | 1012 | pnp_port_len(pnp_dev, 0) < ENE_IO_SIZE) |
1009 | goto error; | 1013 | goto error; |
@@ -1072,6 +1076,8 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id) | |||
1072 | rdev->input_name = "ENE eHome Infrared Remote Transceiver"; | 1076 | rdev->input_name = "ENE eHome Infrared Remote Transceiver"; |
1073 | } | 1077 | } |
1074 | 1078 | ||
1079 | dev->rdev = rdev; | ||
1080 | |||
1075 | ene_rx_setup_hw_buffer(dev); | 1081 | ene_rx_setup_hw_buffer(dev); |
1076 | ene_setup_default_settings(dev); | 1082 | ene_setup_default_settings(dev); |
1077 | ene_setup_hw_settings(dev); | 1083 | ene_setup_hw_settings(dev); |
@@ -1083,7 +1089,6 @@ static int ene_probe(struct pnp_dev *pnp_dev, const struct pnp_device_id *id) | |||
1083 | if (error < 0) | 1089 | if (error < 0) |
1084 | goto error; | 1090 | goto error; |
1085 | 1091 | ||
1086 | dev->rdev = rdev; | ||
1087 | ene_notice("driver has been succesfully loaded"); | 1092 | ene_notice("driver has been succesfully loaded"); |
1088 | return 0; | 1093 | return 0; |
1089 | error: | 1094 | error: |