aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/misc/hdpuftrs
diff options
context:
space:
mode:
authorCyrill Gorcunov <gorcunov@gmail.com>2007-10-02 16:30:06 -0400
committerPaul Mackerras <paulus@samba.org>2007-10-02 22:02:44 -0400
commit7472fd36a87e84c2819066543224285a6ab79ffc (patch)
treec3dc2d5f7e00c65a50f47f7e971bf2dffa28557e /drivers/misc/hdpuftrs
parentd2ceb47a7cbcc50b45832c6b24c47515838d169a (diff)
[POWERPC] Sky Cpu and Nexus: check for platform_get_resource retcode
Add adds checking for platform_get_resource() return code to prevent possible NULL pointer usage. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Kumar Gala <galak@gate.crashing.org> Cc: Brian Waite <waite@skycomputers.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'drivers/misc/hdpuftrs')
-rw-r--r--drivers/misc/hdpuftrs/hdpu_cpustate.c5
-rw-r--r--drivers/misc/hdpuftrs/hdpu_nexus.c7
2 files changed, 11 insertions, 1 deletions
diff --git a/drivers/misc/hdpuftrs/hdpu_cpustate.c b/drivers/misc/hdpuftrs/hdpu_cpustate.c
index b5c6f21dcb69..b16742c7c69d 100644
--- a/drivers/misc/hdpuftrs/hdpu_cpustate.c
+++ b/drivers/misc/hdpuftrs/hdpu_cpustate.c
@@ -194,6 +194,11 @@ static int hdpu_cpustate_probe(struct platform_device *pdev)
194 int ret; 194 int ret;
195 195
196 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 196 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
197 if (!res) {
198 printk(KERN_ERR "sky_cpustate: "
199 "Invalid memory resource.\n");
200 return -EINVAL;
201 }
197 cpustate.set_addr = (unsigned long *)res->start; 202 cpustate.set_addr = (unsigned long *)res->start;
198 cpustate.clr_addr = (unsigned long *)res->end - 1; 203 cpustate.clr_addr = (unsigned long *)res->end - 1;
199 204
diff --git a/drivers/misc/hdpuftrs/hdpu_nexus.c b/drivers/misc/hdpuftrs/hdpu_nexus.c
index fda9998f45ca..01bc9179603b 100644
--- a/drivers/misc/hdpuftrs/hdpu_nexus.c
+++ b/drivers/misc/hdpuftrs/hdpu_nexus.c
@@ -62,6 +62,11 @@ static int hdpu_nexus_probe(struct platform_device *pdev)
62 int *nexus_id_addr; 62 int *nexus_id_addr;
63 63
64 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 64 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
65 if (!res) {
66 printk(KERN_ERR "sky_nexus: "
67 "Invalid memory resource.\n");
68 return -EINVAL;
69 }
65 nexus_id_addr = ioremap(res->start, 70 nexus_id_addr = ioremap(res->start,
66 (unsigned long)(res->end - res->start)); 71 (unsigned long)(res->end - res->start));
67 if (nexus_id_addr) { 72 if (nexus_id_addr) {
@@ -69,7 +74,7 @@ static int hdpu_nexus_probe(struct platform_device *pdev)
69 chassis_id = *nexus_id_addr & 0xff; 74 chassis_id = *nexus_id_addr & 0xff;
70 iounmap(nexus_id_addr); 75 iounmap(nexus_id_addr);
71 } else { 76 } else {
72 printk(KERN_ERR "Could not map slot id\n"); 77 printk(KERN_ERR "sky_nexus: Could not map slot id\n");
73 } 78 }
74 79
75 hdpu_slot_id = create_proc_entry("sky_slot_id", 0666, &proc_root); 80 hdpu_slot_id = create_proc_entry("sky_slot_id", 0666, &proc_root);