ipw->attr_memory and ipw->common_memory are assigned with the
 return value of ioremap. ioremap may fail, but not checks
are enforced. The fix insertss the checks.

Signed-off-by: Kangjie Lu <k...@umn.edu>
---
 drivers/tty/ipwireless/main.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/tty/ipwireless/main.c b/drivers/tty/ipwireless/main.c
index 3475e841ef5c..4c18bbfe1a92 100644
--- a/drivers/tty/ipwireless/main.c
+++ b/drivers/tty/ipwireless/main.c
@@ -114,6 +114,10 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, 
void *priv_data)
 
        ipw->common_memory = ioremap(p_dev->resource[2]->start,
                                resource_size(p_dev->resource[2]));
+       if (!ipw->common_memory) {
+               ret = -ENOMEM;
+               goto exit1;
+       }
        if (!request_mem_region(p_dev->resource[2]->start,
                                resource_size(p_dev->resource[2]),
                                IPWIRELESS_PCCARD_NAME)) {
@@ -134,6 +138,10 @@ static int ipwireless_probe(struct pcmcia_device *p_dev, 
void *priv_data)
 
        ipw->attr_memory = ioremap(p_dev->resource[3]->start,
                                resource_size(p_dev->resource[3]));
+       if (!ipw->attr_memory) {
+               ret = -ENOMEM;
+               goto exit3;
+       }
        if (!request_mem_region(p_dev->resource[3]->start,
                                resource_size(p_dev->resource[3]),
                                IPWIRELESS_PCCARD_NAME)) {
-- 
2.17.1

Reply via email to