From: Linus Torvalds <torvalds@linux-foundation.org>
Date: Fri, 4 Apr 2008 21:30:31 +0000 (-0700)
Subject: parport_pc: make sure to release IO ports after probing for IT87XX
X-Git-Tag: firefly_0821_release~21746
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=4ed919014eb2b591eb8fdd4dd00226a65faddef4;p=firefly-linux-kernel-4.4.55.git

parport_pc: make sure to release IO ports after probing for IT87XX

Commit f63fd7e299ee13da071ecfce2b90b58c5e1562b1 ("parport_pc: detection
for SuperIO IT87XX POST") only released the IO port region on success,
not when the probe for the IT87XX chip failed.

That caused not only a reserved region to leak, but also caused an oops
when the driver module was unloaded and somebody tried to cat
/proc/ioports - because the string that was assigned to the IO port
region was a static string in the module virtual address area.

Reported-by: Lubos Lunak <l.lunak@suse.cz>
Cc: Jan Kara <jack@suse.cz>
Cc: Petr Cvek <petr.cvek@tul.cz>
Acked-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---

diff --git a/drivers/parport/parport_pc.c b/drivers/parport/parport_pc.c
index d76d37bcb9cc..a85808938205 100644
--- a/drivers/parport/parport_pc.c
+++ b/drivers/parport/parport_pc.c
@@ -1568,9 +1568,8 @@ static void __devinit detect_and_report_it87(void)
 		outb(r | 8, 0x2F);
 		outb(0x02, 0x2E);	/* Lock */
 		outb(0x02, 0x2F);
-
-		release_region(0x2e, 1);
 	}
+	release_region(0x2e, 1);
 }
 #endif /* CONFIG_PARPORT_PC_SUPERIO */