When hpet_alloc() fails, we should iounmap() the timer so we don't leak the mapping. Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx> --- drivers/char/hpet.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c index d132fef..8961985 100644 --- a/drivers/char/hpet.c +++ b/drivers/char/hpet.c @@ -904,7 +904,7 @@ static int hpet_pnp_add(struct pnp_dev *dev, const struct pnp_device_id *dev_id) { struct hpet_data data; struct resource *mem, *irq; - int i; + int i, ret; memset(&data, 0, sizeof(data)); @@ -924,7 +924,11 @@ static int hpet_pnp_add(struct pnp_dev *dev, const struct pnp_device_id *dev_id) data.hd_phys_address = mem->start; data.hd_address = ioremap(mem->start, resource_size(mem)); - return hpet_alloc(&data); + ret = hpet_alloc(&data); + if (ret) + iounmap(data.hd_address); + + return ret; } static void hpet_pnp_remove(struct pnp_dev *dev) -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html