Message ID | 20190311051653.6377-1-kjlu@umn.edu |
---|---|
State | Changes Requested |
Delegated to: | David Miller |
Headers | show |
Series | [v2] net: 8390: fix potential NULL pointer dereferences | expand |
From: Kangjie Lu <kjlu@umn.edu> Date: Mon, 11 Mar 2019 00:16:51 -0500 > In case ioremap fails, the fix returns to avoid NULL pointer > dereferences. > > Signed-off-by: Kangjie Lu <kjlu@umn.edu> > --- > drivers/net/ethernet/8390/pcnet_cs.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/drivers/net/ethernet/8390/pcnet_cs.c b/drivers/net/ethernet/8390/pcnet_cs.c > index 61e43802b9a5..e2b69e214fad 100644 > --- a/drivers/net/ethernet/8390/pcnet_cs.c > +++ b/drivers/net/ethernet/8390/pcnet_cs.c > @@ -289,6 +289,9 @@ static struct hw_info *get_hwinfo(struct pcmcia_device *link) > > virt = ioremap(link->resource[2]->start, > resource_size(link->resource[2])); > + if (unlikely(!virt)) > + return NULL; > + You have to release the pcmcia window if you bail here.
diff --git a/drivers/net/ethernet/8390/pcnet_cs.c b/drivers/net/ethernet/8390/pcnet_cs.c index 61e43802b9a5..e2b69e214fad 100644 --- a/drivers/net/ethernet/8390/pcnet_cs.c +++ b/drivers/net/ethernet/8390/pcnet_cs.c @@ -289,6 +289,9 @@ static struct hw_info *get_hwinfo(struct pcmcia_device *link) virt = ioremap(link->resource[2]->start, resource_size(link->resource[2])); + if (unlikely(!virt)) + return NULL; + for (i = 0; i < NR_INFO; i++) { pcmcia_map_mem_page(link, link->resource[2], hw_info[i].offset & ~(resource_size(link->resource[2])-1)); @@ -1423,6 +1426,11 @@ static int setup_shmem_window(struct pcmcia_device *link, int start_pg, /* Try scribbling on the buffer */ info->base = ioremap(link->resource[3]->start, resource_size(link->resource[3])); + if (unlikely(!info->base)) { + ret = -ENOMEM; + goto failed; + } + for (i = 0; i < (TX_PAGES<<8); i += 2) __raw_writew((i>>1), info->base+offset+i); udelay(100);
In case ioremap fails, the fix returns to avoid NULL pointer dereferences. Signed-off-by: Kangjie Lu <kjlu@umn.edu> --- drivers/net/ethernet/8390/pcnet_cs.c | 8 ++++++++ 1 file changed, 8 insertions(+)